Один UDP-пакет на порт 389 - и ты SYSTEM на контроллере домена. Без логина, без пароля, без единого клика от пользователя. 12 мая 2026 года Microsoft в рамках Patch Tuesday закрыла стековое переполнение буфера в службе Windows Netlogon - CVE-2026-41089 с CVSS 9.8 (Critical). Через 17 дней бельгийский CERT (CCB) подтвердил активную эксплуатацию в дикой природе, хотя Microsoft заявила об отсутствии доказательств. EPSS на начало июля - 0.7225, Top 1% среди всех CVE по вероятности эксплуатации в течение 30 дней.
Уязвимость не требует ни аутентификации, ни действий пользователя: специально сформированный сетевой запрос к контроллеру домена - и атакующий получает удалённое выполнение кода с привилегиями SYSTEM. Для пентестера, работающего с AD-инфраструктурами, эта критическая уязвимость Active Directory - прямой путь от одного UDP-пакета до полного захвата домена. По разрушительному потенциалу она превосходит ZeroLogon, и ниже я объясню почему.
Бизнес-логика атаки: зачем злоумышленнику 0-click RCE на контроллере домена
Контроллер домена - не рядовой Windows Server с файловыми шарами. Это identity control plane Active Directory: хранилище всех учётных данных, центр аутентификации Kerberos, источник групповых политик, узел доверительных отношений между доменами леса. Документация Microsoft по протоколу Netlogon Remote Protocol описывает MS-NRPC как интерфейс для поддержания отношений между доменными машинами и контроллерами, транспортировки аутентификационных запросов и передачи изменений паролей.Атакующий с RCE на DC оказывается в позиции, где до полной компрометации инфраструктуры остаётся два-три шага: дамп всех хешей через DCSync, создание Golden Ticket с хешем
krbtgt, развёртывание ransomware через Group Policy. Не нужна цепочка из пяти уязвимостей, не нужен фишинг - один UDP-пакет и прямое попадание в ядро инфраструктуры.Техническая анатомия CVE-2026-41089: стековое переполнение в Windows Netlogon
Разбор CVSS-вектора и MS-NRPC уязвимость
Согласно записи в MSRC (дата публикации 12 мая 2026), уязвимость описана как: "Stack-based buffer overflow in Windows Netlogon allows an unauthorized attacker to execute code over a network""Переполнение буфера в стеке в Windows Netlogon позволяет неавторизованному злоумышленнику выполнять код по сети". CVSS-векторCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H - разберём каждый компонент, потому что именно он определяет операционный контекст:- AV:N - эксплуатация по сети, физический доступ не нужен
- AC:L - низкая сложность, специальных условий в конфигурации цели не требуется
- PR:N - никаких привилегий, атака до аутентификации
- UI:N - действия пользователя не требуются, полноценный 0-click
- C:H / I:H / A:H - полная потеря конфиденциальности, целостности и доступности
Механика переполнения в обработчике CLDAP
[Применимо: внутренний пентест, все версии Windows Server до патча от 12 мая 2026]CLDAP (Connectionless LDAP, UDP 389) - один из механизмов, через который клиенты обнаруживают контроллеры домена в сети. Служба Netlogon обрабатывает входящие CLDAP-запросы и формирует ответы с информацией о домене.
Инструмент-чекер ADScanPro/CVE-2026-41089-LongLogon (13 звёзд) позиционируется как "unauthenticated, non-destructive precondition checker" и проверяет, достаточно ли длинное доменное имя контроллера для вызова crash. Деталь неочевидная, но важная: длина доменного имени DC - предусловие для триггера переполнения.
По данным сторонних анализов patch diff, патч заменяет уязвимую функцию записи строк в
netlogon.dll: старая реализация копировала символы в фиксированный стековый буфер без контроля размера (привет, strcpy из 90-х), а новая принимает размер буфера как параметр и прекращает запись при достижении лимита, возвращая ошибку вместо переполнения в смежную область стека.Сценарий эксплуатации для атакующего: отправить специально сформированный CLDAP-запрос на UDP 389 контроллера домена -> спровоцировать переполнение стекового буфера при обработке строки -> перезаписать адрес возврата -> получить контроль над потоком выполнения в контексте процесса
lsass.exe (в котором хостится служба Netlogon) с привилегиями SYSTEM.Затронутые версии Windows Server
Патч выпущен для Windows Server 2012, 2012 R2, 2016, 2019, 2022, 2022 23H2 и 2025 - включая Server Core. По данным NVD, затронуты Windows Server 2012, 2012 R2, 2016, 2019 и 2022; точные минимальные патченные билды следует сверять с соответствующими KB-статьями на support.microsoft.com. Соответствующие KB: KB5087471, KB5087470, KB5087537.Короче - уязвимо всё, что Microsoft ещё поддерживает. И то, что уже не поддерживает, но продолжает работать в продакшене (а таких DC хватает).
Эксплуатация Netlogon RCE: место в kill chain Active Directory
Реалистичный путь атаки
Сценарий внутреннего пентеста в режиме grey box - есть доступ к корпоративной сети (через VPN или физическое подключение), но без доменных учётных данных:Этап 1 - Discovery. Находим контроллеры домена через DNS-запросы
_ldap._tcp.dc._msdcs.<domain> или широковещательный CLDAP на UDP 389. Версию ОС определяем из LDAP rootDSE-ответов. Для проверки предусловий - запуск чекера LongLogon, который определяет, подходит ли длина доменного имени для эксплуатации, не отправляя exploit-пакет.Этап 2 - Exploitation of Remote Services (T1210, Lateral Movement). Отправка crafted CLDAP-запроса на UDP 389 непатченного DC. При успехе - выполнение произвольного кода.
Этап 3 - Exploitation for Privilege Escalation (T1068, Privilege Escalation). Код выполняется в контексте
lsass.exe - SYSTEM на контроллере домена. Дальнейшее повышение привилегий не требуется. Мы уже на вершине.Этап 4 - DCSync (T1003.006, Credential Access). С привилегиями SYSTEM на DC выполняем DCSync через
secretsdump.py (Impacket) или mimikatz lsadump::dcsync /all - получаем NTLM-хеши всех учётных записей домена, включая krbtgt.Этап 5 - Persistence и Lateral Movement. Хеш
krbtgt - Golden Ticket на весь домен. Хеши администраторов - Pass the Hash (T1550.002) через SMB/Windows Admin Shares (T1021.002). Регистрация rogue domain controller (T1207) для долгосрочного присутствия. Разведка доверительных отношений (T1482) - выход за пределы текущего домена в другие домены леса. Создание backdoor-аккаунтов в Domain Admins (T1078.002).От UDP-пакета до Golden Ticket - четыре шага. На реальном проекте это минуты, не часы.
Предусловия и ограничения в современных средах
Работает если: DC не патчен (отсутствуют KB5087471/KB5087470/KB5087537), UDP 389 доступен с позиции атакующего, доменное имя достаточной длины для триггера переполнения (проверяется чекером LongLogon).Не работает если:
Патч установлен - после обновления функция записи строк проверяет границы буфера, и переполнение невозможно.
Сетевая сегментация - DC находится в изолированном management VLAN, UDP 389 заблокирован от рабочих подсетей. На практике stateful firewall (Palo Alto, Fortinet) фильтрует UDP 389 от нетрастованных зон. Но я видел достаточно "плоских" сетей, чтобы не полагаться на это.
Внешний пентест - DC не должен быть доступен из интернета. Но CLDAP exposure - реальная проблема: Shodan фиксирует тысячи открытых UDP 389 на Windows Server.
Stack mitigations - ASLR, DEP и stack cookies на Windows Server 2019+ усложняют эксплуатацию (требуют обхода ASLR для контроля RIP), но не устраняют уязвимость. Патч обязателен.
EDR на DC - CrowdStrike Falcon и Microsoft Defender for Endpoint детектируют аномальное поведение
lsass.exe после эксплуатации (child processes, memory access patterns). SentinelOne фиксирует injection в lsass.exe. Elastic 8.x+ с модулем Endpoint Security логирует network connections от lsass.exe (Sysmon EID 3). Но ни один из перечисленных продуктов не блокирует сам CLDAP-пакет до момента overflow - они ловят последствия, а не причину.Верификация уязвимости и проверка патча на контроллерах домена
Требования к окружению
- ОС: Windows Server с ролью AD DS (любая поддерживаемая версия)
- Права: Domain Admin или локальный администратор на каждом DC
- RAM: стандартные требования DC (минимум 4 ГБ, рекомендуется 8+ ГБ для Server 2019/2022)
- Инструменты: PowerShell 5.1+, модуль ActiveDirectory, опционально - ADScanPro/CVE-2026-41089-LongLogon
Код:
Get-ADDomainController -Filter * | ForEach-Object {
$kb = Invoke-Command -ComputerName $_.HostName -ScriptBlock {
# Сверьте KB-номера с актуальным MSRC advisory перед использованием
Get-HotFix | Where-Object {$_.HotFixID -match 'KB508747[01]|KB5087537'}
}
[PSCustomObject]@{
DC=$_.HostName; Site=$_.Site; OS=$_.OperatingSystem
Patched=[bool]$kb; KB=$kb.HotFixID -join ','
}
} | Format-Table -AutoSize
Get-FileHash C:\Windows\System32\netlogon.dll -Algorithm SHA256. Любой DC с несовпадающим хешем считается уязвимым до подтверждения обратного.И вот тут момент, который на проектах игнорируют чаще всего: патчить надо все DC в одном maintenance window. Half-patched AD forest - не defensible state. Один непатченный DC в лесу из десяти - и этого достаточно. Атакующий просто направит exploit на этот конкретный узел.
Детекция эксплуатации CVE-2026-41089: IOC и SIEM-правила
Индикаторы компрометации
Сетевой уровень: аномальный CLDAP-трафик (UDP 389) от источников, не являющихся доменными машинами. Характерный признак - нестандартный размер пакетов, направленных к DC от хостов вне списка доменных клиентов. По данным CCB и SecPod, инфраструктурные IOC (IP-адреса C2, домены, хеши файлов кампаний) на момент июня 2026 публично не раскрыты - доступные индикаторы носят поведенческий характер.Хостовый уровень: ключевой IOC - crash
lsass.exe с faulting module netlogon.DLL и exception code 0xc0000409 (STATUS_STACK_BUFFER_OVERRUN). В Windows Event Log - Event ID 1000 (Application Error). Любой такой event на непатченном DC - основание для запуска процедуры инцидент-респонса. Не "вероятная причина перезагрузки", не "наверное, память кончилась" - а IR. Сразу.Пост-эксплуатационные IOC: дочерние процессы от
lsass.exe (Sysmon EID 1 с ParentImage lsass.exe), исходящие сетевые соединения от lsass.exe на нестандартные адреса (Sysmon EID 3), добавление учётных записей в привилегированные группы - Event ID 4728, 4732, 4756 - в нерабочее время.SIEM-правила по вендорам
Microsoft Sentinel (KQL):
Код:
Event
| where EventID == 1000 and Source == "Application Error"
| where RenderedDescription contains "lsass.exe"
and RenderedDescription contains "netlogon"
and RenderedDescription contains "c0000409"
| project TimeGenerated, Computer, RenderedDescription
| extend Alert = "CVE-2026-41089 crash candidate"
source="WinEventLog:Application" EventCode=1000 "lsass.exe" "netlogon.DLL" "0xc0000409" - с последующей корреляцией по Computer name для выявления серийных crash'ей.Elastic (KQL):
event.code:1000 AND process.name:lsass.exe AND winlog.event_data.ModuleName:[I]netlogon[/I] AND winlog.event_data.ExceptionCode:("0xc0000409" OR "c0000409").Ограничение этих правил стоит понимать: они фиксируют crash - DoS-состояние или неудачную попытку эксплуатации. Успешный RCE без crash может не оставить этих артефактов. Для покрытия этого сценария - мониторинг child processes от
lsass.exe через Sysmon EID 1 и сетевых соединений через Sysmon EID 3.Для Netlogon debug logging на непатченных DC до момента установки обновления:
nltest /dbflag:0x2080ffff - логи записываются в %windir%\debug\netlogon.log. После патча отключить: nltest /dbflag:0x0, чтобы избежать overhead от объёма логирования.CVE-2026-41089 vs ZeroLogon: сравнение критических уязвимостей Netlogon Remote Protocol
| Параметр | ZeroLogon (CVE-2020-1472) | CVE-2026-41089 |
|---|---|---|
| Класс уязвимости | Криптографическая (слабый IV в AES-CFB8) | Переполнение стекового буфера (CWE-121) |
| Вектор атаки | MS-NRPC через TCP (RPC) | CLDAP через UDP 389 |
| Аутентификация | Не требуется | Не требуется |
| CVSS | 10.0 по оценке MSRC (NVD переоценил как 5.5) | 9.8 |
| Результат эксплуатации | Обнуление пароля машинной учётной записи DC | RCE с привилегиями SYSTEM |
| Деструктивность | Высокая - ломает репликацию AD | Низкая при успешном RCE (на 2019+ требует обхода ASLR) |
| Скрытность | Низкая - Event ID 4742, нарушение репликации | Выше - при чистом RCE нет заметных side effects |
| Транспорт | TCP (stateful, проще фильтровать) | UDP (connectionless, фильтрация сложнее) |
| Детекция | Event ID 4742 (смена пароля machine account) | Event ID 1000 (crash lsass) + Sysmon |
| Публичный PoC | Доступен с 2020 года, активно эксплуатируется (CISA KEV с ноября 2021) | Доступен (0xABCD01, 207 звёзд, июль 2026) |
Ключевое отличие для практики: ZeroLogon при эксплуатации ломал AD - после обнуления пароля машинной учётной записи DC репликация переставала работать, и скрыть это было невозможно. На реальных проектах приходилось координировать с заказчиком восстановление, писать объяснительные, ждать пока поднимут бэкап. CVE-2026-41089 при чистой эксплуатации даёт шелл без деструктивных побочных эффектов - атакующий может действовать скрытно. Это делает Windows Server RCE CVE опаснее в руках APT-групп: ZeroLogon шумел как слон в посудной лавке, а тут - тишина.
Чеклист реагирования на CVE-2026-41089
Нумерованный список для SOC-инженера или пентестера, готовый к передаче сисадмину:
📚 Часть контента скрыта. Этот материал доступен участникам сообщества с рангом One Level или выше
Получить доступ просто — достаточно зарегистрироваться и проявить активность на форуме
Получить доступ просто — достаточно зарегистрироваться и проявить активность на форуме
Три месяца прошло с выхода патча, а на внутренних пентестах я продолжаю находить непатченные контроллеры. Обычно это "тот самый DC, который никто не трогает" - резервный контроллер в забытом филиале, read-only DC на удалённой площадке, тестовый DC разработчиков, который "вроде не в проде". Для CVE-2026-41089 роль контроллера не имеет значения: уязвим Netlogon, а он работает на всех.
Разногласие между Microsoft (заявила об отсутствии доказательств эксплуатации) и CCB (29 мая подтвердила активную эксплуатацию) - момент показательный, но для пентестера это не вопрос "кто прав". EPSS 0.7225 в Top 1%, публичный PoC с 207 звёздами, CISA оценивает Automatable как "yes" и Technical Impact как "total". Ждать, пока Microsoft обновит статус advisory - значит отдавать инициативу атакующим.
На практике нередко встречается ситуация: организации патчат рабочие станции за неделю, а контроллеры домена - за квартал. Аргумент один: "DC нельзя перезагружать без согласования change management". Это инверсия приоритетов в чистом виде. CVE-2026-41089 - лучший аргумент для её исправления: актив с наибольшим blast radius получает обновление последним. Покажите этот чеклист своему change management - пусть объяснят, почему рабочая станция бухгалтера патчится раньше, чем контроллер домена с хешами всех учёток в компании.
Последнее редактирование модератором: