반응형
https://www.kisa.or.kr/public/laws/laws3.jsp
구현 단계 시큐어코딩 가이드 - 입력 데이터 검증 및 표현 - LDAP 삽입
가. 개요
- 공격자가 외부 입력을 통해서 의도하지 않은 LDAP(Lightweight Directory Access Protocol) 명령어를 수행할 수 있다. 즉, 웹 응용프로그램이 사용자가 제공한 입력을 올바르게 처리하지 못하면, 공격자가 LDAP 명령문의 구성을 바꿀 수 있다. 이로 인해 프로세스가 명령을 실행한 컴포넌트와 동일한 권한(Permission)을 가지고 동작하게 된다.
- 외부 입력값을 적절한 처리 없이 LDAP 쿼리문이나 결과의 일부로 사용하는 경우, LDAP 쿼리문이 실행될 때 공격자는 LDAP 쿼리문의 내용을 마음대로 변경할 수 있다.
나. 보안대책
- DN(Distinguished Name)과 필터에 사용되는 사용자 입력값에는 특수문자가 포함되지 않도록 특수문자를 제거한다. 만약 특수문자를 사용해야 하는 경우에는 특수문자( = + < > # ; ₩ 등 )가 실행 명령이 아닌 일반 문자로 인식되도록 처리한다.
다. 코드예제
JAVA
더보기
userSN과 userPassword 변수의 값으로 *을 전달할 경우 필터 문자열은 "(&(sn=S*)(userPassword=*))“ 가 되어 항상 참이 되며 이는 의도하지 않은 동작을 유발할 수 있다.
검색을 위한 필터 문자열로 사용되는 외부의 입력에서 위험한 문자열을 제거하여 위험성을 부분적으로 감소시킬 수 있다.
C#
더보기
다음은 인증하지 않은 익명 바인딩으로 LDAP 쿼리를 실행하는 C# 코드 예제이다.
익명 바인딩을 사용하지 않고 인증을 진행해야 한다.
C
더보기
아래 C 코드는 외부에서 불러온 filter를 LDAP 탐색에 그대로 사용하고 있다. LDAP 필터에 OR 연산 등을 사용하여 의도치 않은 동작이 발생할 수 있다.
공격 가능성이 있는 문자열을 필터 하여 문제를 해결할 수 있다.
참고자료
- CWE-90 LDAP Injection, MITRE,
http://cwe.mitre.org/data/definitions/90.html - Prevent LDAP injection, CERT,
http://www.securecoding.cert.org/confluence/display/java/IDS54-J.+Prevent+LDAP+injection - LDAP injection, OWASP
https://www.owasp.org/index.php/LDAP_Injection_Prevention_Cheat_Sheet - "LDAP Resources”
http://ldapman.org/
반응형
'공부 > KISA' 카테고리의 다른 글
HTTP 응답분할 - KISA 소프트웨어 개발 보안 가이드 (1) | 2020.07.20 |
---|---|
크로스사이트 요청 위조 - KISA 소프트웨어 개발 보안 가이드 (0) | 2020.07.20 |
XPath 삽입 - KISA 소프트웨어 개발 보안 가이드 (0) | 2020.07.20 |
XQuery 삽입 - KISA 소프트웨어 개발 보안 가이드 (0) | 2020.07.20 |
신뢰되지 않는 URL 주소로 자동접속 연결 - KISA 소프트웨어 개발 보안 가이드 (0) | 2020.07.20 |
댓글