
XDP/eBPF प्रोग्राम जो CVE-2026-98432 TCP हैंडशेक use-after-free को कम करने के लिए इंटरफ़ेस पर IP विकल्प (IHL > 5) वाले IPv4 पैकेटों को ड्रॉप करता है।
कर्नेल के TCP हैंडशेक में IPv4 विकल्पों के प्रबंधन में use-after-free संबंधी CVE-2026-98432 को कम करने के लिए एक छोटा XDP प्रोग्राम। अधिकांश होस्ट पर यह बग केवल तभी ट्रिगर हो सकता है जब कोई आने वाला SYN IP विकल्प लेकर आए (नीचे NetLabel/CIPSO अपवाद देखें), इसलिए यह प्रोग्राम विकल्पों वाले IPv4 पैकेट्स को नेटवर्क स्टैक से होकर कर्नेल तक पहुँचने से पहले ही ड्रॉप कर देता है।
किसी पैकेट में IP विकल्प तब होते हैं जब उसका IHL (हेडर लंबाई) फ़ील्ड 5 से अधिक हो, जिसका अर्थ है कि IPv4 हेडर 20 बाइट्स से लंबा है।
[!WARNING] यह NetLabel/CIPSO का उपयोग करने वाले होस्ट की सुरक्षा नहीं कर सकता (SELinux या Smack के साथ
CIPSOV4मैपिंग)। ऐसे होस्ट पर कर्नेल स्वयं IP विकल्प जोड़ सकता है, इसलिए यह बग सामान्य SYN के साथ भी पहुँचा जा सकता है। वहाँ पैच किया गया कर्नेल अधिक विश्वसनीय समाधान है।netlabelctl map listयह पता लगाने में मदद कर सकता है कि कोई होस्ट CIPSO का उपयोग करता है या नहीं:CIPSOV4प्रकार की प्रविष्टियाँ बताती हैं कि ऐसा होता है।
| पैकेट | क्रिया |
|---|---|
| विकल्पों वाला IPv4 (IHL > 5) | XDP_DROP |
| विकल्पों के बिना IPv4 | XDP_PASS |
| कुछ और (IPv6, ARP, …) | XDP_PASS |
| कटा हुआ / विकृत हेडर | XDP_PASS |
VLAN-टैग किए गए फ़्रेम भी संभाले जाते हैं: IPv4 की जाँच करने से पहले प्रोग्राम दो VLAN टैग (802.1Q और 802.1ad/QinQ) तक छोड़ देता है। दो से अधिक टैग वाले फ़्रेम पास कर दिए जाते हैं।
Linux होस्ट पर:
clang और llvmlibbpf-dev (bpf/bpf_helpers.h के लिए)linux-headers-$(uname -r) या linux-libc-dev)iproute2 (ip link के लिए), और वैकल्पिक रूप से bpftoolDebian / Ubuntu:
sudo apt install clang llvm libbpf-dev linux-libc-dev iproute2 bpftool
Fedora:
sudo dnf install clang llvm libbpf-devel kernel-headers iproute bpftool
make
यह drop_ipv4_opt.o उत्पन्न करता है।
eth0 को अपने इंटरफ़ेस के नाम से बदलें (ip link देखें)।
नेटिव (ड्राइवर) मोड, जो सबसे तेज़ है:
sudo ip link set dev eth0 xdpdrv obj drop_ipv4_opt.o sec xdp
जेनेरिक (SKB) मोड, जो किसी भी इंटरफ़ेस पर काम करता है लेकिन धीमा है:
sudo ip link set dev eth0 xdpgeneric obj drop_ipv4_opt.o sec xdp
कर्नेल को मोड चुनने दें (समर्थित होने पर नेटिव, अन्यथा जेनेरिक):
sudo ip link set dev eth0 xdp obj drop_ipv4_opt.o sec xdp
ip link show dev eth0 # look for "xdp" / "prog/xdp id N"
sudo bpftool net show dev eth0
sudo ip link set dev eth0 xdp off
यदि आपने उस विशिष्ट मोड में अटैच किया था तो xdpdrv off या xdpgeneric off का उपयोग करें।
किसी अन्य होस्ट से, IP विकल्प के साथ एक पैकेट भेजें, जैसे Record Route विकल्प के साथ:
ping -R <target-ip>
प्रोग्राम अटैच होने पर, इन पिंग्स का कोई उत्तर नहीं मिलता। सामान्य ping <target-ip> अभी भी काम करता है।
MIT। देखें LICENSE।