
CVE-2026-46331 और CVE-2026-43503
3 Linux कर्नेल लोकल प्रिविलेज एस्केलेशन एक्सप्लॉइट्स। Dirty COW और Dirty Pipe जैसी ही बग श्रेणी। सेकंडों में रूट शेल। हर बड़े डिस्ट्रो पर असर।
तीनों कर्नेल के पेज कैश को भ्रष्ट करते हैं — फाइलों की इन-मेमोरी कॉपी जिन्हें प्रोसेस वास्तव में पढ़ते और निष्पादित करते हैं। डिस्क पर मौजूद फाइल को कभी नहीं छेड़ा जाता। फाइल इंटीग्रिटी टूल्स कुछ नहीं देख पाते। execve("/usr/bin/su") कैश से लोड होता है → आपका शेलकोड चलता है → रूट।
| एक्सप्लॉइट | CVE | तंत्र | रूट तक समय | लाइनें |
|---|---|---|---|---|
| Dirty Pedit | CVE-2026-46331 | TC pedit COW गैप (u32 रैपअराउंड) | < 1 सेकंड | 275 |
| skb_shift | CVE-2026-43503 | TCP SACK frag ट्रांसफर फ्लैग लॉस | ~10 सेकंड | 500 |
| GRO Flag Loss | CVE-2026-43503 | GRO कोलेस frag ट्रांसफर फ्लैग लॉस | ~10 सेकंड | 550 |
तीनों: अनप्रिविलेज्ड → रूट। कोई विशेष अनुमति नहीं। केवल यूजर नेमस्पेस।
इस रिपो में हर एक्सप्लॉइट एक ही पैटर्न का अनुसरण करता है:
1. पेज-कैश पेजों को कर्नेल बफर में लाएँ (splice)
2. कॉपी-ऑन-राइट सुरक्षा को बायपास करें
3. इन-प्लेस लिखें → रीड-ओनली फाइल मेमोरी में भ्रष्ट हो जाती है
अंतर यह है कि सुरक्षा कैसे बायपास होती है और लेखन कौन करता है:
2016 Dirty COW mmap + fork के माध्यम से COW रेस
2022 Dirty Pipe splice में स्टेल PIPE_BUF_FLAG_CAN_MERGE
2026 Copy Fail पेज-कैश स्कैटरलिस्ट पर AF_ALG इन-प्लेस AEAD
2026 Dirty Frag splice'd frags पर ESP skip_cow (गायब फ्लैग)
2026 Fragnesia skb_try_coalesce SHARED_FRAG फ्लैग गिराता है
2026 Dirty Pedit ← TC pedit COW गैप, कोई क्रिप्टो आवश्यक नहीं
2026 skb_shift ← TCP SACK SHARED_FRAG गिराता है, ESP लिखता है
2026 GRO Flag Loss ← GRO मर्ज SHARED_FRAG गिराता है, ESP लिखता है
डिफ़ॉल्ट कॉन्फ़िगरेशन। असुरक्षित होने के लिए कोई हार्डनिंग आवश्यक नहीं। यदि आप Linux चलाते हैं, तो आप प्रभावित थे।
skb_shift और GRO दोनों एक ही शोषण तकनीक का उपयोग करते हैं: SKBFL_SHARED_FRAG फ्लैग खोएँ, फिर ESP क्रिप्टो को पूर्व-गणना किए गए IV लुकअप टेबल का उपयोग करके पेज-कैश पेजों में एक-एक बाइट XOR करने दें।
Dirty Pedit बिल्कुल अलग जानवर है:
skb_store_bits के माध्यम से ठीक वही बाइट्स लिखता है जो आप निर्दिष्ट करते हैं।skb_ensure_writable को तोड़ता है।# तीनों को बिल्ड करें
cd dirty_pedit && gcc -static -O2 -o exploit exploit.c && cd ..
cd skb_shift && gcc -static -O2 -o exploit exploit.c && cd ..
cd gro && gcc -static -O2 -o exploit exploit.c && cd ..
प्रत्येक एक्सप्लॉइट एक एकल स्व-निहित C फाइल है। libc के अलावा कोई निर्भरता नहीं।
# तीनों में से कोई भी (अनप्रिविलेज्ड यूजर के रूप में):
./exploit
# → रूट शेल
आवश्यकता: प्रभावित वर्ज़न रेंज में Linux कर्नेल + CONFIG_USER_NS=y (सभी प्रमुख डिस्ट्रोस पर डिफ़ॉल्ट)।
[*] Dirty Pedit — लोकल प्रिविलेज एस्केलेशन
[*] uid=1000 pid=42
[*] Victim line at offset 186: nobody:x:65534:65534:nobody:/nonexistent:/usr/sbin/nologin
[*] Victim लाइन पर यूजर 'a' (uid=0, कोई पासवर्ड नहीं) इंजेक्ट किया जा रहा है...
[+] यूजर 'a' uid=0 के साथ इंजेक्ट हुआ!
[+] चल रहा है: su a
# id
uid=0(root) gid=0(root) groups=0(root)
[*] uid=1000 euid=1000
[*] IV टेबल पूर्व-गणना (256 प्रविष्टियाँ)
[*] /usr/bin/su में 192 बाइट्स लिखे जा रहे हैं...
[120] 0x00→0x48 ... OK
[121] 0x00→0x31 ... OK
[*] लेखन पूर्ण: 192/192
[!] /usr/bin/su पेज कैश अधिलेखित!
# whoami
root
सभी कमजोरियों की सूचना जिम्मेदारीपूर्वक Linux कर्नेल सुरक्षा टीम और नेटवर्किंग अनुरक्षकों को दी गई थी। पैच अपस्ट्रीम में विलीन हो चुके हैं और स्थिर शाखाओं में बैकपोर्ट किए गए हैं।
899ee91156e548f6a5356a33ये एक्सप्लॉइट्स पैच उपलब्ध होने के बाद शैक्षिक और रक्षात्मक उद्देश्यों के लिए प्रकाशित किए गए हैं। पेज-कैश करप्शन केवल मेमोरी में होता है — रीबूट या echo 1 > /proc/sys/vm/drop_caches मूल फाइलों को पुनर्स्थापित करता है।
राजत गुप्ता — आक्रामक सुरक्षा @ Qualcomm
MIT
| एक्सप्लॉइट | बायपास की गई सुरक्षा | लेखक |
|---|
| Dirty Pedit | skb_ensure_writable (u32 रैपअराउंड → आंशिक COW) | skb_store_bits (सीधा 4-बाइट लेखन) |
| skb_shift | TCP SACK के दौरान SKBFL_SHARED_FRAG फ्लैग खोना | ESP AES-GCM डिक्रिप्ट (1 बाइट प्रति पैकेट) |
| GRO Flag Loss | GRO मर्ज के दौरान SKBFL_SHARED_FRAG फ्लैग खोना | ESP AES-GCM डिक्रिप्ट (1 बाइट प्रति पैकेट) |
| एक्सप्लॉइट | पेश किया गया | ठीक किया गया | प्रभावित डिस्ट्रोस |
|---|
| Dirty Pedit | v5.18 (मई 2022) | v7.1-rc7 | Ubuntu, RHEL, Debian, Fedora, SUSE |
| skb_shift | v3.9 (2013) | v7.1-rc5 | 13 वर्षों से हर डिस्ट्रो |
| GRO Flag Loss | v3.9 (2013) | v7.1-rc5 | 13 वर्षों से हर डिस्ट्रो |
| गुण | Dirty Pedit | skb_shift | GRO |
|---|
| विशेषाधिकार | कोई नहीं (userns) | कोई नहीं (userns) | कोई नहीं (userns) |
| फाइल एक्सेस | O_RDONLY | O_RDONLY | O_RDONLY |
| क्रिप्टो आवश्यक | नहीं | हाँ (AES-GCM) | हाँ (AES-GCM) |
| लेखन नियंत्रण | 4 बाइट्स/पैकेट | 1 बाइट/पैकेट | 1 बाइट/पैकेट |
| विश्वसनीयता | नियतात्मक | नियतात्मक | प्रायिक (पुनः प्रयास) |
| K8s कंटेनर एस्केप | नहीं (कोई veth आवश्यक नहीं) | नहीं | हाँ (veth+GRO डिफ़ॉल्ट) |
| आक्रमण सतह | geneve + TC | loopback + espintcp | veth + ESP-in-UDP |