Skip to content

Back to the catalog

Markakd/Container_escape
github.comrepo

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.

TL;DR Working Linux kernel PoCs (CVE-2026-52910, CVE-2026-80521) for container escape, with a QEMU/Docker disposable-VM harness to run them safely.
Document

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:

make

Build 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.sh
UBUNTU_VERSION=26.04 \
VM_EXPECTED_KERNEL=7.0.0-31-generic \
./vm/build_image.sh

Run 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/poc
UBUNTU_VERSION=26.04 \
VM_EXPECTED_KERNEL=7.0.0-31-generic \
./vm/run_container.sh ./pocs/CVE-2026-80521/poc

To inspect without executing, mount a binary and get a shell instead of running it:

./vm/run_container.sh --shell ./path/to/binary

Each 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.

Technologies named here

Techniques named here

  • Container escape via Linux kernel exploitation
  • AF_UNIX vulnerability exploitation