CVE-2024-21626 (Leaky Vessels) → container escape
Outdated runc lets a malicious image escape during 'docker build' or 'docker run' via a leaked file descriptor pointing at the host filesystem.
§ Context
Assumed environment: target runs runc < 1.1.12 (or BuildKit < 0.12.5). Attacker can push a custom image into the build / runtime pipeline.
§ Steps
- 01Identify vulnerable runc versionReconnaissanceW-RECON-FINGERPRINT— Tech Stack Fingerprinting
- 02File descriptor points at host rootPrivilege EscalationK-PRIV-CONTAINER— Privileged Container Escape
- 03Read/write host filesystemPrivilege EscalationK-HOSTPATH-MOUNT— hostPath Volume Mount
- 04Craft image with WORKDIR /proc/self/fd/<N>Privilege EscalationK-CVE-2024-21626— runc CVE-2024-21626 (Leaky Vessels)
- 05Trigger image build / runPersistenceK-IMAGE-BACKDOOR— Backdoored Container Image
§ Frequently asked
- What is the "CVE-2024-21626 (Leaky Vessels) → container escape" attack path?
- Outdated runc lets a malicious image escape during 'docker build' or 'docker run' via a leaked file descriptor pointing at the host filesystem. It chains 5 steps drawn from real-world offensive-security techniques.
- What starting position does this attack require?
- The first step is Identify vulnerable runc version (W-RECON-FINGERPRINT) — a reconnaissance primitive. Assumed environment: target runs runc < 1.
- What is the final impact of this kill-chain?
- The final step lands on Trigger image build / run (K-IMAGE-BACKDOOR), which falls under Persistence. From here, an operator typically pivots into post-exploitation or maintains persistence.
- How can defenders detect or prevent this attack?
- Detection and prevention vary per step. Refer to each linked MITRE ATT&CK entry under "References" — every technique on that page lists defensive controls, detection telemetry, and known threat-actor usage.
§ Related dossiers
- Shared techniques2
ArgoCD weak RBAC → cluster admin via custom Application
ArgoCD installed with the default admin user and broad RBAC. Attacker creates an Application pointing at attacker manifests — ArgoCD syncs them with cluster-admin.
- Shared techniques2
Privileged pod escape → cluster admin
GenericWrite on a Deployment in the kube-system namespace lets you launch a privileged pod; the pod mounts the host filesystem and steals the kubeconfig of cluster-admin.
- Shared techniques2
Docker socket exposed in pod → host root
A workload mounts /var/run/docker.sock for convenience; spawn a container with the host root mounted, then chroot in for root on the node.