반응형
https://www.kisa.or.kr/public/laws/laws3.jsp
구현 단계 시큐어코딩 가이드 - 입력 데이터 검증 및 표현 - 보안 기능 결정에 사용되는 부적절한 입력값
가. 개요
- 응용프로그램이 외부 입력값에 대한 신뢰를 전제로 보호메커니즘을 사용하는 경우 공격자가 입력값을 조작할 수 있다면 보호 메커니즘을 우회할 수 있게 된다.
- 개발자들이 흔히 쿠키, 환경변수 또는 히든필드와 같은 입력값이 조작될 수 없다고 가정 하지만 공격자는 다양한 방법을 통해 이러한 입력값들을 변경할 수 있고 조작된 내용은 탐지되지 않을 수 있다. 인증이나 인가와 같은 보안 결정이 이런 입력값(쿠키, 환경변수, 히든 필드 등)에 기반해 수행되는 경우 공격자는 이런 입력값을 조작하여 응용프로그램의 보안을 우회할 수 있으므로 충분한 암호 화, 무결성 체크를 수행하고 이와 같은 메커니즘이 없는 경우엔 외부 사용자에 의한 입력값을 신뢰해서는 안된다.
나. 보안대책
- 상태정보나 민감한 데이터 특히 사용자 세션정보와 같은 중요한 정보는 서버에 저장하고 보안 확인 절차도 서버에서 실행한다. 보안설계 관점에서 신뢰할 수 없는 입력값이 응용프로그램 내부로 들어올 수 있는 지점과 보안 결정에 사용되는 입력값을 식별하고 제공되는 입력값에 의존할 필요가 없는 구조로 변경할 수 있는지 검토한다.
다. 코드예제
JAVA
더보기
구입품목의 가격을 사용자 웹브라우저에서 처리하고 있어 이 값이 사용자에 의해 변경되는 경우 가격 (단가) 정보가 의도하지 않은 값으로 할당될 수 있다.
사용자 권한, 인증 여부 등 보안 결정에 사용하는 값은 사용자 입력값을 사용하지 않고 서버 내부의 값을 활용한다. 또한 사용자 입력에 의존해야 하는 값을 제외하고는 반드시 서버가 보유하고 있는 정보를 이용하여 처리한다.
C#
더보기
평문으로 사용자의 인증정보를 쿠키에 저장하고 있는 C# 예제 코드이다.
중요한 정보를 쿠키에 저장 시에는 암호화해서 사용하고, 되도록이면 해당 정보는 서버의 세션에 저장하도록 한다.
C
더보기
아래 C 코드는 외부에서 가져온 서버 정보를 기반으로 연결을 진행한다. 사용자가 환경변수를 조작하면 의도하지 않은 곳으로 연결을 진행할 수 있다. 예를 들어 온라인으로 제품 라이선스를 검증하는 경우, 인증 서버의 주소를 사용자가 변경하여 임의로 라이선스 검증을 통과할 수 있다.
인증 서버의 정보를 환경 변수가 아닌 고정된 정보를 이용하여 연결을 진행한다.
- 참고자료
- CWE-807 Reliance on Untrusted Inputs in a Security Decision, MITRE,
http://cwe.mitre.org/data/definitions/807.html - Do not trust the values of environment variables, CERT,
http://www.securecoding.cert.org/confluence/display/java/ENV02-J.+Do+not+trust+the+values+of+environment+variables - Session Management, OWASP
https://www.owasp.org/index.php/Session_Management_Cheat_Sheet
반응형
'공부 > KISA' 카테고리의 다른 글
포맷 스트링 삽입 - KISA 소프트웨어 개발 보안 가이드 (0) | 2020.07.20 |
---|---|
메모리 버퍼 오버플로우 - KISA 소프트웨어 개발 보안 가이드 (0) | 2020.07.20 |
정수형 오버플로우 - KISA 소프트웨어 개발 보안 가이드 (0) | 2020.07.20 |
HTTP 응답분할 - KISA 소프트웨어 개발 보안 가이드 (1) | 2020.07.20 |
크로스사이트 요청 위조 - KISA 소프트웨어 개발 보안 가이드 (0) | 2020.07.20 |
댓글