Markakd/Container_escape
A GitHub repository hosting target-specific proof-of-concept exploits for two Linux kernel vulnerabilities, CVE-2026-52910 and CVE-2026-80521 (the latter an AF_UNIX kernel bug also documented in a kernelCTF LTS exploit-chain submission), both usable to break out of container isolation. The project ships a QEMU/Docker-based disposable VM builder (pinned to specific Ubuntu cloud images and kernel versions) so the destructive PoCs can be compiled and detonated only inside throwaway guests rather than on real hosts.
What it is
Markakd/Container_escape is a GitHub repo with runnable proof-of-concept exploits for two specific target configurations: CVE-2026-52910 on Ubuntu 24.04 (kernel 6.8.0-139-generic) and CVE-2026-80521 on Ubuntu 26.04 (kernel 7.0.0-31-generic). The repo also links two external writeups: "Containers Are No Longer a Security Boundary" and a kernelCTF CVE-2026-80521_lts exploit-chain submission.
Preconditions / Affected
Each PoC is built for one exact kernel build and will not transfer to other kernels. CVE-2026-52910 requires Ubuntu 24.04 / kernel 6.8.0-139-generic; CVE-2026-80521 requires Ubuntu 26.04 / kernel 7.0.0-31-generic. Build tooling requires a C compiler, GNU Make, and static libc dev files; the VM tooling requires QEMU, qemu-img, curl, OpenSSH, xorriso, and sha256sum.
What to do
Compile with the default static x86-64 build:
makeBuild the matching disposable VM per target (cloud image URLs are pinned in vm/config.env; the build aborts if provisioning doesn't yield the expected kernel):
UBUNTU_VERSION=24.04 \
VM_EXPECTED_KERNEL=6.8.0-139-generic \
./vm/build_image.shUBUNTU_VERSION=26.04 \
VM_EXPECTED_KERNEL=7.0.0-31-generic \
./vm/build_image.shRun a PoC only inside its matching VM, never on a real host:
UBUNTU_VERSION=24.04 \
VM_EXPECTED_KERNEL=6.8.0-139-generic \
VM_PAYLOAD_CONSOLE=1 \
./vm/run_container.sh ./pocs/CVE-2026-52910/pocUBUNTU_VERSION=26.04 \
VM_EXPECTED_KERNEL=7.0.0-31-generic \
./vm/run_container.sh ./pocs/CVE-2026-80521/pocTo inspect without executing, mount a binary and get a shell instead of running it:
./vm/run_container.sh --shell ./path/to/binaryEach run creates a temporary overlay, starts a fresh Docker container in the guest, forwards terminal I/O, and tears down the overlay afterward — so no run leaves state behind in the golden image.
Caveats
The cloud-image build is a checksum-verified pin (published Ubuntu image checksum is checked before use), but overriding UBUNTU_RELEASE_URL, UBUNTU_IMAGE_URL, or UBUNTU_SUMS_URL to use a different release means the kernel-match guarantee the build script enforces no longer applies. The repo explicitly excludes compiled binaries, VM disk images, SSH keys, logs, and kernel artifacts from version control, so none of that is distributed — only source and build scripts are.
CVEs named here
Technologies named here
Techniques named here
- Container escape via Linux kernel exploitation
- AF_UNIX vulnerability exploitation
Related in Offensive Security