CVE-2021-3156 — Baron Samedit
Débordement de tampon dans le tas dans sudo → Élévation locale de privilèges
Département Cybersécurité ITSOLERA | Stage Red Team 2026
██████╗ █████╗ ██████╗ ██████╗ ███╗ ██╗ ███████╗ █████╗ ███╗ ███╗███████╗██████╗ ██╗████████╗
██╔══██╗██╔══██╗██╔══██╗██╔═══██╗████╗ ██║ ██╔════╝██╔══██╗████╗ ████║██╔════╝██╔══██╗██║╚══██╔══╝
██████╔╝███████║██████╔╝██║ ██║██╔██╗ ██║ ███████╗███████║██╔████╔██║█████╗ ██║ ██║██║ ██║
██╔══██╗██╔══██║██╔══██╗██║ ██║██║╚██╗██║ ╚════██║██╔══██║██║╚██╔╝██║██╔══╝ ██║ ██║██║ ██║
██████╔╝██║ ██║██║ ██║╚██████╔╝██║ ╚████║ ███████║██║ ██║██║ ╚═╝ ██║███████╗██████╔╝██║ ██║
╚═════╝ ╚═╝ ╚═╝╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═══╝ ╚══════╝╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝╚═════╝ ╚═╝ ╚═╝
⚠️ RÉSERVÉ À UN USAGE ÉDUCATIF / EN LABORATOIRE ISOLÉ
Tous les tests doivent être effectués exclusivement dans le conteneur Docker du laboratoire.
Ne jamais exécuter contre des systèmes réels, de production ou partagés.
Table des matières
- Aperçu du CVE
- Qu'est-ce qui rend ce CVE spécial
- Structure du projet
- Livrables de l'équipe
- Démarrage rapide
- Comment fonctionne l'exploit
- Test canari de vulnérabilité
- Utilisation d'exploit.py
- Réinitialisation et instantané du laboratoire
- Comparaison version corrigée vs vulnérable
- Références
Aperçu du CVE
| Propriété | Valeur |
|---|
| ID CVE | CVE-2021-3156 |
| Surnom | Baron Samedit |
| Type | Débordement de tampon dans le tas → Élévation locale de privilèges |
| Composant | sudo — utilitaire de privilèges Linux (set_cmnd() dans src/sudo.c) |
| Score CVSS v3 | 7.8 Élevé |
| Vecteur | CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H |
| Versions vulnérables | sudo 1.8.2 – 1.8.31p2 et 1.9.0 – 1.9.5p1 |
| Versions corrigées | sudo 1.9.5p2 (branche 1.9) / sudo 1.8.32 (branche 1.8) |
| Version cible du laboratoire | sudo 1.8.31 sur Ubuntu 20.04 |
| Correctif / Avis de sécurité | Avis de sécurité : https://www.sudo.ws/security/advisories/unescape_overflow/ |
| Découvert par | Qualys Research Team |
| Divulgué | 2021-01-26 |
| Exploité dans la nature (code) | ~2011-07-09 (sudo 1.8.2) — ~10 ans sans détection |
| Authentification requise | Utilisateur local uniquement — aucun privilège sudo requis |
Qu'est-ce qui rend ce CVE spécial
| Propriété | CVE-2021-3156 | LPE sudo classique |
|---|
| Nécessite une entrée sudoers | ❌ Non | ✅ Oui |
| Nécessite l'appartenance au groupe sudo | ❌ Non | ✅ Oui |
| Nécessite un accès sudo préalable | ❌ Non | ✅ Oui |
| Fonctionne depuis un tout nouveau compte utilisateur | ✅ Oui | ❌ Non |
| Exploite le système de permissions | ❌ Le contourne entièrement | ✅ En abuse |
| Surface d'attaque | Analyseur d'arguments (pré-authentification) | Vérification des permissions |
Point clé: Le débordement se produit dans set_cmnd() — la fonction qui analyse les arguments — qui s'exécute avant que sudo ne consulte /etc/sudoers. Un compte créé il y a 10 secondes avec zéro permission peut exploiter cette faille.
Structure du projet
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
Livrables de l'équipe
Membre 1 — Environnement de laboratoire et vérification du CVE
| Fichier | Description |
|---|
lab/Dockerfile | Ubuntu 20.04 avec sudo 1.8.31 épinglé (vulnérable) ; Python 3 installé ; compte labuser sans aucun accès sudo |
lab/docker-compose.yml | Orchestre la cible vulnérable + le conteneur de référence corrigé Ubuntu 22.04 |
lab/evidence_helper.sh | Script Bash pour capturer l'état du système (utilisateur, version de sudo, canari) avant/après l'exploit |
lab/SETUP.md | Étape par étape : construction → démarrage → entrée → vérification de la version de sudo → exécution du canari → instantané |
lab/config_notes.md | Explique pourquoi aucune mauvaise configuration n'est nécessaire, paramètres de sécurité Docker, référence des identifiants |
Membre 2 — Développement de l'exploit (script PoC)
| Fichier | Description |
|---|
exploit/exploit.py | Framework Python complet : check_platform(), check_sudo_version(), run_canary_test(), get_system_info() + trois stubs d'exploit TODO (select_heap_strategy, build_overflow_argument, trigger_overflow_and_escalate) avec des références détaillées aux PoCs de blasty/worawit |
exploit/payloads.txt | Concepts de débordement de tas, équivalent COMPRESSION_TRANSFORM (structure d'arguments), trois stratégies de tas, modèle de journal des tentatives échouées, signatures de détection |
Remarque: Le code fonctionnel d'exploit noyau/tas n'est pas inclus conformément aux directives éthiques.
Les stubs TODO de exploit.py référencent https://github.com/blasty/CVE-2021-3156
et https://github.com/worawit/CVE-2021-3156 comme PoCs publics de référence
que votre équipe doit étudier et intégrer.
Membre 3 — Analyse de la cause racine et recherche
| Fichier | Description |
|---|
docs/root_cause_analysis.md | Détaillé : inadéquation taille vs copie dans set_cmnd(), off-by-one avec exemples de code, diff du patch, chaîne d'exploitation, CVSS 7.8 métrique par métrique, chronologie de 10 ans, tableau d'impact des distributions |
docs/references.md | Avis Qualys, MITRE, NVD, projet sudo, PoC blasty, PoC worawit, ExploitDB, GTFOBins, mappage CWE |
docs/mitigation.md | apt-get install --only-upgrade sudo, canari de vérification, durcissement AppArmor, surveillance auditd, tableau de durcissement |
Membre 4 — Collecte de preuves, rapport et intégration
| Fichier | Description |
|---|
proof/terminal_logs.txt | Modèle de collecte de preuves (à remplir avec la sortie réelle du laboratoire) |
proof/screenshots/ | Répertoire pour les 7 captures d'écran requises |
report/CVE-2021-3156_Report.docx | Rapport professionnel en 12 sections : page de garde, résumé exécutif, description du CVE, analyse de la cause racine, détail CVSS, étapes d'exploitation, explication du code, liste de contrôle des preuves, mesures d'atténuation, chronologie, références, avertissement |
Démarrage rapide
1. Construire et démarrer le laboratoire
cd CVE-2021-3156-Project/lab/
# Build the vulnerable image (downloads Ubuntu 20.04, pins sudo 1.8.31)
docker compose build