반응형
https://www.kisa.or.kr/public/laws/laws3.jsp
구현 단계 시큐어코딩 가이드 - 캡슐화 - 제거되지 않고 남은 디버그 코드
가. 개요
- 디버깅 목적으로 삽입된 코드는 개발이 완료되면 제거해야 한다. 디버그 코드는 설정 등의 민감한 정보를 담거나 시스템을 제어하게 허용하는 부분을 담고 있을 수 있다. 만일, 남겨진 채로 배포될 경우, 공격자가 식별 과정을 우회하거나 의도하지 않은 정보와 제어 정보가 노출될 수 있다.
나. 보안대책
- 소프트웨어 배포 전, 반드시 디버그 코드를 확인 및 삭제한다.
- 일반적으로 Java 개발자의 경우 웹 응용프로그램을 제작할 때 디버그 용도의 코드를 main()에 개발한 후 이를 삭제하지 않는 경우가 많다. 디버깅이 끝나면 main() 메소드를 삭제해야 한다.
다. 코드예제
JAVA
더보기
다음의 예제는 main() 메소드 내에 화면에 출력하는 디버깅 코드를 포함하고 있다. J2EE의 경우 main() 메소드 사용이 필요 없으며, 개발자들이 콘솔 응용프로그램으로 화면에 디버깅 코드를 사용하는 경우가 일반적이다.
이에 따라 J2EE와 같은 응용프로그램에서 main() 메소드는 삭제한다. J2EE의 main() 메소드의 경우 디버깅 코드인 경우가 일반적이다.
C#
더보기
디버그용 코드가 남아있는 C# 코드의 예제이다.
디버그용 코드를 삭제하여야 한다.
C
더보기
아래는 디버그용 코드가 남아있는 C 코드의 예제이다. 공격자가 출력되는 콜 스택을 통해서 프로그램 구조를 유추할 수 있다.
릴리즈 시에는 디버그용 코드를 삭제 하여야 한다.
참고자료
- CWE-489 Leftover Debug Code, MITRE,
http://cwe.mitre.org/data/definitions/489.html - Production code must not contain debugging entry points, CERT,
http://www.securecoding.cert.org/confluence/display/java/ENV06-J.+Productioncode+must+not+contain+debugging+entry+points
반응형
'공부 > KISA' 카테고리의 다른 글
Public 메소드부터 반환된 Private 배열 - KISA 소프트웨어 개발 보안 가이드 (1) | 2020.07.22 |
---|---|
시스템 데이터 정보노출 - KISA 소프트웨어 개발 보안 가이드 (0) | 2020.07.22 |
잘못된 세션에 의한 데이터 정보노출 - KISA 소프트웨어 개발 보안 가이드 (0) | 2020.07.22 |
초기화되지 않은 변수 사용 - KISA 소프트웨어 개발 보안 가이드 (0) | 2020.07.22 |
해제된 자원 사용 - KISA 소프트웨어 개발 보안 가이드 (0) | 2020.07.22 |
댓글