
KO: Es un proyecto de reproducción de laboratorio de una vulnerabilidad que bypasea el plugin de autorización (AuthZ) de Docker (Moby) utilizando un cuerpo de solicitud de más de 1MB. EN: Una reproducción de laboratorio de una vulnerabilidad que bypasea los plugins de autorización (AuthZ) de Docker (Moby) usando un cuerpo de solicitud sobredimensionado (>1MB).
| Elemento | Valor |
|---|---|
| CVE | CVE-2026-34040 |
| CVSS 3.1 | 8.8 (Alto) — CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H |
| CWE | CWE-288 (Omisión de autenticación mediante una ruta o canal alternativo), CWE-863 (Autorización incorrecta) |
| Afectados | moby/moby < 29.3.1, docker/docker < 29.3.1, moby/moby/v2 < 2.0.0-beta.8 |
| Corregido en | 29.3.1, 2.0.0-beta.8 |
| Causa raíz | Corrección incompleta de CVE-2024-41110 |
| Commit del parche | moby/moby@e89edb1 |
KO: El vector CVSS oficial es
AV:L(Local). Es decir, el escenario evaluado es un usuario con bajos privilegios que tiene acceso local a la API de Docker (normalmente/var/run/docker.sock). Este PoC utiliza únicamente el socket UNIX local. EN: El vector CVSS oficial esAV:L(Local). El escenario evaluado es un usuario con bajos privilegios con acceso local a la API de Docker (normalmente/var/run/docker.sock). Este PoC utiliza solo el socket UNIX local.
KO:
- La creación de un contenedor privilegiado con una solicitud de tamaño normal es bloqueada por el plugin AuthZ (HTTP 403).
- La misma solicitud con un relleno de más de 1MB bypasea la comprobación de AuthZ.
- La solicitud bypaseada llega al daemon de Docker y crea un contenedor privilegiado.
- Con la combinación de privilegiado + bind mount del host, se puede demostrar la lectura de archivos del host y la ejecución de comandos en el host.
EN:
- Una solicitud de creación de contenedor privilegiado de tamaño normal es bloqueada por el plugin AuthZ (HTTP 403).
- La misma solicitud con relleno de más de 1MB bypasea la comprobación de AuthZ.
- La solicitud bypaseada llega al daemon de Docker y crea un contenedor privilegiado.
- Con privilegiado + bind mount del host, se puede demostrar la lectura de archivos del host y la ejecución de comandos en el host.
KO: Este CVE en sí no lee
/etc/shadowni realiza RCE directamente. La esencia de la vulnerabilidad es el bypass de una solicitud a la API de Docker que AuthZ debería bloquear; los pasos posteriores (lectura de archivos, chroot, ejecución de comandos) son demostraciones de impacto que abusan de las funciones normales de Docker/Linux. EN: El CVE en sí no lee/etc/shadowni realiza RCE directamente. La vulnerabilidad es el bypass de una solicitud a la API de Docker que AuthZ debería bloquear; los pasos posteriores (lectura de archivos, chroot, ejecución de comandos) son demos de impacto que abusan de las características normales de Docker/Linux.
.
├── 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: Para que este PoC funcione de manera significativa, se requieren todas las condiciones siguientes. EN: Todo lo siguiente es necesario para que este PoC tenga sentido.
# 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
Resultado esperado en un objetivo vulnerable:
small request -> HTTP 403 (AuthZ blocks)
oversized request -> HTTP 201 or HTTP 404 (AuthZ bypassed; daemon processed it)
KO: Un
404 No such imagetambién es evidencia de bypass: significa que AuthZ no lo bloqueó (403) y que llegó a la fase de búsqueda de imágenes del daemon de Docker. Para reducir la confusión en una presentación/demo, haga pull dealpinede antemano. EN: Un404 No such imagesigue siendo evidencia de bypass: la solicitud pasó AuthZ (no 403) y llegó a la búsqueda de imágenes del daemon. Haga pull dealpinede antemano para evitar confusiones en una demo.
Consulte docs/usage.md para ver el uso completo.
KO: Úselo solo en un laboratorio aislado que sea de su propiedad o para el que tenga autorización explícita para realizar pruebas. No lo ejecute contra APIs de Docker remotas, servidores de terceros, entornos de producción ni endpoints de Docker expuestos a Internet. Los modos de demostración de impacto (
rce-proof,host-command,reverse-shell-local) requieren una bandera de confirmación explícita. EN: Úselo solo en un laboratorio aislado que sea de su propiedad o para el que tenga autorización explícita para hacer pruebas. No lo ejecute contra APIs de Docker remotas, servidores de terceros, producción ni endpoints de Docker expuestos a Internet. Los modos de demo de impacto (rce-proof,host-command,reverse-shell-local) requieren una bandera de confirmación explícita.
Consulte docs/references.md.
| Condición | Requerido | Motivo |
|---|
Acceso local a la API de Docker (/var/run/docker.sock) | Sí | El PoC envía solicitudes al socket |
| Plugin AuthZ habilitado con una política que inspecciona el cuerpo | Sí | El objetivo del bypass es la comprobación de AuthZ |
| Docker/Moby < 29.3.1 | Sí | Las versiones parcheadas rechazan los cuerpos sobredimensionados |
Imagen alpine presente localmente | Recomendado | De lo contrario, create devuelve 404 No such image |