CVE-2024-38077: Exécution de code à distance dans le service de licence Bureau à distance Windows ("MadLicense")
I. Présentation de la vulnérabilité
- Identifiant CVE: CVE-2024-38077
- Alias: MadLicense
- Score CVSS: 9.8 (Critique)
- Type: Dépassement de tampon basé sur le tas (CWE-122)
- Découvert par: Ver, Lewis Lee, Zhiniang Peng
- Description: Une vulnérabilité d'exécution de code à distance sans authentification préalable et sans interaction utilisateur dans le service de licence Bureau à distance Windows (RDL). Un attaquant non authentifié peut envoyer un paquet RPC spécialement conçu au point de terminaison
RPC over TCP exposé par mstlsap.dll / tlslicense.dll, déclenchant un dépassement de tampon basé sur le tas qui conduit à une exécution de code arbitraire dans le contexte de SYSTEM.
II. Détails techniques
Le service de licence Bureau à distance écoute sur des points de terminaison RPC dynamiques (généralement les ports 49664–49681) accessibles via le port TCP 135 (mappeur de points de terminaison RPC). La vulnérabilité réside dans le gestionnaire d'interface RPC LicensingSendResponse ou un gestionnaire associé, au sein de la gestion de la mémoire du tas du service de licence. En envoyant une requête de protocole de licence spécialement conçue avec une structure LicensingBinary surdimensionnée ou malformée, le service effectue un memcpy non sécurisé dans un tampon de tas de taille insuffisante, corrompant les métadonnées adjacentes du tas et permettant l'exécution de code.
Points clés :
- Pré-authentification: aucune information d'identification valide ni session RDP requise.
- 0-clic: aucune interaction de l'utilisateur sur la cible.
- Vecteur réseau: exploitée à distance via le réseau.
- Impact: compromission totale au niveau SYSTEM du serveur Windows cible.
III. Versions affectées
Les versions antérieures (Windows 2000 Server, Server 2003, Server 2008) peuvent également être concernées si le service RDL est activé.
IV. Configuration de l'environnement
- Installez une version prise en charge de Windows Server (2008–2025) dans une machine virtuelle.
- Assurez-vous que le rôle Services de licence Bureau à distance est installé via le Gestionnaire de serveur :
- Ajouter des rôles et fonctionnalités → Services Bureau à distance → Services de licence Bureau à distance
- Démarrez/vérifiez le service :
net start "Remote Desktop Licensing"
- Confirmez que le service écoute :
netstat -an | findstr LISTENING
- Le service RDL enregistre des points de terminaison RPC dynamiques. Interrogez le port 135 avec un outil de mappage de points de terminaison RPC.
- Isolez la VM cible des réseaux de production — le PoC déclenchera un crash par défaut.
V. Étapes de reproduction
- Exécutez le script PoC contre un serveur Windows cible avec le service RDL exposé :
python exploit.py --target <TARGET_IP>
- Sur la cible, surveillez un crash du service
tlslicense.dll ou un crash système (BSOD selon la gravité de la corruption du tas).
- Pour vérifier le dépassement, attachez un débogueur (WinDbg) au processus
svchost.exe hébergeant le service RDL avant de déclencher l'exploit et observez la violation d'accès.
VI. Code PoC
Le script exploit.py accompagnant ce répertoire contient une reproduction de l'attaque MadLicense. Il se connecte au service RDL cible via RPC sur TCP, construit une requête de licence malformée avec un blob binaire surdimensionné et déclenche le dépassement de tampon basé sur le tas.
VII. Atténuation
- Correctif: installez la mise à jour de sécurité officielle du Patch Tuesday de juillet 2024 de Microsoft (KB5040426 / KB5040430 / KB5040434 / KB5040437 selon la version de Windows).
- Contournement:
- Désactivez le service de licence Bureau à distance s'il n'est pas requis :
sc stop "Remote Desktop Licensing"
sc config "Remote Desktop Licensing" start= disabled
- Bloquez les ports dynamiques RPC entrants (TCP 49152–65535 / 49664–49681) au niveau du pare-feu tout en n'autorisant que le trafic RPC nécessaire.
- Restreignez l'accès au port TCP/135 et aux ports dynamiques RPC via la segmentation du réseau.
VIII. Références