소프트웨어 보안약점 진단가이드
2021.11 개정안 기준으로 작성
- 이후 내용이 수정될 수 있습니다.
[항목]
- 디렉토리 서비스 조회 및 결과 검증
[유형]
- 입력데이터 검증 및 표현
[기준]
- 디렉토리 서비스(LDAP 등)를 조회할 때
입력값과 그 조회결과에 대한 유효성 검증방법 설계 및
유효하지 않은 값에 대한 처리방법을 설계한다.
[보안 대책]
- LDAP 인증서버로 인증을 구현하는 경우
인증요청을 위해 사용되는 외부입력값은
LDAP 삽입 취약점을 가지지 않도록 필터링해서 사용해야 한다.
[구현단계 관련 보안약점]
- 입력 데이터 검증 및 표현 > LDAP 삽입
취약점 개요: LDAP 삽입
외부입력값이
LDAP 조회를 수행하기 위한 필터 생성에 사용되는 경우
필터규칙을 변경할 수 있는 입력값에 대한 검증 작업을 수행하지 않게 되면
공격자가 의도하는 LDAP 조회가 수행될 수 있는 취약점이다.
설계 시 고려사항(보안 대책)
보안 대책의 세부 내용 입니다.
1. LDAP 인증서버로 인증을 구현하는 경우
인증요청을 위해 사용되는 외부입력값은
LDAP 삽입 취약점을 가지지 않도록 필터링해서 사용해야 한다.
- LDAP 인증이 포함되는 기능 설계시,
외부입력값이
LDAP 조회를 위한 검색 필터 생성에
삽입되어 사용되는 경우,
필터 규칙으로 인식 가능한 특수문자(=, +, <, >, #, ;, \ 등)들을
제거하고 사용할 수 있도록
시큐어코딩 규칙을 정의해야 한다
[ LDAP 아키텍처 설계]
- 개발환경: Java, PHP, ASP
- 활용 가능한 프레임워크 또는 라이브러리: LDAP Syntax Filters
LDAP 검색필터를
액티브 디렉토리(AD) 조회 시의
검색기준을 정의하고
효율적인 검색을 수행할 수 있다.
위 MS 웹문서의 내용과 참조목록으로
필터 작성에 필요한 문법을 참고하여
특수문자를 필터링한다.
진단 기준 및 방법
요구사항 1
LDAP 인증서버로 인증을 구현하는 경우
인증요청을 위해 사용되는 외부입력값은
LDAP 삽입 취약 점을 가지지 않도록
필터링해서 사용해야 한다.
- LDAP 질의문 생성 시
사용되는 입력값과 조회결과에 대한
검증방법(필터링 등)을 설계하고
유효하지 않은 값에 대한 처리방법이
명시되어 있는지 확인한다.
[ 진단 방법 ]
1. 외부입력값이
LDAP조회를 위한 필터생성에 삽입되어 사용되는 경우,
안전하게 사용될 수 있도록 보안설계가 적용되어 있는가?
1-1 요구사항정의서에 설계항목에 대한 대책이 수립되어 있으며,
아키텍처 설계서에 설계항목 적용계획이 수립되어 있고,
요구사항추적표로 요구 사항 추적 가능 여부 확인
- 산출물 검토 예시: 요구사항정의서, 요구사항추적표, 아키텍처설계서 검토
1-2 LDAP 조회필터 생성에 사용되는 입력값을
필터링하는 기능이 설계되어 있거나,
안전한 외부라이브러리를 사용하도록 설계되어 있는지 확인
- 산출물 검토 예시: 프로그램명세서, 컴포넌트설계서, 유즈케이스설계서, 클래스설계서 등에서 필터링 기능 검토
1-3 LDAP조회기능 구현시,
LDAP필터링을 적용하기 위한 코딩규칙이
개발 가이드에 정의되어 있는지 확인
- 산출물 검토 예시: 개발가이드에서 코딩규칙 검토
2. LDAP 삽입 취약점을 점검할 수 있는
테스트 계획이 수립되어 있는가?
2-1 LDAP 필터구문을 변경할 수 있는 입력값을 사용하여
LDAP필터의 규칙이 변경되는지를 점검하기 위한
테스트 계획이 수립되어 있는지 확인
[테스트 입력값]
- = , + , < , > , # , ; , \ 등
- 산출물 검토 예시: 단위테스트케이스 검토
관련 산출물
- 요구사항정의서, 요구사항추적표, 아키텍처설계서, 개발가이드, 프로그램설계서, 유즈케이스설계서, 클래스설계서, 컴포넌트설계서, 단위테스트케이스 등