LDAP Nightmare(CVE-2024-49112) 취약점

LDAP Nightmare(CVE-2024-49112) 취약점

1. Overview

DC(Active Directory Domain Control) 는 Windows OS 를 사용하는 PC들을 중앙에서 관리, 인증하는 서버를 구성하는 핵심 구성 요소 중 하나이다. 이 때문에 도메인 컨트롤은 기업과 같은 조직에서 조직원들에게 동일한 그룹 정책을 배포하거나, 사용자들에게 공용 리소스에 대한 접근 권한을 부여하는 용도로 사용된다.

2024년 12월 10일, Yuki Chen이라는 이름의 보안 전문가가 도메인 컨트롤의 기능 중 하나를 지원하는 LDAP(Lightweight Directory Access Protocol)에서 원격 코드 실행 취약점(CVE-2024-49112)과 DDoS 공격 취약점(CVE-2024-49113)을 발견했다.

NIST 에서는 해당 취약점을 실행하기 위한 조건이 까다롭지 않은 점, 패치되지 않은 현존하는 모든 버전의 Windows Server 가 공격 대상이라는 점, 원격 코드 실행이 가능하다는 점, 등을 고려하여 CVE-2024-49112 취약점에 대해 10점 만점 중 9.8 점이라는 높은 점수의 위험도를 부여했다.

CVE-2024-49112 취약점에 대한 NIST 평가

이 글에서는 SafeBreach Labs 에서 게시한 LDAP Nightmare 글을 요약, 정리했다.

2. 취약점 발생 원인

SafeBreach Labs 의 분석에 따르면 CVE-2024-49113 취약점은 공격 대상의 DNS 서버가 인터넷에 연결되어 있기만 하면 DC 뿐만 아니라 패치되지 않은 모든 버전의 Windows Server 도 영향을 받는다고 한다.

아래 이미지와 공격 과정은 SafeBreach Labs 의 글을 참조했다.

CVE-2024-49113 취약점 공격 흐름도(출처)
  1. 공격자가 피해자의 서버에 DCE/RPC request 패킷을 보낸다.
  2. 피해자가 SafeBreachLabs.pro 에 DNS SRV query 를 보낸다.
  3. 공격자의 DNS 서버가 공격자 머신의 호스트와 LDAP 포트를 응답한다.
  4. 피해자는 응답받은 공격자 머신의 호스트 IP 를 찾기 위해 NBNS request 브로드캐스트를 보낸다.
  5. 공격자는 NBNS 패킷에 대한 응답으로 IP 주소를 보낸다.
  6. 피해자는 LDAP Client 가 되고, CLDAP request 패킷을 공격자 머신에 보낸다.
  7. 공격자는 LSASS 에 crash 를 유발하여 피해자 서버를 재부팅 시키는 특별한 값을 포함한 CLDAP referral 응답 패킷을 보낸다.

위 공격 과정에서 핵심은 마지막 7번째 단계이다. 피해자 서버는 공격자가 조작한 CLDAP referral 패킷을 적절하게 처리하지 못해 Crash 가 발생할 수 있다.

아직 직접적인 테스트에는 이르지 못 했지만, SafeBreach Labs 는 마지막 단계에서 전송하는 CLDAP referral 응답 패킷을 적절하게 조작하면 원격 코드 실행을 유발시키는 CVE-2024-49112 취약점도 발생할 수 있다고 전망했다.

3. 취약점 발생 버전 & 해결책

앞서 언급했듯이, 해당 CVE-2024-49112, CVE-2024-49113 취약점은 아직 패치되지 않은 현존하는 모든 버전의 Window Server 에서 발생할 여지가 있다.

Windows Server 를 운영 중인 운영자라면 해당 취약점을 예방하기 위해 Microsoft 에서 게시한 Windows LDAP(Lightweight Directory Access Protocol) 서비스 거부 취약성 글과 Windows LDAP(Lightweight Directory Access Protocol) 원격 코드 실행 취약성 글에서 적절한 서버 버전에 대해 보안 업데이트 파일을 다운로드받아 적용하자.

또는 SafeBreach 에서 작성한 PoC 파일을 실행하여 운영 중인 Windows Server 가 CVE-2024-49113 취약점에 노출되어 있는 상태인지 확인할 수 있다. 참고로 이 PoC 를 실행하면 대상 서버는 Crash 가 발생하니 절대로 본인이 관리하지 않는 서버를 대상으로 실행하지 말아야 한다.

4. References