0. 개요
예외 발생 시 예외 이름이나 스택 트레이스를 출력하는 경우, 프로그램 내부구조를 쉽게 파악할 수 있기 때문에
응용프로그램이 실행환경, 사용자 등 관련 데이터에 대한
민감한 정보를 포함하는 오류 메시지를 생성하여 외부에 제공하는 경우, 공격자의 악성 행위를 도울 수 있다.
1. 보안 대책
- 오류 메시지는 정해진 사용자에게 유용한 최소한의 정보만 포함하도록 한다.
- 소스코드에서 예외 상황은 내부적으로 처리하고 민감한 정보를 포함하는 오류를 사용자에게 출력하지 않도록
미리 정의된 메시지를 제공하도록 설정한다.
- printStackTrace() 메서드를 사용하지 않도록 로직 구현
2. 진단 방법
- 오류 메시지를 출력하는지 확인
- 오류메시지에 시스템 환경 / 유저 정보 / 데이터 등의 민감한 정보가 포함되어 있는지 확인
3. 코드 예시
# 1 - 오류 메세지를 통한 정보 노출 - 안전하지 않은 코드 예시(JAVA)
오류메시지에 예외 이름이나 오류추적 정보를 출력하여 프로그램 내부 정보가 유출된다.
>> 예외 이름이나 오류추적 정보를 출력하지 않도록 하자.
# 1 + 오류 메세지를 통한 정보 노출 - 안전한 코드 예시(JAVA)
* e.printStackTrace() : 리턴값이 없으며 이 메소드를 호출하면 메소드가 내부적으로 예외 결과를 화면에 출력한다.
e.printStackTrace()는 가장 자세한 예외 정보를 제공한다.
4. 해당 취약점 CASE
- 오류메시지를 통해 환경, 사용자, 관련 데이터 등의 내부정보가 유출될 경우 (ex: printStackTrace(), ... )
#. 참고 블로그
https://prokyhsigma.tistory.com/71?category=848515
'about Security > SECURE CODING' 카테고리의 다른 글
[보안기능] 주석문 안에 포함된 시스템 주요 정보 (5등급) (0) | 2021.08.10 |
---|---|
[캡슐화] 잘못된 세션에 의한 데이터 정보 노출 (5등급) (0) | 2021.08.10 |
[시간 및 상태] 종료되지 않는 반복문 또는 재귀 함수 (5등급) (0) | 2021.08.10 |
[코드오류] NULL Pointer 역참조 (5등급) (0) | 2021.08.10 |
[에러 처리] 오류 상황 대응 부재 (4등급) (0) | 2021.08.07 |
댓글