
Análisis de explotación y mitigación del desbordamiento de búfer basado en montón CVE-2021-3156 en sudo
CVE-2021-3156, conocido como Baron Samedit, es una vulnerabilidad de desbordamiento de búfer basado en montículo en el programa sudo. Permite que cualquier usuario local sin privilegios obtenga privilegios de root en sistemas vulnerables sin autenticación.
Este proyecto documenta la explotación y mitigación completas de esta vulnerabilidad como parte del curso Vulnerabilidades de Software: Explotación y Mitigación en la Universidad de Luxemburgo.
OS: Ubuntu 20.04.1
sudo version: 1.8.31-1ubuntu1 (vulnerable)
libc version: 2.31
User: Non-root account
Para reproducir el estado vulnerable:
sudo apt install sudo=1.8.31-1ubuntu1
La vulnerabilidad se desencadena cuando sudo se ejecuta en modo sudoedit con argumentos de línea de comandos cuidadosamente elaborados que desbordan los búferes internos del montículo.
El exploit utiliza cuatro parámetros críticos ajustados con precisión mediante análisis de memoria:
exploit_launcher.c — Exploit principalDesencadena la vulnerabilidad en 5 pasos:
LC_ALL para controlar el diseño de la memoria del montículosudoedit con los argumentos y el entorno maliciososexploit_payload.c — Payload maliciosoSe ejecuta automáticamente cuando el exploit tiene éxito mediante la función _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
✅ Escalada exitosa de un usuario sin privilegios a root.
Actualice sudo a la versión parcheada:
sudo apt install sudo=1.8.31-1ubuntu1.5
Después de la actualización, el mismo exploit no logró ejecutarse y no se otorgaron privilegios de root — lo que confirma que el parche es efectivo.
Conclusión clave: mantener actualizadas las utilidades del sistema, como
sudo, es fundamental para prevenir ataques de escalada de privilegios.
├── 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
| Propiedad | Detalles |
|---|
| ID de CVE | CVE-2021-3156 |
| Apodo | Baron Samedit |
| Tipo | Desbordamiento de búfer basado en montículo |
| Componente | sudo (modo sudoedit) |
| Impacto | Escalada local de privilegios a root |
| Versiones afectadas | sudo ≤ 1.8.31 (Ubuntu), ≤ 1.9.5p1 (otros) |
| Versión parcheada | sudo 1.8.31-1ubuntu1.5 |
| Puntuación CVSS | 7.8 (Alta) |
| Parámetro | Tamaño | Propósito |
|---|
A | 56 bytes | Desbordar el búfer inicial |
B | 54 bytes | Desbordar un segundo bloque del montículo |
Nulls | 63 bytes | Alinear la memoria de la estructura |
LC_ALL | 212 bytes | Controlar el diseño del montículo mediante una variable de entorno |