
KASAN-सत्यापित प्रूफ-ऑफ-कॉन्सेप्ट जो CVE-2026-98432 का पुनरुत्पादन करता है, जो एक Linux कर्नेल IPv4 TCP inet_opt/ireq_opt यूज़-आफ्टर-फ़्री है, जिसमें क्रॉस-CPU रेस हार्नेस और फ़िक्स्ड-कर्नेल नियंत्रण शामिल है।
Linux कर्नेल IPv4 TCP inet_opt/ireq_opt यूज़-आफ्टर-फ़्री (CVSS 9.8)।
IPv4 हेडर विकल्पों वाले SYN के विकल्प अनुरोध सॉकेट पर सहेजे जाते हैं।
जब हैंडशेक पूरा होता है, तो tcp_v4_syn_recv_sock() वही बफ़र चाइल्ड सॉकेट को
पॉइंटर द्वारा सौंप देता है, कोई प्रतिलिपि नहीं। किसी अन्य CPU पर पुनःप्रेषित SYN
इसे tcp_v4_send_synack()/inet_csk_route_req() में पढ़ता है, जबकि चाइल्ड पहले ही
जा चुका होता है (inet_sock_destruct() ने इसे सादे kfree() से मुक्त कर दिया,
चाइल्ड सॉकेट में SOCK_RCU_FREE नहीं होता)। समाधान दो kfree_rcu() कॉल हैं,
जो 6.6.159 और संबंधित संस्करणों में आए। 4.4 से असुरक्षित।
लैब एक गेस्ट कर्नेल बूट करती है ताकि पैच किया गया होस्ट कर्नेल कभी लक्ष्य न बने:
make image
make kernel-amp kernel-fixed-amp
make rootfs
make test-det-vuln # KASAN: inet_csk_route_req में slab-use-after-free
make test-det-fixed # वही हमला, साफ़
phase-det क्रॉस-CPU पुनरुत्पादन है: CPU1 पर पिन किया गया dup-SYN फ़्लडर (अनुरोध
सॉकेट निर्माण + उसका टाइमर), CPU0 पर अंतिम ACK (चाइल्ड निर्माण), CPU3 पर सर्वर
accept+close (चाइल्ड विनाश)। RPS बंद, veth जोड़ी पर आक्रमणकारी/लक्ष्य netns,
पैकेट कच्चे Ethernet फ़्रेम के रूप में बाहर जाते हैं ताकि आक्रमणकारी का अपना
कर्नेल हैंडशेक को कभी RST न कर दे। -amp कर्नेल inet_csk_route_req के अंदर
ireq_opt लेने और उसे डीरेफ़रेंस करने के बीच 5ms देरी जोड़ते हैं (KCSAN-शैली
देरी इंजेक्शन, केवल इन पुनरुत्पादन कर्नेल में पुनरुत्पादकता के लिए उपयोग किया
गया, स्रोत में स्पष्ट रूप से चिह्नित)।
poc/poc.c में timerace, race, migrate और mptcp वेरिएंट भी हैं।
evidence/REPRODUCED-UAF-first-splat.txt — एक रन में 12 स्प्लैट, पहला:
[ 9.076253] BUG: KASAN: slab-use-after-free in inet_csk_route_req+0x94/0x370
[ 9.076586] Read of size 1 at addr ffff888002ddaa41 by task poc/85
...
tcp_v4_send_synack+0x212/0x240
tcp_rtx_synack+0xd5/0x280
inet_rtx_syn_ack+0x38/0x60
tcp_check_req+0xb8e/0xde0
tcp_v4_rcv+0x1131/0x15e0
...
Allocated by task 79: tcp_v4_route_req+0x116/0x1b0 (options saved on the SYN)
Freed by task 80: inet_sock_destruct+0x2cd/0x380 (child close(), plain kfree)
evidence/VERIFIED-fixed-kernel-clean.log — दो kfree_rcu() कॉल लागू किए गए
कर्नेल पर वही हमला: शून्य रिपोर्ट।
यदि आप अभी पैच नहीं कर सकते, तो prerouting पर IPv4 विकल्प वाले TCP पैकेट गिरा
दें (ip protocol tcp ip hdrlength > 5 drop), और migration वेरिएंट के लिए
net.ipv4.tcp_migrate_req=0 सेट करें। वास्तविक समाधान कर्नेल अपडेट है।