
CVE-2026-41089 PoC — Netlogon CLDAP 스택 버퍼 오버플로(CVSS 9.8 CRITICAL)
██████╗██╗ ██╗███████╗ ██╗ ██╗ ██╗ ██████╗ ██████╗
██╔════╝██║ ██║██╔════╝ ██║ ██║███║██╔═████╗██╔═████╗
██║ ██║ ██║█████╗ ███████║╚██║██║██╔██║██║██╔██║
██║ ╚██╗ ██╔╝██╔══╝ ██╔══██║ ██║████╔╝██║████╔╝██║
╚██████╗ ╚████╔╝ ███████╗ ██║ ██║ ██║╚██████╔╝╚██████╔╝
╚═════╝ ╚═══╝ ╚══════╝ ╚═╝ ╚═╝ ╚═╝ ╚═════╝ ╚═════╝
Windows Netlogon CLDAP 스택 버퍼 오버플로우를 통한 원격 코드 실행
하나의 조작된 UDP 패킷이 포트 389로 전송되어 패치되지 않은 Windows 도메인 컨트롤러의 LSASS 내부 528바이트 스택 버퍼를 오버플로우합니다. 프로세스가 충돌합니다. DC가 약 60초 후에 재부팅됩니다. 인증이 필요하지 않습니다.
| 공격 벡터 | UDP 389 (CLDAP), 사전 인증, 자격 증명 없음 |
| 영향 | LSASS 충돌, DC 재부팅, 잠재적 RCE |
| CWE | CWE-121 (Stack-based Buffer Overflow) |
| CVSS 벡터 | AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H |
| 공개일 | 2026년 5월 12일, Microsoft |
python3 poc.py 10.0.50.21 corp.local
세 단계: DC가 살아있는지 확인하는 일반 핑, 130자 사용자 이름을 사용한 오버플로우 핑, 활성 확인. 약 10초 소요.
도메인 컨트롤러로 실행되는 모든 Windows Server 버전:
NlGetLocalPingResponse는 528바이트 스택 버퍼를 할당하고 이를 BuildSamLogonResponse에 전달합니다. 이 함수는 NetpLogonPutUnicodeString을 호출하여 서버 이름, 도메인 이름, GUID 및 공격자가 제어하는 사용자 이름을 버퍼에 씁니다.
버그: NetpLogonPutUnicodeString은 최대 길이를 바이트 단위로 받지만 이를 WCHAR 개수로 처리합니다. 이 경로를 통해 쓰여지는 모든 문자열은 예상 공간의 두 배를 차지합니다. CLDAP 필터의 "User" 필드(최대 130 wchars, 와이어 상 260바이트)는 결합된 쓰기를 528바이트 경계를 넘어서게 합니다.
I_NetLogonLdapLookupEx
-> NlGetLocalPingResponse // 528-byte stack buffer
-> LogonRequestHandler
-> BuildSamLogonResponse
-> NetpLogonPutUnicodeString // byte/WCHAR size confusion
python3 poc.py <target_ip> <domain_name> [options]
| 플래그 | 설명 | 기본값 |
|---|---|---|
-l | 사용자 이름 길이 (문자 수) | 130 |
-t | UDP 수신 타임아웃 (초) |
# 연결 테스트 (짧은 사용자 이름, 오버플로우 없음)
python3 poc.py 10.0.50.21 corp.local
# 기본 오버플로우 시도
python3 poc.py 10.0.50.21 corp.local -l 130
# 더 큰 페이로드, 느린 네트워크용 긴 타임아웃
python3 poc.py 10.0.50.21 corp.local -l 200 -t 10
Python 3.8+가 필요합니다. 타사 패키지는 필요하지 않습니다.
오버플로우는 서비스 거부(LSASS 충돌, DC 재부팅)를 유발합니다. 이론적으로 스택 손상을 통한 RCE가 가능합니다. 이 PoC는 코드 실행을 시도하지 않습니다.
네트워크. CLDAP 트래픽에서 "User" 필터 속성이 20-30자를 초과하는 검색 요청을 스캔합니다. 일반 DC 로케이터 핑은 서비스 계정 이름(짧은 문자열)을 사용합니다.
호스트. netlogon.dll과 관련된 LSASS 충돌(이벤트 ID 1000)을 모니터링합니다. Netlogon 디버그 로깅 활성화:
nltest /dbflag:0x2080ffff
mov edx, 0x40으로 최대 사용자 이름 길이 절반으로 감소)법적 고지. 이 코드는 승인된 보안 연구 및 교육을 위해 존재합니다. 소유하거나 테스트할 서면 허가를 받은 시스템에 대해서만 테스트하십시오. 컴퓨터 시스템에 대한 무단 액세스는 CFAA 및 대부분의 관할권에서 동등한 법률을 위반합니다.
| 서버 버전 | 수정 버전 |
|---|
| 2012 / 2012 R2 | ESU 전용 패치 |
| 2016 | 10.0.14393.9140 |
| 2019 | 10.0.17763.8755 |
| 2022 | 10.0.20348.5074 |
| 2022 23H2 | 10.0.25398.2330 |
| 2025 | 10.0.26100.32772 |
| 5 |
-d | 오버플로우와 활성 확인 사이 지연 (초) | 3 |