CVE-2021-21974 – VMware ESXi OpenSLP heap-overflow vulnerability
Pourquoi revenir sur une vulnérabilité de 2021 ?
Après le retour de la vulnérabilité CVE-2021-35394 dont nous parlions récemment suite à son utilisation active par différents botnets, c’est maintenant au tour de la CVE-2021-21974 de défrayer la chronique. En cause : l’utilisation de cette vulnérabilité dans une campagne de ransomware visant les hyperviseurs VMWare.
Le 3 février, l’équipe d’OVH prévenait d’une attaque sur les hyperviseurs VMWare, suivi de peu par une alerte du CERT FR.
Peu de temps après, les organismes de différents pays ont également émis des alertes comme l’ACN en Italie ou encore le CERT AT en Autriche.
Comme cela a été confirmé par VMWare il ne s’agit pas d’une nouvelle vulnérabilité (0- day) mais d’une vulnérabilité d’il y a de deux ans.
La principale vulnérabilité mise en cause est la CVE-2021-21974, une vulnérabilité de type heap-overflow (débordement de tas) sur le composant OpenSLP embarqué dans les hyperviseurs VMWare.
Quelques détails
OpenSLP propose une implémentation du protocole SLP qui est un service de localisation de service, permettant de transmettre à un client des informations sur des services et leurs localisations. Un client demande des informations sur un service, et le service lui retourne une URL.
Parmi les fonctionnalités du protocole SLP, il existe un type de requête, les directory agent advertisements, permettant à un serveur de s’annoncer comme Directory Agent, un composant gardant en cache les annonces de service. La vulnérabilité réside précisément dans ce type de requête. Lors de la réception d’un message de ce type, le message contient la longueur de l’URL ainsi que l’URL en elle-même.
La vulnérabilité réside précisément dans ce type de requête. Lors de la réception d’un message de ce type, le message contient la longueur de l’URL ainsi que l’URL en elle-même
Cependant, le champ contenant l’URL est lu jusqu’à la détection d’un caractère null, si celui-ci n’est pas présent, la lecture continuera dans les champs suivants mais sera copiée dans un tampon ayant la taille prévue de l’URL. Cela permet de détourner le flux d’exécution du programme et ainsi d’obtenir une exécution de code arbitraire.
Dans le cas de cette attaque d’envergure, l’exécution de code arbitraire a été utilisée afin de déployer un nouveau ransomware baptisé EsxiArgs en raison de l’extension .args des fichiers créés lors du chiffrement de ces derniers.
Cependant, d’autres ransomwares semblent également utiliser ce mode d’infection comme le ransomware Royal.
Détection et solution
La règle Sigflow ayant le sid 2044114 permet de détecter les tentatives d’exploitation de cette vulnérabilité. Cette règle est disponible depuis le 03 février.
Dans la mise à jour de son alerte, le CERT FR a également mis des informations sur des procédures permettant de récupérer certains fichiers chiffrés :
- gist:da539a47d5eae29383a4804218ad7220 · GitHub
- decrypt your crypted files in ESXi servers affected by CVE-2020-3992 / CryptoLocker attack (enes.dev)
Le 07 février, le CISA a publié un script afin de faciliter cette procédure : https://github.com/cisagov/ESXiArgs-Recover .
Tout comme les procédures publiées jusqu’ici, cela permet de reconstruire les VMDK à partir d’informations qui n’ont pas été chiffrées, il existe donc une possibilité d’échec.
Comme le précise le CISA, il est indispensable de relire et de comprendre les actions effectuées par le script avant de l’exécuter.
Il est à noter cependant que depuis le 8 février, une nouvelle souche du ransomware EsxiArgs est apparue, rendant les fichiers chiffrés irrécupérables.
De plus certaines remontées indiquent que certains serveurs ont été réinfectés malgré la désactivation du service SLP laissant planer le doute sur la méthode d’infection.
VMWare a également de son côté mis à jour la note concernant EsxiArgs (https://core.vmware.com/esxiargs-questions-answers#who-is-affected-by-this) indiquant que les attaquants utilisent probablement toutes les vulnérabilités disponibles.
Versions concernées
- ESXi versions 7.x antérieures à ESXi70U1c-17325551
- ESXi versions 6.7.x antérieures à ESXi670-202102401-SG
- ESXi versions 6.5.x antérieures à ESXi650-202102101-SG
Auteur : Purple Team Gatewatcher
Ressources