
Análise de exploração e mitigação do estouro de buffer baseado em heap CVE-2021-3156 no sudo
CVE-2021-3156, conhecida como Baron Samedit, é uma vulnerabilidade de estouro de buffer baseado em heap no programa sudo. Ela permite que qualquer usuário local sem privilégios obtenha privilégios de root em sistemas vulneráveis sem autenticação.
Este projeto documenta a exploração e mitigação completas desta vulnerabilidade como parte do curso Software Vulnerabilities: Exploitation and Mitigation na University of Luxembourg.
OS: Ubuntu 20.04.1
sudo version: 1.8.31-1ubuntu1 (vulnerável)
libc version: 2.31
User: Conta sem privilégios de root
Para reproduzir o estado vulnerável:
sudo apt install sudo=1.8.31-1ubuntu1
A vulnerabilidade é acionada quando o sudo é executado no modo sudoedit com argumentos de linha de comando cuidadosamente elaborados que causam estouro nos buffers internos do heap.
O exploit utiliza quatro parâmetros críticos ajustados por meio de análise de memória:
exploit_launcher.c — Exploit principalAciona a vulnerabilidade em 5 etapas:
LC_ALL para controlar o layout da memória heapsudoedit com os argumentos e o ambiente maliciososexploit_payload.c — Payload maliciosoExecutado automaticamente quando o exploit é bem-sucedido por meio da função _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
✅ Escalação bem-sucedida de usuário sem privilégios para root.
Atualize o sudo para a versão corrigida:
sudo apt install sudo=1.8.31-1ubuntu1.5
Após a atualização, o mesmo exploit falhou ao ser executado e os privilégios de root não foram concedidos — confirmando que o patch é eficaz.
Conclusão importante: Manter utilitários do sistema como o
sudoatualizados é fundamental para prevenir ataques de escalação de privilégios.
├── exploit_launcher.c # Exploit principal que aciona o estouro de heap
├── exploit_payload.c # Payload malicioso que abre shell como root
├── libnss_X/ # Biblioteca maliciosa carregada durante a exploração
└── Makefile # Configuração de build
# Compilar
make
# Executar o exploit
./exploit_it
| Propriedade | Detalhes |
|---|
| ID CVE | CVE-2021-3156 |
| Apelido | Baron Samedit |
| Tipo | Estouro de buffer baseado em heap |
| Componente | sudo (modo sudoedit) |
| Impacto | Escalação local de privilégios para root |
| Versões afetadas | sudo ≤ 1.8.31 (Ubuntu), ≤ 1.9.5p1 (outras) |
| Versão corrigida | sudo 1.8.31-1ubuntu1.5 |
| Pontuação CVSS | 7.8 (Alta) |
| Parâmetro | Tamanho | Finalidade |
|---|
A | 56 bytes | Estourar o buffer inicial |
B | 54 bytes | Estourar um segundo chunk do heap |
Nulls | 63 bytes | Alinhamento da estrutura de memória |
LC_ALL | 212 bytes | Controlar o layout do heap via variável de ambiente |