đ 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/createnormalement 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 :
- Injection de prompt via un dĂ©pĂŽt malveillant â exĂ©cution de code dans le sandbox
- Exploitation de CVE-2026-34040 â crĂ©ation d’un conteneur privilĂ©giĂ© avec montage de l’hĂŽte
- 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