
Analyse de l'exploitation et de l'atténuation du débordement de tampon basé sur le tas CVE-2021-3156 dans sudo
CVE-2021-3156, connu sous le nom de Baron Samedit, est une vulnérabilité de débordement de tampon basé sur le tas dans le programme sudo. Elle permet à tout utilisateur local non privilégié d'obtenir les privilèges root sur les systèmes vulnérables sans authentification.
Ce projet documente l'exploitation complète et l'atténuation de cette vulnérabilité dans le cadre du cours Vulnérabilités logicielles : exploitation et atténuation à l'Université du Luxembourg.
OS: Ubuntu 20.04.1
sudo version: 1.8.31-1ubuntu1 (vulnérable)
libc version: 2.31
Utilisateur: Compte non root
Pour reproduire l'état vulnérable :
sudo apt install sudo=1.8.31-1ubuntu1
La vulnérabilité est déclenchée lorsque sudo est exécuté en mode sudoedit avec des arguments de ligne de commande soigneusement conçus qui débordent les tampons internes du tas.
L'exploit utilise quatre paramètres critiques ajustés par analyse mémoire :
exploit_launcher.c — Exploit principalDéclenche la vulnérabilité en 5 étapes :
LC_ALL pour contrôler la disposition mémoire du tassudoedit avec les arguments et l'environnement malveillantsexploit_payload.c — Charge utile malveillanteExécutée automatiquement lorsque l'exploit réussit via la fonction _init :
0 (root)$ make
$ ./exploit_it
[!] CVE-2021-3156 Exploit
[+] Target: Ubuntu 20.04.1 (sudo 1.8.31, libc-2.31)
[+] Parameters: A=56, B=54, Nulls=63, LC_ALL=212
[+] Launching exploit...
[+] Exploit successful. Root privileges obtained.
# whoami
root
✅ Élévation réussie d'un utilisateur non privilégié à root.
Mettez à jour sudo vers la version corrigée :
sudo apt install sudo=1.8.31-1ubuntu1.5
Après la mise à jour, le même exploit n'a pas pu s'exécuter et les privilèges root n'ont pas été accordés — confirmant l'efficacité du correctif.
Point clé : Maintenir les utilitaires système comme
sudoà jour est essentiel pour prévenir les attaques d'élévation de privilèges.
├── exploit_launcher.c # Exploit principal déclenchant le débordement de tas
├── exploit_payload.c # Charge utile malveillante lançant un shell root
├── libnss_X/ # Bibliothèque malveillante chargée lors de l'exploitation
└── Makefile # Configuration de compilation
# Compilation
make
# Exécution de l'exploit
./exploit_it
| Propriété | Détails |
|---|
| Identifiant CVE | CVE-2021-3156 |
| Surnom | Baron Samedit |
| Type | Débordement de tampon basé sur le tas |
| Composant | sudo (mode sudoedit) |
| Impact | Élévation de privilèges locale vers root |
| Versions affectées | sudo ≤ 1.8.31 (Ubuntu), ≤ 1.9.5p1 (autres) |
| Version corrigée | sudo 1.8.31-1ubuntu1.5 |
| Score CVSS | 7.8 (Élevé) |
| Paramètre | Taille | Objectif |
|---|
A | 56 octets | Débordement du tampon initial |
B | 54 octets | Débordement d'un second bloc de tas |
Nulls | 63 octets | Alignement mémoire de la structure |
LC_ALL | 212 octets | Contrôle de la disposition du tas via variable d'environnement |