CVE-2021-3156 — Baron Samedit
Overflow del Buffer Basato su Heap in sudo → Escalation Locale dei Privilegi
Dipartimento di Cybersecurity ITSOLERA | Tirocinio Red Team 2026
██████╗ █████╗ ██████╗ ██████╗ ███╗ ██╗ ███████╗ █████╗ ███╗ ███╗███████╗██████╗ ██╗████████╗
██╔══██╗██╔══██╗██╔══██╗██╔═══██╗████╗ ██║ ██╔════╝██╔══██╗████╗ ████║██╔════╝██╔══██╗██║╚══██╔══╝
██████╔╝███████║██████╔╝██║ ██║██╔██╗ ██║ ███████╗███████║██╔████╔██║█████╗ ██║ ██║██║ ██║
██╔══██╗██╔══██╗██╔══██╗██║ ██║██║╚██╗██║ ╚════██║██╔══██║██║╚██╔╝██║██╔══╝ ██║ ██║██║ ██║
██████╔╝██║ ██║██║ ██║╚██████╔╝██║ ╚████║ ███████║██║ ██║██║ ╚═╝ ██║███████╗██████╔╝██║ ██║
╚═════╝ ╚═╝ ╚═╝╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═══╝ ╚══════╝╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝╚═════╝ ╚═╝ ╚═╝
⚠️ SOLO PER USO DIDATTICO / LABORATORIO ISOLATO
Tutti i test devono essere eseguiti esclusivamente all'interno del container Docker di laboratorio.
Non eseguire mai su sistemi reali, di produzione o condivisi.
Indice dei Contenuti
- Panoramica della CVE
- Cosa Rende Speciale Questa CVE
- Struttura del Progetto
- Risultati del Team
- Avvio Rapido
- Come Funziona l'Exploit
- Test Canary della Vulnerabilità
- Utilizzo di exploit.py
- Reset e Snapshot del Lab
- Confronto Patchato vs Vulnerabile
- Riferimenti
Panoramica della CVE
| Proprietà | Valore |
|---|
| ID CVE | CVE-2021-3156 |
| Soprannome | Baron Samedit |
| Tipo | Overflow del buffer basato su heap → Escalation locale dei privilegi |
| Componente | sudo — utilità di privilegio Linux (set_cmnd() in src/sudo.c) |
| Punteggio CVSS v3 | 7.8 Alto |
| Vettore | CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H |
| Versioni vulnerabili | sudo 1.8.2 – 1.8.31p2 e 1.9.0 – 1.9.5p1 |
| Versioni patchate | sudo 1.9.5p2 (branch 1.9) / sudo 1.8.32 (branch 1.8) |
| Versione target del lab | sudo 1.8.31 su Ubuntu 20.04 |
| Patch KB / Advisory | SA: https://www.sudo.ws/security/advisories/unescape_overflow/ |
| Scoperta da | Qualys Research Team |
| Divulgata | 2021-01-26 |
| In circolazione dal (codice) | ~2011-07-09 (sudo 1.8.2) — ~10 anni non rilevata |
| Autenticazione richiesta | Solo utente locale — NESSUNA autorizzazione sudo necessaria |
Cosa Rende Speciale Questa CVE
| Proprietà | CVE-2021-3156 | LPE sudo tipica |
|---|
| Richiede voce sudoers | ❌ No | ✅ Sì |
| Richiede appartenenza al gruppo sudo | ❌ No | ✅ Sì |
| Richiede accesso sudo precedente | ❌ No | ✅ Sì |
| Funziona da account utente appena creato | ✅ Sì | ❌ No |
| Sfrutta il sistema dei permessi | ❌ Lo bypassa completamente | ✅ Ne abusa |
| Superficie d'attacco | Parser degli argomenti (pre-autenticazione) | Controllo dei permessi |
Concetto chiave: l'overflow avviene in set_cmnd() — la funzione che
analizza gli argomenti — che viene eseguita prima che sudo consulti /etc/sudoers.
Un account creato 10 secondi fa con zero permessi può sfruttare questa vulnerabilità.
Struttura del Progetto
CVE-2021-3156-Project/
│
├── README.md ← you are here
│
├── lab/ ← Member 1: Lab Environment
│ ├── Dockerfile ← Ubuntu 20.04 + sudo 1.8.31 (pinned)
│ ├── docker-compose.yml ← vulnerable target + patched reference
│ ├── evidence_helper.sh ← pre/post-exploit state capture
│ ├── SETUP.md ← step-by-step VM/Docker guide
│ └── config_notes.md ← CVE conditions & container details
│
├── exploit/ ← Member 2: Exploit Development
│ ├── exploit.py ← Python LPE framework + canary test
│ └── payloads.txt ← heap overflow research notes
│
├── docs/ ← Member 3: Research & Documentation
│ ├── root_cause_analysis.md ← set_cmnd() deep dive + off-by-one
│ ├── references.md ← all sources, PoCs, CWE mapping
│ └── mitigation.md ← sudo upgrade + hardening checklist
│
├── proof/ ← Member 4: Evidence Collection
│ ├── screenshots/ ← exploitation screenshots
│ └── terminal_logs.txt ← command output template + logs
│
└── report/
└── CVE-2021-3156_Report.docx ← Member 4: Final professional report
Risultati del Team
Membro 1 — Ambiente di Laboratorio e Verifica della CVE
| File | Descrizione |
|---|
lab/Dockerfile | Ubuntu 20.04 con sudo 1.8.31 fissato (vulnerabile); Python 3 installato; account labuser SENZA accesso sudo |
lab/docker-compose.yml | Orchestra il target vulnerabile + container di riferimento Ubuntu 22.04 patchato |
lab/evidence_helper.sh | Script Bash per acquisire lo stato del sistema (utente, versione sudo, canary) prima/dopo l'exploit |
lab/SETUP.md | Passo dopo passo: build → avvio → accesso → verifica versione sudo → esecuzione canary → snapshot |
lab/config_notes.md | Spiega perché non è necessaria alcuna configurazione errata, impostazioni di sicurezza Docker, riferimento credenziali |
Membro 2 — Sviluppo dell'Exploit (Script PoC)
| File | Descrizione |
|---|
exploit/exploit.py | Framework Python completo: check_platform(), check_sudo_version(), run_canary_test(), get_system_info() + tre stub TODO dell'exploit (select_heap_strategy, build_overflow_argument, trigger_overflow_and_escalate) con riferimenti dettagliati ai PoC di blasty/worawit |
exploit/payloads.txt | Concetti sull'overflow dell'heap, equivalente COMPRESSION_TRANSFORM (struttura degli argomenti), tre strategie sull'heap, template di log dei tentativi falliti, firme di rilevamento |
Nota: il codice funzionante dell'exploit kernel/heap non è incluso per linee guida etiche.
Gli stub TODO di exploit.py fanno riferimento a https://github.com/blasty/CVE-2021-3156
e a https://github.com/worawit/CVE-2021-3156 come PoC pubblici autorevoli
da studiare e integrare per il vostro team.
Membro 3 — Analisi delle Cause Profonde e Ricerca
| File | Descrizione |
|---|
docs/root_cause_analysis.md | Dettagliato: discrepanza tra dimensione e copia in set_cmnd(), off-by-one con esempi di codice, diff della patch, catena dell'exploit, CVSS 7.8 metrica per metrica, cronologia di 10 anni, tabella dell'impatto sulle distribuzioni |
docs/references.md | Advisory Qualys, MITRE, NVD, progetto sudo, PoC blasty, PoC worawit, ExploitDB, GTFOBins, mappatura CWE |
docs/mitigation.md | apt-get install --only-upgrade sudo, canary di verifica, hardening AppArmor, monitoraggio auditd, tabella di hardening |
Membro 4 — Raccolta delle Prove, Report e Integrazione
| File | Descrizione |
|---|
proof/terminal_logs.txt | Template per la raccolta delle prove (da compilare con l'output reale del lab) |
proof/screenshots/ | Directory per i 7 screenshot richiesti |
report/CVE-2021-3156_Report.docx | Report professionale in 12 sezioni: copertina, sommario esecutivo, descrizione della CVE, analisi delle cause profonde, dettaglio CVSS, fasi di sfruttamento, spiegazione del codice, checklist delle prove, mitigazione, cronologia, riferimenti, disclaimer |
Avvio Rapido
1. Build e Avvio del Lab
cd CVE-2021-3156-Project/lab/
# Build the vulnerable image (downloads Ubuntu 20.04, pins sudo 1.8.31)
docker compose build
# Start both containers
docker compose up -d
# Confirm containers are running
docker compose ps
Atteso:
NAME STATUS
baron_samedit_target running
baron_samedit_patched running