
CVE-2026-81000 (TUNderflow) के लिए शोध रिपॉज़िटरी, जो एक Linux kernel TUN/TAP receive headroom integer underflow है जो local privilege escalation को सक्षम बनाता है, जिसमें PoC, root-cause analysis, और lab setup शामिल है।
TUNderflow
TUN/TAP नेटवर्किंग सबसिस्टम में एक Linux कर्नेल मेमोरी-करप्शन भेद्यता, जो रिसीव हेडरूम पर अपर्याप्त सीमाओं और पैकेट आवंटन पथ में एक इंटीजर अंडरफ़्लो के कारण होती है।
यह रिपॉज़िटरी अधिकृत सुरक्षा अनुसंधान, भेद्यता विश्लेषण, CTF वातावरण, कर्नेल डीबगिंग और रक्षात्मक परीक्षण के लिए है।
स्पष्ट प्राधिकरण के बिना सिस्टम के विरुद्ध प्रूफ़-ऑफ़-कॉन्सेप्ट कोड का उपयोग न करें।
| फ़ील्ड | विवरण |
|---|---|
| CVE | CVE-2026-81000 |
| कोडनेम | TUNderflow |
| घटक | Linux Kernel |
| सबसिस्टम | TUN/TAP |
| प्रभावित कोड | drivers/net/tun.c |
| प्राथमिक फ़ंक्शन | tun_get_user() |
| बग वर्ग | Integer underflow / out-of-bounds memory access |
| प्रभाव | Kernel memory corruption |
| संभावित प्रभाव | Local privilege escalation |
| CVSS v3.1 | 7.8 — High |
| आक्रमण वेक्टर | Local |
| आवश्यक विशेषाधिकार | Low |
| उपयोगकर्ता इंटरैक्शन | None |
| स्थिति | Patched |
CVE सलाहकार इस मुद्दे को एक इंटीजर अंडरफ़्लो के रूप में वर्णित करता है जो skb->data को आवंटित skb हेड के बाहर स्थित होने का कारण बन सकता है।
यह भेद्यता Linux कर्नेल के TUN/TAP रिसीव पथ में मौजूद है।
प्रभावित कोड TUN डिवाइस के कॉन्फ़िगर किए गए रिसीव हेडरूम का उपयोग पैकेट हेडरूम के रूप में और यह गणना करते समय भी करता है कि कितना पैकेट डेटा लीनियर रहना चाहिए।
इसलिए एक अत्यधिक बड़ा हेडरूम मान निम्नलिखित में एक अमान्य गणना उत्पन्न कर सकता है:
SKB_MAX_HEAD(align)
जब आपूर्त किया गया मान उपयोग योग्य एक-पृष्ठ skb हेड से अधिक हो जाता है, तो गणना में अंडरफ़्लो हो सकता है।
संकल्पनात्मक रूप से:
Oversized receive headroom
│
▼
SKB_MAX_HEAD()
│
▼
Integer underflow
│
▼
Negative value
│
▼
size_t wrap
│
▼
Invalid skb data placement
│
▼
Kernel memory corruption
दुर्बल कार्यान्वयन यहाँ स्थित है:
drivers/net/tun.c
जिसमें tun_get_user() केंद्रीय रूप से कमजोर पथ में है।
अंतर्निहित समस्या अपर्याप्त रूप से सीमित TUN रिसीव हेडरूम है।
कर्नेल नेटवर्क-डिवाइस पथों के माध्यम से एक अत्यधिक बड़े हेडरूम अनुरोध प्राप्त कर सकता है जो मान को TUN/TAP तक प्रसारित करते हैं।
यह कमजोरी विशेष रूप से तब दिलचस्प हो जाती है जब एक जटिल वर्चुअल नेटवर्किंग कॉन्फ़िगरेशन एक बड़े हेडरूम मान को TUN डिवाइस तक पहुँचने का कारण बनता है।
सार्वजनिक प्रकटीकरण एक ऐसे परिदृश्य का वर्णन करता है जिसमें शामिल है:
Netkit
│
▼
VXLAN
│
▼
Open vSwitch
│
▼
TUN
एक उदाहरण कॉन्फ़िगरेशन एक रॉ TUN पोर्ट पर लगभग 4160 बाइट्स का हेडरूम प्रसारित कर सकता है, जिससे कमजोर अंकगणितीय गणना अंडरफ़्लो का शिकार हो जाती है।
यह भ्रष्टाचार कर्नेल नेटवर्किंग मेमोरी-प्रबंधन लॉजिक में होता है।
संभावित परिणामों में शामिल हैं:
सार्वजनिक प्रकटीकरण इस भेद्यता को Linux स्थानीय-रूट भेद्यताओं के एक समूह में से एक के रूप में रिपोर्ट करता है और बताता है कि प्रकाशित PoC समर्थित लक्ष्यों पर गैर-विशेषाधिकार प्राप्त स्थानीय उपयोगकर्ता-से-रूट निष्पादन प्राप्त कर सकता है।
शोषणीयता पर्यावरण-निर्भर है और इसके लिए प्रासंगिक TUN/नेटवर्क डिवाइस कॉन्फ़िगरेशन और सहायक कार्यक्षमता की आवश्यकता होती है।
ATTACKER
│
▼
Oversized network headroom
│
▼
Virtual network device
│
▼
Open vSwitch
│
▼
TUN/TAP
│
▼
tun_get_user()
│
▼
SKB_MAX_HEAD(align)
│
▼
Integer underflow
│
▼
size_t wraparound
│
▼
Invalid skb->data offset
│
▼
Kernel memory corruption
महत्वपूर्ण घटक हैं:
drivers/net/tun.c
│
├── tun_set_headroom()
│
├── tun_get_user()
│
└── tun_alloc_skb()
The vulnerable relationship can be simplified as:
tun->align
│
├── skb headroom
│
└── linear-data calculation
दोनों गणनाओं में समान अतिविशाल मान का उपयोग करने से अनुरोधित हेडरूम और वास्तविक skb हेड बजट के बीच एक असुरक्षित संबंध बनता है।
महत्वपूर्ण सुरक्षा गुण को संकल्पनात्मक रूप से इस प्रकार दर्शाया जा सकता है:
usable_head < requested_headroom
जिसके परिणामस्वरूप हो सकता है:
SKB_MAX_HEAD(align) < 0
followed by an unsigned conversion:
negative value
↓
size_t
↓
very large unsigned value
यह अंततः skb आवंटन/डेटा प्लेसमेंट को प्रभावित कर सकता है।
आधिकारिक विवरण विशेष रूप से उल्लेख करता है कि परिणामी मान रैप हो जाता है जब
इसे size_t linear वेरिएबल को सौंपा जाता है।
अपस्ट्रीम फिक्स यह है:
447c9303942c439a117d9b76ce6d6e2116c38ee7
Commit:
net: tun: bound receive headroom
यह फ़िक्स TUN द्वारा संग्रहीत हेडरूम को उपलब्ध एक-पृष्ठ skb हेड बजट और सबसे बड़े वैध 16-बिट skb हेडर ऑफ़सेट के विरुद्ध सीमित करता है। यह यह भी सुनिश्चित करता है कि raw TUN और TAP प्रोसेसिंग के लिए पर्याप्त रैखिक डेटा उपलब्ध हो।
User / network device
│
▼
Large headroom
│
▼
tun->align
│
▼
Unsafe arithmetic
│
▼
Potential OOB access
User / network device
│
▼
Large headroom
│
▼
Bounded headroom
│
▼
Safe skb calculation
│
▼
Normal packet processing