익명 LDAP 연결 (Anonymous LDAP Binding)

Missing Authentication for Critical Function (LDAP)

설명

LDAP(Lightweight Directory Access Protocol) 서버에 익명으로 연결(Anonymous Binding)하면 인증 없이 데이터에 접근할 수 있어 보안 위험이 발생할 수 있습니다. 익명 바인딩이 허용되면 공격자가 LDAP 서버의 데이터를 조회하거나 조작할 수 있으며, 이는 민감한 정보 유출로 이어질 수 있습니다.

잠재적 영향

  • 민감한 데이터 노출: 익명 사용자가 LDAP 서버에 접근하여 조직의 사용자 정보, 그룹 목록 등을 조회할 수 있습니다.

  • 권한 없는 데이터 조작: 인증 없이 데이터를 수정할 수 있는 경우, 공격자가 권한을 상승시킬 수 있습니다.

  • 서비스 악용: 익명 사용자가 대량의 LDAP 요청을 보내 서비스 거부(DoS) 공격을 수행할 수 있습니다.

해결 방법

  1. LDAP 연결 시 인증을 필수적으로 수행

    • Context.SECURITY_AUTHENTICATION 값을 "none" 대신 "simple" 또는 "strong"으로 설정하여 인증을 활성화합니다.

  2. 강력한 인증 방식 사용

    • 사용자 이름 및 비밀번호 기반 인증을 적용하고, 비밀번호는 안전한 저장소(KMS, 환경 변수 등)에 보관합니다.

  3. LDAP 접근 권한을 최소화

    • LDAP 서버 설정을 통해 익명 사용자의 조회 및 수정 권한을 차단합니다.

취약한 코드 및 안전한 코드 예시

취약한 코드

안전한 코드

설명:

  • 취약한 코드:

    • Context.SECURITY_AUTHENTICATION"none"으로 설정하여 인증 없이 LDAP 서버에 접근할 수 있음.

  • 안전한 코드:

    • SECURITY_AUTHENTICATION"simple"로 설정하여 인증을 필수적으로 수행함.

    • 비밀번호를 환경 변수 또는 보안 저장소에서 로드하여 코드 내에 직접 하드코딩하지 않음.

참조

Last updated