분석 및 설계 단계 보안 요구항목과 구현 단계 47개 보안약점 기준 - 소프
트웨어 개발보안 가이드 (행정자치부 / 한국인터넷진흥원)
# 제거되지 않고 남은 디버그 코드 : 디버그 코드를 제거하지 않고 배포할 경우, 의도하지 않은 정보가 노출 될 수 있는 취약점
디버깅 목적으로 삽입된 코드는 개발이 완료되면 제거해야 합니다. 디버그 코드는 설정 등의 민감한 정보를 담거나 시스템을 제어하게 허용하는 부분을 담고 있을 수 있습니다. 만일, 남겨진 채로 배포될 경우, 공격자가 식별 과정을 우회하거나 의도하지 않은 정보와 제어 정보가 노출될 수 있습니다.
따라서 소프트웨어를 배포 하기 전, 반드시 디버그 코드를 확인 및 삭제하여야 합니다. 일반적으로 Java 개발자의 경우 웹 응용 프로그램을 제작할 때 디버그용도의 코드를 main()에 개발한 후 이를 삭제하지않는 경우가 종종 있는데 디버깅이 끝나면 main() 메서드를 삭제해야 합니다.
소스코드 예제와 함께 보시겠습니다.
'제거되지 않고 남은 디버그 코드' 항목의 위험한 예 (JAVA)
- 소프트웨어 개발보안 가이드 (행정안전부 / 한국인터넷진흥원)
위 소스코드에서는 main() 메서드 내의 화면에 출력하는 디버깅 코드를 포함하고 있는데요. J2EE의 경우 main() 메서드 사용이 필요 없으며, 개발자들이 콘솔 응용프로그램으로 화면에 디버깅코드를 사용하는 경우가 일반적입니다.
'제거되지 않고 남은 디버그 코드' 항목의 안전한 예 (JAVA)
- 소프트웨어 개발보안 가이드 (행정안전부 / 한국인터넷진흥원)
따라서 위와같이 J2EE와 같은 응용프로그램에서 main() 메소드는 삭제하는 것이 안전하겠습니다.
오늘은 제거되지 않고 남은 디버그 코드에 대해 알아보았는데요. 다음 시간에는 행자부 개발보안 가이드라인 47개 항목 중 캡슐화의 3번째 항목인 '시스템 데이터 정보 노출'에 대해 알아보도록 하겠습니다
감사합니다.