본문 바로가기
Cert/소프트웨어(SW) 보안약점 진단원

설계단계 보안설계 기준 - 예외처리

by 브루노W 2024. 8. 26.
유형 에러처리
설계항목 예외처리
설명 오류메시지에 중요정보(개인정보, 시스템 정보, 민감 정보 등)가 노출되거나, 부적절한 에러 및 오류처리로 인하여 의도치 않은 상황이 발생하지 않도록 설계한다.
보안대책 ① 명시적인 예외의 경우 예외처리 블록을 이용하여 예외 발생 시 수행해야 하는 기능이 구현되도록 해야 한다.
② 런타임 예외의 경우 입력값의 범위를 체크하여 애플리케이션이 정상적으로 동작할 수 있는 값만 사용되도록 보장해야 한다.
③ 에러가 발생한 경우 상세한 에러 정보가 사용자에게 노출되지 않게 해야 한다.
연관된 구현단계 기준 오류 메시지 정보노출

 

취약점 개요

 

사례1 : 오류 메시지 정보노출

웹 서버에 별도의 에러페이지를 설정하지 않은 경우 에러 메시지로 서버 데이터 정보 등 공격에 필요한 정보가 노출되는 취약점이다.

 

 

사례2 : 시스템 정보노출

시스템, 관리자, DB정보 등 시스템의 내부 데이터가 공개되면, 공격자에게 또 다른 공격의 빌미를 제공하게 된다.

 

 

 

설계 시 고려사항

 

① 명시적인 예외의 경우 예외처리 블록을 이용하여 예외 발생 시 수행해야 하는 기능이 구현되도록 해야 한다.

각 프로그래밍 언어별 예외처리 문법에 대한 안전한 사용방법을 기술하여 시큐어코딩 규칙을 정의한다.

 

[예시] 자바 플랫폼 사용 시

프로그램에서 발생된 에러 정보를 로깅하는 Logger API를 활용할 수 있도록 시큐어코딩 규칙을 정의한다.


② 런타임 예외의 경우 입력값의 범위를 체크하여 애플리케이션이 정상적으로 동작할 수 있는 값만 사용되도록 보장해야 한다.

입력값에 따라 예외가 발생 가능한 경우 입력 값의 범위를 체크하여 사용하도록 시큐어코딩 규칙을 정의한다.


③ 에러가 발생한 경우 상세한 에러 정보가 사용자에게 노출되지 않게 해야 한다.

(ㄱ) 에러가 발생한 경우 지정된 페이지로 사용자에게 에러 공지

에러가 발생한 경우 프로그램 내에서 지정된 에러페이지로 리다이렉트되도록 시큐어코딩 규칙을 정의하거나, 웹 애플리케이션 서버 설정하여 특정 에러나 예외사항에 대해 지정된 페이지가 사용자에게 보일 수 있도록 설계한다.

 

[예시] web.xml 파일을 이용하여 에러 시 지정된 페이지 응답

<!‐‐ error 페이지 ‐‐>
<error‐page>
	<error‐code>404</error‐code>
	<location>/WEB‐INF/jsp/common/error/404error.jsp</location>
</error‐page>
<error‐page>
	<error‐code>500</error‐code>
	<location>/WEB‐INF/jsp/common/error/500error.jsp</location>
</error‐page>
<error‐page>
	<exception‐type>java.lang.Throwable</exception‐type>
	<location>/WEB‐INF/jsp/common/error/error.jsp</location>
</error‐page>

 

(ㄴ) 사용자에게 보내지는 오류 메시지에 중요정보가 포함되지 않도록 함

오류 메시지에 중요정보(개인정보, 시스템정보, 민감정보 등)가 포함되지 않도록 시큐어코딩 규칙을 정의한다.

 

 

 

진단 세부사항

 

요구사항 ① 명시적인 예외의 경우 예외처리 블록을 이용하여 예외 발생 시 수행해야 하는 기능이 구현되도록 해야 한다.

- 예외 발생을 예방하기 위해 입력값을 검증하고 예외 발생 시 예외처리 블록을 이용하여 수행되어야 할 기능이 구현되도록 설계되어 있는지 확인

- 프로그램 작성 시 명시적인 Exception 상황을 안전하게 처리하도록 설계되어 있는지 확인

- 안전한 예외처리를 점검하는 테스트 계획이 수립되어 있는지 확인

 

요구사항 ② 런타임 예외의 경우 입력값의 범위를 체크하여 애플리케이션이 정상적으로 동작할 수 있는 값만 사용되도록 보장해야 한다.

- 예외 발생을 예방하기 위해 입력값을 검증하고 예외 발생 시 예외처리 블록을 이용하여 수행되어야 할 기능이 구현되도록 설계되어 있는지 확인

- 프로그램 실행 시 발생되는 Runtime Exception이 안전하게 처리되도록 설계되어 있는지 확인

- 안전한 예외처리를 점검하는 테스트 계획이 수립되어 있는지 확인

 

요구사항 ③ 에러가 발생한 경우 상세한 에러 정보가 사용자에게 노출되지 않게 해야 한다.

- Exception 발생 시 상세한 에러정보 또는 중요정보가 사용자에게 노출되지 않도록 설계되어 있는지 확인

- 에러로 상세정보가 노출되는지 점검한느 테스트 계획이 수립되어 있는지 확인