
KO: Ein Projekt zur Reproduktion einer Schwachstelle für Übungszwecke, die die Autorisierungs-(AuthZ)-Plugins von Docker(Moby) mithilfe eines über 1 MB großen Anforderungsrumpfs umgeht. EN: Eine Laborreproduktion einer Schwachstelle, die Docker (Moby)-Autorisierungs-(AuthZ)-Plugins mithilfe eines übermäßig großen (>1 MB) Anforderungsrumpfs umgeht.
| Punkt | Wert |
|---|---|
| CVE | CVE-2026-34040 |
| CVSS 3.1 | 8.8 (Hoch) — CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H |
| CWE | CWE-288 (Authentifizierungsumgehung über einen alternativen Pfad oder Kanal), CWE-863 (Fehlerhafte Autorisierung) |
| Betroffen | moby/moby < 29.3.1, docker/docker < 29.3.1, moby/moby/v2 < 2.0.0-beta.8 |
| Behoben in | 29.3.1, 2.0.0-beta.8 |
| Grundursache | Unvollständiger Fix für CVE-2024-41110 |
| Patch-Commit | moby/moby@e89edb1 |
KO: Der offizielle CVSS-Vektor ist
AV:L(lokal). Das bewertete Szenario ist ein Benutzer mit niedrigen Rechten und lokalem Docker-API-Zugriff (in der Regel/var/run/docker.sock). Dieses PoC verwendet ausschließlich den lokalen UNIX-Socket. EN: Der offizielle CVSS-Vektor istAV:L(lokal). Das bewertete Szenario ist ein Benutzer mit niedrigen Rechten und lokalem Docker-API-Zugriff (typischerweise/var/run/docker.sock). Dieses PoC verwendet ausschließlich den lokalen UNIX-Socket.
KO:
- Das Erstellen eines privilegierten Containers mit einer normal großen Anforderung wird vom AuthZ-Plugin blockiert (HTTP 403).
- Dieselbe Anforderung mit einem Padding über 1 MB umgeht die AuthZ-Prüfung.
- Die umgangene Anforderung erreicht die Verarbeitungsstufe des Docker-Daemons und erstellt einen privilegierten Container.
- Mit der Kombination aus privilegiertem Container und Host-Bind-Mount können das Lesen von Host-Dateien und die Ausführung von Host-Befehlen demonstriert werden.
EN:
- Eine normal große Anforderung zum Erstellen eines privilegierten Containers wird vom AuthZ-Plugin blockiert (HTTP 403).
- Dieselbe Anforderung, die über 1 MB aufgefüllt wird, umgeht die AuthZ-Prüfung.
- Die umgangene Anforderung erreicht den Docker-Daemon und erstellt einen privilegierten Container.
- Mit privilegiertem Container + Host-Bind-Mount können das Lesen von Host-Dateien und die Ausführung von Host-Befehlen demonstriert werden.
KO: Diese CVE selbst liest
/etc/shadownicht direkt und führt kein RCE aus. Das Wesen der Schwachstelle ist die Umgehung einer Docker-API-Anforderung, die AuthZ blockieren sollte; die späteren Schritte (Dateilese, chroot, Befehlsausführung) sind Auswirkungs-Demos, die normale Docker/Linux-Funktionen missbrauchen. EN: Die CVE selbst liest/etc/shadownicht und führt kein RCE direkt aus. Die Schwachstelle ist die Umgehung einer Docker-API-Anforderung, die AuthZ blockieren sollte; die späteren Schritte (Dateilese, chroot, Befehlsausführung) sind Auswirkungs-Demos, die normale Docker/Linux-Funktionen missbrauchen.
.
├── README.md
├── poc.py # Working PoC (local UNIX socket only)
├── requirements.txt # Python standard library only
├── LICENSE
├── lab/
│ ├── authz.rego # OPA policy: blocks privileged + host-root bind
│ └── daemon.json # Registers the AuthZ plugin
└── docs/
├── concepts.md # 개념 / Concepts
├── lab-setup.md # 환경 구성 / Lab setup
├── how-it-works.md # 동작 원리 / How it works (source-level)
├── usage.md # 사용법 / Usage
├── troubleshooting.md # 문제 해결 / Troubleshooting
└── references.md # 참고 / References
KO: Damit dieses PoC sinnvoll funktioniert, müssen alle folgenden Bedingungen erfüllt sein. EN: Alle folgenden Bedingungen sind erforderlich, damit dieses PoC sinnvoll ist.
# 1) Pull the image used by the PoC
sudo docker pull alpine
# 2) Run the non-destructive bypass check
sudo python3 poc.py --mode check
Erwartetes Ergebnis auf einem verwundbaren Ziel:
small request -> HTTP 403 (AuthZ blocks)
oversized request -> HTTP 201 or HTTP 404 (AuthZ bypassed; daemon processed it)
KO: Eine
404 No such imageist ebenfalls ein Beweis für die Umgehung – die Anforderung hat AuthZ passiert (nicht 403) und die Bildsuche des Docker-Daemons erreicht. Ziehen Siealpinevorher, um Verwirrung in einer Demo zu vermeiden. EN: Eine404 No such imageist dennoch ein Beweis für die Umgehung – die Anforderung hat AuthZ passiert (nicht 403) und die Bildsuche des Daemons erreicht. Ziehen Siealpinevorab, um Verwirrung in einer Demo zu vermeiden.
Vollständige Nutzung siehe docs/usage.md.
KO: Verwenden Sie dies nur in einer isolierten Übungsumgebung, die Ihnen gehört oder für die Sie ausdrücklich autorisiert sind. Führen Sie dies nicht gegen entfernte Docker-APIs, Drittanbieter-Server, Produktionsumgebungen oder im Internet exponierte Docker-Endpunkte aus. Die Auswirkungs-Demo-Modi (
rce-proof,host-command,reverse-shell-local) erfordern ein explizites Bestätigungsflag. EN: Verwenden Sie dies nur in einem isolierten Labor, das Ihnen gehört oder für das Sie ausdrücklich zum Testen autorisiert sind. Führen Sie es nicht gegen entfernte Docker-APIs, Drittanbieter-Server, Produktionsumgebungen oder im Internet exponierte Docker-Endpunkte aus. Die Auswirkungs-Demo-Modi (rce-proof,host-command,reverse-shell-local) erfordern ein explizites Bestätigungsflag.
Siehe docs/references.md.
| Bedingung | Erforderlich | Grund |
|---|
Lokaler Docker-API-Zugriff (/var/run/docker.sock) | Ja | Das PoC sendet Anforderungen an den Socket |
| AuthZ-Plugin mit einer Richtlinie aktiviert, die den Anforderungsrumpf prüft | Ja | Das Ziel der Umgehung ist die AuthZ-Prüfung |
| Docker/Moby < 29.3.1 | Ja | Gepatchte Versionen lehnen übermäßig große Anforderungsrümpfe ab |
alpine-Image lokal vorhanden | Empfohlen | Andernfalls gibt die Erstellung 404 No such image zurück |