오류메시지에 중요정보(개인정보, 시스템 정보, 민감 정보 등)가 노출되거나, 부적절한 에러 및 오류처리로 인하여 의도치 않은 상황이 발생하지 않도록 설계
(에러처리) 오류 메시지 정보노출
인터넷침해대응센터는 10일 OO 오류 발생 시 생성되는 오류 보고 메시지에는 사용자의 하드웨어 및 운영체제 정보 등의 사용자 정보가 포함되어 있다고 밝혔다.
OO 오류 보고는 시스템 충돌 발생 시 자동으로 생성되며, 사용자 동의하에 인터넷으로 해당 보고서를 OO 서버로 전송할 수 있도록 구성된다. 보고서 내용에는 PC 모델명, PC ID, OS 버전, 문제를 유발시킨 프로그램명 등이 있다.
스택추적(StackTrace) 정보가 포함되어 있다. 서버에 오류 또는 예외가 발생한 경우 위와 같이 예외이름이나 스택추적정보를 출력하도록 되어있다면 공격자가 프로그램 내부구조를 쉽게 파악
① 명시적인 예외의 경우 예외처리 블럭을 이용하여 예외발생 시 수행해야 하는 기능 구현
② 런타임 예외의 경우 입력 값의 범위를 체크하여 애플리케이션이 정상적으로 동작할 수 있는 값만 사용되도록 보장
③ 에러가 발생한 경우 상세한 에러 정보가 사용자에게 노출 제한
① 각 프로그래밍 언어별 예외처리 문법에 대한 안전한 사용방법을 기술하고, 모든 개발자가 구현단계에서 안전하게 예외처리
자바 플랫폼 이용시 프로그램에서 발생된 에러 정보를 로깅하는 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>
(ㄴ) 사용자에게 보내지는 오류메시지에 중요정보가 포함되지 않도록 함
오류메시지에 중요정보(개인정보, 시스템정보, 민감정보 등)가 포함되지 않도록 제한
웹 서버에 별도의 에러페이지를 설정하지 않은 경우, 에러메시지로 서버 데이터 정보 등 공격에 필요한 정보가 노출되는 취약점
시스템, 관리자, DB정보 등 시스템의 내부 데이터가 공개되면, 공격자에게 또 다른 공격의 빌미 제공