반응형
https://www.kisa.or.kr/public/laws/laws3.jsp
분석∙설계단계 SW 보안강화 - 설계보안항목 정의 및 설계 시 고려 사항 - 예외처리
설명
- 오류메시지에 중요정보(개인정보, 시스템 정보, 민감 정보 등)가 포함되어 출력되거나, 에러 및 오류가 부적절하게 처리되어 의도치 않은 상황이 발생하는 것을 막기 위한 안전한 방안을 설계한다.
설계항목내용
- 명시적인 예외의 경우 예외처리 블록을 이용하여 예외 발생 시 수행해야 하는 기능이 구현되도록 해야 한다.
- 런타임 예외의 경우 입력값의 범위를 체크하여 애플리케이션이 정상적으로 동작할 수 있는 값만 사용되도록 보장해야 한다.
- 에러가 발생한 경우 상세한 에러 정보가 사용자에게 노출되지 않게 해야 한다
가. 취약점 개요
사례 1: 오류 메시지를 통한 정보 노출
- 웹 서버에 별도의 에러 페이지를 설정하지 않은 경우, 에러 메시지를 통해 서버 데이터 정보 등 공격에 필요한 정보가 노출되는 취약점이다.
사례 2: 시스템 정보 노출
- 시스템, 관리자, DB정보 등 시스템의 내부 데이터가 공개되면, 공격자에게 또 다른 공격의 빌미를 제공하게 된다.
나. 설계 시 고려사항
1. 명시적인 예외의 경우 예외처리 블록을 이용하여 예외 발생 시 수행해야 하는 기능이 구현되도록 해야 한다.
- 각 프로그래밍 언어별 예외처리 문법에 대한 안전한 사용방법을 기술하고, 모든 개발자가 구현 단계에서 안전하게 예외처리를 할 수 있도록 시큐어코딩 규칙을 정의한다.
2. 런타임 예외의 경우 입력값의 범위를 체크하여 애플리케이션이 정상적으로 동작할 수 있는 값만 사용되도록 보장해야 한다.
- 입력값에 따라 예외가 발생 가능한 경우 입력값의 범위를 체크하여 사용하도록 시큐어코딩 규칙을 정의한다
3. 에러가 발생한 경우 상세한 에러 정보가 사용자에게 노출되지 않게 해야 한다.
(ㄱ) 에러가 발생한 경우 지정된 페이지를 통해 사용자에게 에러 공지.
- 에러가 발생한 경우 프로그램 내에서 지정된 에러 페이지로 리다이렉트 되도록 개발 가이드 구현 단계를 작성하거나, 웹 애플리케이션 서버 설정을 통해 특정 에러나 예외사항에 대해 지정된 페이지가 사용자에게 보일 수 있도록 설계한다.
(ㄴ) 사용자에게 보내지는 오류 메시지에 중요정보가 포함되지 않도록 함
- 오류 메시지에 중요정보(개인정보, 시스템 정보, 민감정보 등)가 포함되지 않도록 시큐어코딩 규칙을 정의한다.
더보기
[참고] 위 사례의 오류 페이지에서는 스택추적(StackTrace) 정보가 포함되어 있다. 서버에 오류 또는 예외가 발생한 경우 위와 같이 예외 이름이나 스택 추적정보를 출력하도록 되어있다면 공격자가 프로 그램 내부구조를 쉽게 파악할 수 있기 때문에 공격자의 악성 행위를 도울 수 있다는 위협이 발생한다.
참고자료
- CWE‐209 Information Exposure Through an Error Message, MITRE,
http://cwe.mitre.org/data/definitions/209.html - CWE‐390 Detection of Error Condition Without Action, MITRE,
http://cwe.mitre.org/data/definitions/390.html - CWE‐754 Improper Check for Unusual or Exceptional Conditions, MITRE
http://cwe.mitre.org/data/definitions/754.html - Error Handling, Auditing and Logging, OWASP,
http://www.owasp.org/index.php/Error_Handling,_Auditing_and_Logging - Improper Error Handling, OWASP,
http://www.owasp.org/index.php/Improper_Error_Handling - "Best practices with custom error pages in .Net", Micro Support,
http://support.microsoft.com/default.aspx?scid=kb;en-us;834452 - WASC Fingerprinting, WASC,
http://projects.webappsec.org/w/page/13246925/Fingerprinting - WASC Information Leakage, WASC,
http://projects.webappsec.org/w/page/13246936/Information%20Leakage
반응형
'공부 > KISA' 카테고리의 다른 글
SQL 삽입 - KISA 소프트웨어 개발 보안 가이드 (0) | 2020.07.17 |
---|---|
세션통제 - KISA 소프트웨어 개발 보안 가이드 (0) | 2020.07.17 |
중요정보 전송 - KISA 소프트웨어 개발 보안 가이드 (0) | 2020.07.17 |
중요정보 저장 - KISA 소프트웨어 개발 보안 가이드 (0) | 2020.07.17 |
암호연산 - KISA 소프트웨어 개발 보안 가이드 (0) | 2020.07.16 |
댓글