
Analisi dello sfruttamento e della mitigazione del buffer overflow basato su heap in sudo (CVE-2021-3156)
CVE-2021-3156, noto come Baron Samedit, è una vulnerabilità di buffer overflow basato su heap nel programma sudo. Consente a qualsiasi utente locale non privilegiato di ottenere privilegi di root su sistemi vulnerabili senza autenticazione.
Questo progetto documenta lo sfruttamento completo e la mitigazione di questa vulnerabilità nell'ambito del corso Software Vulnerabilities: Exploitation and Mitigation presso l'Università del Lussemburgo.
OS: Ubuntu 20.04.1
sudo version: 1.8.31-1ubuntu1 (vulnerable)
libc version: 2.31
User: Non-root account
Per riprodurre lo stato vulnerabile:
sudo apt install sudo=1.8.31-1ubuntu1
La vulnerabilità viene attivata quando sudo viene eseguito in modalità sudoedit con argomenti della riga di comando accuratamente costruiti che provocano un overflow dei buffer heap interni.
L'exploit utilizza quattro parametri critici messi a punto tramite l'analisi della memoria:
exploit_launcher.c — Exploit principaleAttiva la vulnerabilità attraverso 5 passaggi:
LC_ALL per controllare il layout della memoria heapsudoedit con gli argomenti maliziosi e l'ambienteexploit_payload.c — Payload maliziosoEseguito automaticamente quando l'exploit ha successo tramite la funzione _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
✅ Escalation riuscita da utente non privilegiato a root.
Aggiorna sudo alla versione corretta:
sudo apt install sudo=1.8.31-1ubuntu1.5
Dopo l'aggiornamento, lo stesso exploit non è riuscito a essere eseguito e i privilegi di root non sono stati concessi — confermando l'efficacia della patch.
Punto chiave: mantenere aggiornate le utilità di sistema come
sudoè fondamentale per prevenire attacchi di escalation dei privilegi.
├── exploit_launcher.c # Main exploit triggering the heap overflow
├── exploit_payload.c # Malicious payload spawning root shell
├── libnss_X/ # Malicious library loaded during exploitation
└── Makefile # Build configuration
# Build
make
# Run exploit
./exploit_it
| Proprietà | Dettagli |
|---|
| ID CVE | CVE-2021-3156 |
| Soprannome | Baron Samedit |
| Tipo | Buffer Overflow basato su heap |
| Componente | sudo (modalità sudoedit) |
| Impatto | Escalation dei privilegi locali a root |
| Versioni affette | sudo ≤ 1.8.31 (Ubuntu), ≤ 1.9.5p1 (altri) |
| Versione corretta | sudo 1.8.31-1ubuntu1.5 |
| Punteggio CVSS | 7.8 (Alto) |
| Parametro | Dimensione | Scopo |
|---|
A | 56 byte | Overflow del buffer iniziale |
B | 54 byte | Overflow di un secondo chunk heap |
Nulls | 63 byte | Allineamento della memoria della struttura |
LC_ALL | 212 byte | Controllo del layout dell'heap tramite variabile d'ambiente |