시큐어코딩
- home
- 보안소식
- 시큐어코딩
09. [입력 데이터 검증 및 표현] LDAP 삽입
2018.05.10 10:36
안녕하세요, 지에스인포입니다.
이번에는 시큐어코딩 항목 중 입력 데이터 검증 및 표현의 9번째 항목인 'LDAP 삽입'에 대해서 알아보겠습니다.
LDAP 삽입은 행정자치부에서 발표한 '소프트웨어 개발보안 가이드'에 속해있는 주요 항목입니다.
분석, 설계 단계의 보안 요구항목에서는 '입력 데이터 검증 및 표현'의 '디렉터리 서비스 조회 및 결과 검증'이라는 항목으로, 구현 단계 보안약점에서는 '입력 데이터 검증 및 표현'의 'LDAP 삽입'이라는 이름으로 명시가 되어있습니다.
#LDAP 삽입이란?
LDAP(Lightweight Directory Access Protocol)은 조직이나 개체, 인터넷이나 기업 내의 인트라넷 등 네트워크 상에 있는 파일이나 장치들과 같은 자원 등의 위치를 찾을 수 있게 해주는 소프트웨어 프로토콜입니다. LDAP은 서버 - 클라이언트 모델을 기초로 동작하는데, 하나 이상을 LDAP 서버가 LDAP 디렉터리 트리 또는 백엔드 데이터베이스를 구성하는 자료를 가지고 있고, LDAP 클라이언트가 LDAP 서버에 연결해 질의하면 서버가 그에 대한 답 또는 더 많은 정보를 가지고 있는 다른 LDAP 서버를 가리키는 포인터로 응답을 하게 됩니다.
LDAP은 쿼리 문을 생성하여 질의응답을 하는데, LDAP 쿼리 문을 생성할 때 외부 입력값을 적절한 처리 없이 LDAP 쿼리 문이나 결과의 일부로 사용하는 경우, LDAP 쿼리 문이 실행될 때 공격자는 쿼리문을 변조할 수 있습니다.
위 소스 코드는 JAVA에서 LDAP을 이용해 질의하고, 답을 받아오는 소스 코드입니다. 12번째 줄에서
filter 변수에 검색 조건이 되는 필터를 생성하고 있는데, 외부 값인 userSN과 userPassword를 사용하고 있습니다. 만약 공격자가 LDAP 쿼리 문에서 모든 값을 의미하는 *를 입력한다면 항상 참이 되어 검색 조건을 우회할 수 있을 것입니다.
결국, sn과 userPassword가 존재하는 모든 유저의 정보를 호출하게 될 것입니다.
#LDAP 삽입을 막기 위한 보안 대책은?
LDAP 삽입을 막기 위한 보안 대책은 소프트웨어 개발 주기에 따라 크게 두 가지로 나눌 수 있습니다.
소프트웨어 개발보안 가이드에서 제시하는 "LDAP 삽입"에 대한 보안대책은 위와 같으며, 각각의 상황에 맞게 적절히 사용하기를 권장하고 있습니다.
오늘은 "LDAP 삽입"에 대해 살펴봤습니다.
다음은 시큐어코딩 10번째 항목, "크로스 사이트 요청 위조"에 대해 알아보도록 하겠습니다.
댓글 0
본사주소 : 서울특별시 금천구 가산디지털1로 181, 가산더블유센터 1508호 COPYRIGHT ⓒ ALL RIGHT RESERVED.