Notice
Recent Posts
Recent Comments
Link
IgnatiusHeo
구현단계 보안약점 제거 기준-오류상황 대응 부재 본문
작성일: 230706
※ 본 게시글은 학습 목적으로 행정안전부·KISA의 소프트웨어 보안약점 진단 가이드, 소프트웨어 개발보안 가이드를 참고하여 작성하였습니다.
정리 내용: 소프트웨어 보안약점 진단 가이드(425~428p)
구분 | - 에러처리 |
설계단계 | |
개요 | 오류가 발생할 수 있는 부분을 확인하였으나, 이러한 오류에 대하여 예외 처리를 하지 않을 경우, 공 격자는 오류 상황을 악용하여 개발자가 의도하지 않은 방향으로 프로그램이 동작하도록 할 수 있다. |
진단 세부사항 (설계단계) |
|
보안대책 (구현단계) |
오류가 발생할 수 있는 부분에 대하여 제어문을 사용하여 적절하게 예외 처리(C/C++에서 if와 switch, Java에서 try-catch 등)를 한다. |
진단방법 (구현단계) |
오류가 발생할 수 있는 부분에 대하여 예외처리를 수행했는지 확인하고 제어문으로 예외 처리하는 루틴 이 비어있는지 확인한다. |
다. 코드예제
ㅇ 분석
1: protected Element createContent(WebSession s) {
2: ……
3: try {
4: username = s.getParser().getRawParameter(USERNAME);
5: password = s.getParser().getRawParameter(PASSWORD);
6: if (!"webgoat".equals(username) || !password.equals("webgoat")) {
7: s.setMessage("Invalid username and password entered.");
8: return (makeLogin(s));
9: }
10: } catch (NullPointerException e) {
//요청 파라미터에 PASSWORD가 존재하지 않을 경우 Null Pointer Exception이 발생하고 해당
오류에 대한 대응이 존재하지 않아 인증이 된 것으로 처리
11: }
ㅇ 내용
1. 널포인터 익셉션에 대한 내용이 빠져서 저기에 뭐 추가하면 될듯
ㅇ 수정
1: protected Element createContent(WebSession s) {
2: ……
3: try {
4: username = s.getParser().getRawParameter(USERNAME);
5: password = s.getParser().getRawParameter(PASSWORD);
6: if (!"webgoat".equals(username) || !password.equals("webgoat")) {
7: s.setMessage("Invalid username and password entered.");
8: return (makeLogin(s));
9: }
10: } catch (NullPointerException e) {
//예외 사항에 대해 적절한 조치를 수행하여야 한다.
11: s.setMessage(e.getMessage());
12: return (makeLogin(s));
13: }
ㅇ 내용
1. 널포인터 익셉션 메세지 보내도록 함. 근데 그냥 저 메세지도 에러코드로 분류해서 보내면 안되나?
ㅇ 분석
1: try {
2: InvokeMtd();
3: } catch (CustomException e) {
4: //예외 상황에 대한 대응 부재
5: }
ㅇ 수정
1: try {
2: InvokeMtd();
3: } catch (CustomException e) {
//예외 상황에 대해 적절한 조치를 수행하여야 한다.
4: logger.Debug(“log message”);
5: }
ㅇ 내용
끝.
'자격 > SW보안약점진단원' 카테고리의 다른 글
구현단계 보안약점 제거 기준-Null Pointer 역참조 (0) | 2023.07.06 |
---|---|
구현단계 보안약점 제거 기준-부적절한 예외 처리 (0) | 2023.07.06 |
구현단계 보안약점 제거 기준-오류 메시지 정보노출 (0) | 2023.07.06 |
구현단계 보안약점 제거 기준-종료되지 않는 반복문 또는 재귀 함수 (0) | 2023.07.06 |
구현단계 보안약점 제거 기준-경쟁조건: 검사 시점과 사용 시점(TOCTOU) (0) | 2023.07.06 |