
Linux कर्नेल CVE-2026-98432 (tcp_v4_syn_recv_sock में IPv4-options UAF) के लिए एक पुनरुत्पादनीय एजेंट स्किल के रूप में अंतरिम nftables शमन
एजेंट स्किल जो Linux कर्नेल CVE-2026-98432 (CVSS 9.8) के लिए अंतरिम होस्ट शमन को लागू करती है, सत्यापित करती है, स्थायी बनाती है, और बाद में हटाती है: एक एकल nftables नियम जो IPv4 विकल्प ले जाने वाले TCP पैकेटों को गिराता है — यही एकमात्र इनपुट है जो tcp_v4_syn_recv_sock() में inet_opt/ireq_opt use-after-free तक पहुँचता है।
जानने योग्य संदर्भ: Anthropic की Frontier Red Team ने सार्वजनिक रूप से MPTCP लिसनर को उजागर करने वाले सर्वरों के विरुद्ध एक कार्यशील अनप्रमाणित-से-रूट PoC का वर्णन किया (अक्टूबर 2026); किसी इन-द-वाइल्ड शोषण की सूचना नहीं है। कर्नेल CNA इसे 9.8 आंकता है; अपस्ट्रीम और Red Hat इसे 8.1 आंकते हैं (आक्रमण जटिलता उच्च)। विक्रेता का फिक्स Ubuntu कर्नेल 6.8.0-149-श्रेणी के बैकपोर्ट्स है — जब तक चल रहा कर्नेल फिक्स नहीं ले लेता, यह नियम अस्थायी उपाय है। यह एक प्रोटोकॉल के एक हेडर के एक फ़ील्ड तक सीमित है, इसलिए सामान्य ट्रैफ़िक अछूता रहता है।
यह नियम नया नहीं है — इसे पैकेज्ड प्रायर आर्ट मानें। नीचे "Prior art" देखें; इस रेपो का योगदान पुनरुत्पादनीय एजेंट-स्किल रूप और उत्पादन संबंधी गड़बड़ियाँ हैं।
| पथ | क्या |
|---|---|
SKILL.md | स्किल — फ्रंटमैटर ट्रिगर, रूलसेट, जाँच, स्थायित्व, गड़बड़ियाँ, हटाना |
files/cve98432.nft | कॉपी-रेडी nftables रूलसेट (prerouting, प्राथमिकता −300) |
files/nft-cve98432.service | कॉपी-रेडी systemd यूनिट (स्थायित्व) |
cp -R cve-2026-98432-nft-mitigation ~/.claude/skills/ # Claude Code
cp -R cve-2026-98432-nft-mitigation ~/.agents/skills/ # agents-style runtimes
description frontmatter खोज सतह है: एजेंट इस skill का चयन तब करते हैं जब उनसे CVE-2026-98432, "TCP/IP fix", kernel IPv4-options UAF को शमन करने के लिए कहा जाता है, या विक्रेता kernel आने के बाद शमन को हटाने के लिए कहा जाता है।
zgrep -c CVE-2026-98432 /usr/share/doc/linux-modules-$(uname -r)/changelog.Debian.gz # Debian/Ubuntu
rpm -q --changelog kernel-core-$(uname -r) | grep -c CVE-2026-98432 # RHEL/Rocky/Alma
> 0 = fixed, mitigation छोड़ें। (अपने vendor tracker भी जाँचें; और
apt-cache policy linux-image-generic से installed-but-not-booted नए kernel के लिए।)ss -lnMp): प्रकाशित PoC इन्हें लक्षित करता है, और Go ≥ 1.24 उन kernels पर जो अनुमति देते हैं, डिफ़ॉल्ट रूप से MPTCP के साथ listen करता है। sysctl net.mptcp.enabled=0 केवल नए sockets को प्रभावित करता है — पहले से खुले listeners अपनी service restart होने तक MPTCP बनाए रखते हैं (Go टीम के अनुसार GODEBUG=multipathtcp=0)।cat /sys/kernel/security/lsm में SELinux या Smack सूचीबद्ध है और आप NetLabel CIPSOV4 mapping का उपयोग करते हैं, तो वहाँ IPv4 options वैध हैं — यह rule उस path को तोड़ देगा। CIPSO-labeled networks पर लागू न करें (RFC 7126 इस trade-off पर चर्चा करता है)।files/cve98432.nft और files/nft-cve98432.service इंस्टॉल करें।nft -c -f /usr/local/sbin/cve98432.nft — parse check; root आवश्यक (non-root netlink पर विफल होता है: cache initialization failed)।systemctl daemon-reload && systemctl enable --now nft-cve98432.servicedestroy table … पंक्ति फ़ाइल की पहली पंक्ति होनी चाहिए: अंत में जोड़ने पर यह table बनाती है और फिर उसे नष्ट कर देती है, जिससे एक खाली ruleset बचता है जबकि service फिर भी exit 0 करती है।nft list table inet cve98432 को priority -300 वाली chain पर
meta l4proto tcp ip hdrlength > 5 counter drop दिखाना चाहिए
(conntrack से पहले, प्रकाशित rule के अनुरूप)।table inet … iptables के स्वामित्व में नहीं है, इसलिए iptables-restore /
ufw / firewalld tooling इसे अक्षुण्ण छोड़ती है (अपना restore एक बार चलाएँ और पुष्टि के लिए फिर से list करें)।fixed kernel इंस्टॉल होने और reboot के बाद हटाना: SKILL.md का section 7।
nftables state प्रति network namespace होती है। Host rules किसी container के traffic को केवल वहाँ देखते हैं जहाँ वह host को पार करता है (जैसे container → बाहर); जो traffic container के अपने namespace के अंदर ही रहता है (container → उसका अपना loopback/IP) वह कभी host के prerouting से नहीं गुज़रता — फिर भी kernel साझा है, इसलिए container के अंदर का code स्थानीय रूप से UAF तक पहुँच सकता है। हर चल रहे container में वही ruleset inject करें:
# Docker (host-side nsenter keeps the needed capabilities)
for c in $(docker ps -q); do
pid=$(docker inspect -f '{{.State.Pid}}' "$c")
nsenter -t "$pid" -n /usr/sbin/nft -f /usr/local/sbin/cve98432.nft
done
# LXC (privileged CLI as root)
for c in $(lxc-ls -1 2>/dev/null); do lxc-attach -n "$c" -- nft -f /usr/local/sbin/cve98432.nft; done
कंटेनर नेमस्पेस nft नियमों को संरक्षित नहीं करते — हर कंटेनर रीस्टार्ट पर फिर से चलाएँ (इसे अपने ऑर्केस्ट्रेटर के पोस्ट-स्टार्ट चरण में हुक करें)। इस सटीक अंतराल के लिए पूर्व कार्य, स्क्रिप्ट्स के साथ:
typhoon1217/cve-2026-98432-mitigation (inject-netns.sh)।
मानक सॉकेट्स पर्याप्त हैं — सर्वर पर कोई पैकेट क्राफ्टिंग नहीं: एक क्लाइंट setsockopt(IP_OPTIONS) के माध्यम से एक IPv4 Record
Route विकल्प सेट करता है और कनेक्ट करता है; एक सादा कनेक्ट सफल होता है, विकल्पों वाला कनेक्ट टाइम आउट होना चाहिए जबकि नियम का काउंटर बढ़ता है। तैयार क्लाइंट्स:
typhoon1217/cve-2026-98432-mitigation में check-blocked.py / verify-synack.sh।
उस प्रोजेक्ट से चेतावनी: एक क्लाइंट जो स्वयं शमन लागू करता है, वह भी
लक्ष्य के SYN-ACK इकोज़ को ड्रॉप कर देगा — स्वच्छ निर्णय के लिए एक अशमित क्लाइंट से परीक्षण करें।
priority -300 पर prerouting: conntrack से पहले, इसलिए ड्रॉप किए गए पैकेट कभी conntrack स्थिति नहीं बनाते — और, input के विपरीत, यह कंटेनर/VM को फ़ॉरवर्ड किए गए ट्रैफ़िक को भी कवर करता है
जो होस्ट को पार करता है।@nh,4,4 > 5 को
ip hdrlength > 5 में सामान्यीकृत करता है — IHL फ़ील्ड, जिसकी पुष्टि टूल स्वयं करता है।typhoon1217/cve-2026-98432-mitigation — समान ड्रॉप नियम + कंटेनर-नेटनेमस्पेस इंजेक्शन,
CIPSO चेतावनी, सत्यापन क्लाइंट्स (EN/KO)एक प्रोडक्शन डिप्लॉयमेंट से निकाला गया, जिसमें वहाँ आई विफलताएँ भी शामिल हैं: गैर-रूट nft -c, अंत में
destroy का क्रम-बग, एक अनकोटेड हेरेडॉक जो चुपचाप \$ खा गया, और डबल-अप्लाई
सेमांटिक्स। केवल-डॉक्स रिपॉज़िटरी — रनटाइम निर्भरताएँ: nft ≥ 1.0 + systemd; कोई टेस्ट सूट नहीं
(लागू नहीं)।