CVE-2021-3156 — Baron Samedit
Heap-basierter Pufferüberlauf in sudo → Lokale Privilegienerweiterung
ITSOLERA-Abteilung für Cybersicherheit | Red-Team-Praktikum 2026
██████╗ █████╗ ██████╗ ██████╗ ███╗ ██╗ ███████╗ █████╗ ███╗ ███╗███████╗██████╗ ██╗████████╗
██╔══██╗██╔══██╗██╔══██╗██╔═══██╗████╗ ██║ ██╔════╝██╔══██╗████╗ ████║██╔════╝██╔══██╗██║╚══██╔══╝
██████╔╝███████║██████╔╝██║ ██║██╔██╗ ██║ ███████╗███████║██╔████╔██║█████╗ ██║ ██║██║ ██║
██╔══██╗██╔══██║██╔══██╗██║ ██║██║╚██╗██║ ╚════██║██╔══██║██║╚██╔╝██║██╔══╝ ██║ ██║██║ ██║
██████╔╝██║ ██║██║ ██║╚██████╔╝██║ ╚████║ ███████║██║ ██║██║ ╚═╝ ██║███████╗██████╔╝██║ ██║
╚═════╝ ╚═╝ ╚═╝╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═══╝ ╚══════╝╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝╚═════╝ ╚═╝ ╚═╝
⚠️ NUR FÜR BILDUNGSZWECKE / ISOLIERTE LABORNUTZUNG
Sämtliche Tests müssen ausschließlich im Docker-Labcontainer durchgeführt werden.
Niemals gegen reale, produktive oder gemeinsam genutzte Systeme ausführen.
Inhaltsverzeichnis
- CVE-Überblick
- Was diese CVE besonders macht
- Projektstruktur
- Team-Ergebnisse
- Schnellstart
- So funktioniert der Exploit
- Canary-Test der Schwachstelle
- Verwendung von exploit.py
- Labor-Reset & Snapshot
- Vergleich: Gepatcht vs. Verwundbar
- Referenzen
CVE-Überblick
| Eigenschaft | Wert |
|---|
| CVE ID | CVE-2021-3156 |
| Spitzname | Baron Samedit |
| Typ | Heap-basierter Pufferüberlauf → Lokale Privilegienerweiterung |
| Komponente | sudo — Linux-Privilegien-Dienstprogramm (set_cmnd() in src/sudo.c) |
| CVSS-v3-Score | 7.8 Hoch |
| Vektor | CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H |
| Verwundbare Versionen | sudo 1.8.2 – 1.8.31p2 und 1.9.0 – 1.9.5p1 |
| Gepatchte Versionen | sudo 1.9.5p2 (1.9-Zweig) / sudo 1.8.32 (1.8-Zweig) |
| Laborzielversion | sudo 1.8.31 auf Ubuntu 20.04 |
| Patch-KB / Advisory | SA: https://www.sudo.ws/security/advisories/unescape_overflow/ |
| Entdeckt von | Qualys Research Team |
| Offengelegt | 2021-01-26 |
| In freier Wildbahn seit (Code) | ~2011-07-09 (sudo 1.8.2) — ~10 Jahre unentdeckt |
| Authentifizierung erforderlich | Nur lokaler Benutzer — KEINE sudo-Berechtigungen erforderlich |
Was diese CVE besonders macht
| Eigenschaft | CVE-2021-3156 | Typische Sudo-LPE |
|---|
| Erfordert sudoers-Eintrag | ❌ Nein | ✅ Ja |
| Erfordert Mitgliedschaft in der sudo-Gruppe | ❌ Nein | ✅ Ja |
| Erfordert früheren sudo-Zugriff | ❌ Nein | ✅ Ja |
| Funktioniert mit brandneuem Benutzerkonto | ✅ Ja | ❌ Nein |
| Nutzt Berechtigungssystem aus | ❌ Umgeht es vollständig | ✅ Nutzt es aus |
| Angriffsfläche | Argumentparser (vor der Authentifizierung) | Berechtigungsprüfung |
Wichtige Erkenntnis: Der Überlauf tritt in set_cmnd() auf — der Funktion, die Argumente parst — die ausgeführt wird, bevor sudo jemals /etc/sudoers konsultiert. Ein Konto, das vor 10 Sekunden mit null Berechtigungen erstellt wurde, kann dies ausnutzen.
Projektstruktur
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
Team-Ergebnisse
Mitglied 1 — Laborumgebung & CVE-Verifizierung
| Datei | Beschreibung |
|---|
lab/Dockerfile | Ubuntu 20.04 mit festgepinntem sudo 1.8.31 (verwundbar); Python 3 installiert; labuser-Konto OHNE sudo-Zugriff |
lab/docker-compose.yml | Orchestriert das verwundbare Ziel + den gepatchten Ubuntu-22.04-Referenzcontainer |
lab/evidence_helper.sh | Bash-Skript zur Erfassung des Systemzustands (Benutzer, sudo-Version, Canary) vor/nach dem Exploit |
lab/SETUP.md | Schritt für Schritt: bauen → starten → betreten → sudo-Version prüfen → Canary ausführen → Snapshot |
lab/config_notes.md | Erklärt, warum keine Fehlkonfiguration nötig ist, Docker-Sicherheitseinstellungen, Referenz der Anmeldedaten |
Mitglied 2 — Exploit-Entwicklung (PoC-Skript)
| Datei | Beschreibung |
|---|
exploit/exploit.py | Vollständiges Python-Framework: check_platform(), check_sudo_version(), run_canary_test(), get_system_info() + drei Exploit-TODO-Stubs (select_heap_strategy, build_overflow_argument, trigger_overflow_and_escalate) mit detaillierten Verweisen auf die PoCs von blasty/worawit |
exploit/payloads.txt | Konzepte für Heap-Überläufe, COMPRESSION_TRANSFORM-Äquivalent (Argumentstruktur), drei Heap-Strategien, Vorlage für das Protokoll fehlgeschlagener Versuche, Erkennungssignaturen |
Hinweis: Arbeitsfähiger Kernel-/Heap-Exploit-Code ist gemäß ethischer Richtlinien nicht enthalten.
Die TODO-Stubs in exploit.py verweisen auf https://github.com/blasty/CVE-2021-3156
und https://github.com/worawit/CVE-2021-3156 als maßgebliche öffentliche PoCs,
damit Ihr Team sie studieren und integrieren kann.
Mitglied 3 — Ursachenanalyse & Recherche
| Datei | Beschreibung |
|---|
docs/root_cause_analysis.md | Detailliert: Größen-/Kopie-Abweichung in set_cmnd(), Off-by-one mit Codebeispielen, Patch-Diff, Exploit-Kette, CVSS 7.8 Metrik für Metrik, 10-Jahres-Zeitverlauf, Tabelle zu betroffenen Distributionen |
docs/references.md | Qualys-Advisory, MITRE, NVD, sudo-Projekt, blasty-PoC, worawit-PoC, ExploitDB, GTFOBins, CWE-Zuordnung |
docs/mitigation.md | apt-get install --only-upgrade sudo, Verifizierungs-Canary, AppArmor-Härtung, auditd-Überwachung, Härtungstabelle |
Mitglied 4 — Beweissammlung, Berichterstattung & Integration
| Datei | Beschreibung |
|---|
proof/terminal_logs.txt | Vorlage zur Beweissammlung (mit tatsächlicher Laborausgabe ausfüllen) |
proof/screenshots/ | Verzeichnis für 7 erforderliche Screenshots |
report/CVE-2021-3156_Report.docx | Professioneller Bericht mit 12 Abschnitten: Deckblatt, Executive Summary, CVE-Beschreibung, Ursachenanalyse, CVSS-Aufschlüsselung, Exploit-Schritte, Code-Erklärung, Beweis-Checkliste, Maßnahmen, Zeitverlauf, Referenzen, Haftungsausschluss |
Schnellstart
1. Labor bauen und starten
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
Erwartete Ausgabe:
NAME STATUS
baron_samedit_target running
baron_samedit_patched running
2. Verwundbaren Container betreten