소프트웨어 개발 보안 구축
SW개발 보안 설계
에러처리의 개념
- 소프트웨어 실행 중에 발생할 수 있는 오류(Error)들을 사전에 정의하여 오류로 인해 발생할 수 있는 문제들을 예방하기 위한 보안 점검 항목
- 각 프로그래밍 언어의 예외처리 구문을 통해 오류에 대한 사항을 정의
- 예외처리 구문으로 처리하지 못한 오류들은 중요정보를 노출시키거나, 소프트웨어의 싫애이 중단되는 등의 문제를 발생
- 보안 약점의 종류
- 오류 메시지를 통한 정보 노출
- 오류 상황 대응 부재
- 부적절한 예외처리 발생
오류 메시지를 통한 정보노출
- 오류 발생으로 실행환경, 사용자 정보, 디버깅 정보 등의 중요 정보를 소프트웨어가 메시지로 외부에 노출하는 보안 약점
- 오류 메시지를 통해 노출되는 경로 및 디버깅 정보는 해커의 악의적인 행위를 도움
- 예외처리 구문에 예외의 이름이나 스택트레이스를 출력하도록 코딩시 해커는 소프트웨어의 내부구조를 쉽게 파악 가능
- 스택트레이스
- 오류가 발생한 위치를 추적하기 위해 소프트웨어가 실행 중에 호출한 메소드의 리스트를 기록한 것
- 스택트레이스
- 오류 발생 시 가능한 내부에서만 처리되도록 하거나 메시지를 출력할 경우 최소한의 정보만 출력되도록 함으로써 방지
오류 상황에 대한 대응 부재
- 소프트웨어 개발 중 예외처리를 하지 않았거나 미비로 인해 발생하는 보안 약점
- 오류가 발생할 수 있는 부분에 예외처리 구문을 작성하고 제어문을 활용하여 오류가 악용되지 않도록 코딩함으로써 방지
부적절한 예외처리
- 함수의 반환 값 또는 오류들을 세분화하여 처리하지 않고 광범위하게 묶어 한 번에 처리가 존재할 때 발생하는 보안 약점
- 함수 등이 예상했던 결과와 다른 값을 반환하여 예외로 처리되지 않은 경우 잘못된 값으로 인해 다양한 문제가 발생 가능
- 모든 함수의 반환 값이 의도대로 출력되는지 확인하고, 세분화된 예외처리를 수행함으로써 방지