🔍 Contexte

PubliĂ© le 7 avril 2026 par Vladimir Tokarev (Cyera Research Labs), cet article prĂ©sente la dĂ©couverte et l’analyse technique de CVE-2026-34040 (CVSS 8.8 High), une vulnĂ©rabilitĂ© d’autorisation dans Docker Engine affectant les versions antĂ©rieures Ă  29.3.1.

🐛 Description de la vulnĂ©rabilitĂ©

La vulnĂ©rabilitĂ© rĂ©side dans le middleware AuthZ de Docker Engine. Lorsqu’un corps de requĂȘte HTTP dĂ©passe 1 Mo (maxBodySize = 1 048 576 octets), le middleware abandonne silencieusement le corps avant de le transmettre au plugin d’autorisation. Le daemon Docker, lui, traite la requĂȘte complĂšte normalement.

ConcrĂštement :

  • Le plugin AuthZ reçoit RequestBody: nil
  • Ne pouvant rien inspecter, il autorise la requĂȘte
  • Le daemon crĂ©e le conteneur avec les paramĂštres dangereux (ex: Privileged: true, montage de /:/host)

Cette vulnérabilité est une correction incomplÚte de CVE-2024-41110 (CVSS 10.0, juillet 2024), qui traitait les corps de longueur zéro mais pas les corps surdimensionnés. Le comportement de troncature existe depuis Docker Engine 1.10 (février 2016), soit environ 10 ans.

đŸ’„ Exploitation

L’exploitation est triviale :

  • Prendre une requĂȘte POST /containers/create normalement bloquĂ©e
  • Ajouter un champ JSON de remplissage (_padding) pour dĂ©passer 1 Mo
  • Envoyer la requĂȘte — le plugin AuthZ voit un corps vide et autorise

Tous les plugins AuthZ sont affectĂ©s : OPA, Prisma Cloud, Casbin, implĂ©mentations custom. La vulnĂ©rabilitĂ© s’Ă©tend Ă  d’autres endpoints : /exec/create, /services/create, /containers/{id}/update.

🎯 Politiques contournĂ©es

  • Mode privilĂ©giĂ© (Privileged: true)
  • Montages du systĂšme de fichiers hĂŽte (Binds: ["/:/host"])
  • CapacitĂ©s dangereuses (CapAdd: ["SYS_ADMIN"])
  • Namespace PID hĂŽte, rĂ©seau hĂŽte
  • Profils Seccomp/AppArmor dĂ©sactivĂ©s
  • AccĂšs aux pĂ©riphĂ©riques, allowlist d’images, restrictions de commandes

đŸ€– ScĂ©nario d’attaque via agent IA

L’article dĂ©crit une chaĂźne d’attaque complĂšte impliquant un agent IA (OpenClaw) dans un sandbox Docker :

  1. Injection de prompt via un dĂ©pĂŽt malveillant → exĂ©cution de code dans le sandbox
  2. Exploitation de CVE-2026-34040 → crĂ©ation d’un conteneur privilĂ©giĂ© avec montage de l’hĂŽte
  3. Exfiltration : credentials AWS (~/.aws/credentials), clés SSH, kubeconfig, tokens IMDS

L’article souligne Ă©galement qu’un agent IA pourrait dĂ©couvrir et exploiter cette vulnĂ©rabilitĂ© de maniĂšre autonome, sans intention malveillante, en cherchant Ă  contourner un refus d’autorisation lĂ©gitime.

đŸ› ïž Correction

Le correctif dans Docker Engine 29.3.1 :

  • Augmentation de maxBodySize Ă  4 Mo
  • Suppression de drainBody() (comportement de drop silencieux)
  • Comportement fail-closed : les requĂȘtes dĂ©passant 4 Mo sont rejetĂ©es avec une erreur

Une note signale un problÚme résiduel cÎté réponse (maxBufferSize de 64 Ko dans response.go) non corrigé dans ce commit.

📋 Type d’article

Publication de recherche en divulgation responsable, avec analyse technique approfondie, PoC, chaĂźne d’attaque, dĂ©tection et remĂ©diation.

🧠 TTPs et IOCs dĂ©tectĂ©s

TTP

  • T1059.006 — Command and Scripting Interpreter: Python (Execution)
  • T1610 — Deploy Container (Defense Evasion)
  • T1611 — Escape to Host (Privilege Escalation)
  • T1552.001 — Unsecured Credentials: Credentials In Files (Credential Access)
  • T1078 — Valid Accounts (Defense Evasion)

IOC

  • CVEs : CVE-2026-34040 — NVD · CIRCL
  • CVEs : CVE-2024-41110 — NVD · CIRCL
  • CVEs : CVE-2025-23266 — NVD · CIRCL
  • Fichiers : authz.go
  • Fichiers : poc.py
  • Fichiers : main.go
  • Chemins : /var/run/docker.sock
  • Chemins : /host/root/.aws/credentials
  • Chemins : /host/root/.ssh/id_rsa
  • Chemins : /host/root/.kube/config
  • Chemins : ~/.aws/credentials
  • Chemins : ~/.ssh/id_rsa
  • Chemins : ~/.kube/config

🟡 Indice de vĂ©rification factuelle : 50/100 (moyenne)

  • ⬜ cyera.com — source non rĂ©fĂ©rencĂ©e (0pts)
  • ✅ 45434 chars — texte complet (fulltext extrait) (15pts)
  • ✅ 13 IOCs (IPs/domaines/CVEs) (10pts)
  • ⬜ pas d’IOC vĂ©rifiĂ© (0pts)
  • ✅ 5 TTPs MITRE identifiĂ©es (15pts)
  • ✅ date extraite du HTML source (10pts)
  • ⬜ aucun acteur de menace nommĂ© (0pts)
  • ⬜ 0/3 CVE(s) confirmĂ©e(s) (0pts)

🔗 Source originale : https://www.cyera.com/research/one-megabyte-to-root-how-a-size-check-broke-dockers-last-line-of-defense