시큐어코딩
- home
- 보안소식
- 시큐어코딩
13. [입력 데이터 검증 및 표현] 보안기능 결정에 사용되는 부적절한 입력 값
2019.04.30 09:47
안녕하세요, 지에스인포입니다.
이번에는 행자부 개발보안 가이드라인 47개 항목 중 입력 데이터 검증 및 표현의 13번째 항목인 '보안기능 결정에 사용되는 부적절한 입력 값'에 대해 알아보겠습니다.
보안기능 결정에 사용되는 부적절한 입력 값은 행정자치부에서 발표한 '소프트웨어 개발보안 가이드'에 속해있는 주요 항목입니다. 분석, 설계 단계의 보안 요구항목에서는 '입력 데이터 검증 및 표현'의 '보안기능 동작에 사용되는 입력 값 검증'이라는 항목으로, 구현 단계 보안약점에서는 '입력 데이터 검증 및 표현'의 '보안기능 결정에 사용하는 부적절한 입력 값'이라는 항목으로 명시가 되어있습니다.
#보안기능 결정에 사용되는 부적절한 입력 값이란?
보안기능 결정에 사용되는 부적절한 입력 값이란 응용프로그램이 외부입력값에 대한 신뢰를 전제로 보호메커니즘을 사용하는 경우 공격자가 입력 값을 조작할 수 있게되었을 때 보호메커니즘을 우회할 수 있게 되는 공격입니다.
쿠키, 환경변수, 히든필드등의 입력 값을 이용해 인증이나 인가와 같은 보안기능을 결정하고 있다면, 공격자는 다양한 방법을 통해 이러한 입력 값을 변경할 수 있고, 조작된 내용은 탐지되지 않을 수 있으므로 충분한 암호화, 무결성 체크를 수행하고 그렇지 않을 경우에는 외부 사용자에 의한 입력 값을 신뢰해서는 안됩니다.
예를들어 살펴보겠습니다.
위 소스 코드는 HDTV 구매시 총액 계산을 hidden 값으로 입력된 가격을 이용하는 경우의 JAVA 소스 코드입니다. hidden 값은 눈에 보이는 값이 아니어서 흔히 페이지 이동 간의 파라미터를 전달하는데 주로 쓰이는데, 사실 웹 프록시를 이용해 쉽게 변조가 가능합니다. 공격자가 웹 프록시 도구를 사용해서 price의 값을 변조하고, 계산하는 과정에서 총액에 대한 검증 로직이 존재하지 않는다면 판매자가 의도한 가격이 아닌 변조된 가격으로 총액이 계산될 수 있습니다.
따라서, 사용자 입력에 의존해야하는 값을 제외하고는 반드시 서버가 보유하고 있는 정보를 이용하여 처리해야하며 사용자 권한, 인증 여부 등 보안결정에 사용하는 값은 서버 내부의 값을 활용해야 합니다.
#보안기능 결정에 사용되는 부적절한 입력 값을 막기 위한 보안 대책은?
보안기능 결정에 사용되는 부적절한 입력 값을 방어하기 위한 대책은 소프트웨어 개발 생명 주기에 따라 크게 두 가지로 나눌 수 있습니다.
소프트웨어 개발보안 가이드에서 제시하는 "보안기능 결정에 사용되는 부적절한 입력 값"에 대한 보안대책은 위와 같으며, 각각의 상황에 맞게 적절히 시큐어코딩을 적용하기를 권장하고 있습니다.
오늘은 "보안기능 결정에 사용되는 부적절한 입력 값"에 대해 살펴봤습니다.
다음은 시큐어코딩 14번째 항목, "메모리 버퍼 오버플로우"에 대해 알아보도록 하겠습니다.
댓글 0
본사주소 : 서울특별시 금천구 가산디지털1로 181, 가산더블유센터 1508호 COPYRIGHT ⓒ ALL RIGHT RESERVED.