
कर्नल पैच Dirty Frag भेद्यता (CVE-2026-43284, CVE-2026-43500) के लिए
Hyunwoo Kim (@v4bel) द्वारा खोजी गई डर्टी फ्रैग भेद्यता श्रेणी के लिए पैच श्रृंखला।
डर्टी फ्रैग एक अविशेषाधिकार प्राप्त स्थानीय उपयोगकर्ता को केवल-पठनीय फ़ाइलों (जैसे /usr/bin/su, /etc/passwd) के पेज कैश के मनमाने बाइट्स को अधिलेखित करने की अनुमति देता है, जिससे सभी प्रमुख Linux वितरणों पर रूट तक स्थानीय विशेषाधिकार वृद्धि होती है।
इस रिपॉजिटरी में मौजूद पैच इस रिपो के अनुरक्षक द्वारा नहीं लिखे गए थे।
- CVE-2026-43284 (ESP पैच): Hyunwoo Kim (@v4bel) और Kuan-Ting Chen द्वारा लिखित। कमिट
f4c50a4034e6पर Linux कर्नेल मेनलाइन में विलय।- CVE-2026-43500 (RxRPC पैच): Hyunwoo Kim (@v4bel) द्वारा लिखित।
afKV2zGR6rrelPC7@v4belपर netdev मेलिंग सूची में प्रस्तुत, विलय लंबित।यह रिपॉजिटरी उन पैचों का एक स्वरूपित दर्पण है, जिन्हें सुविधा के लिए
git am-तैयार प्रारूप में यहाँ एकत्र किया गया है। सभी श्रेय मूल लेखकों को जाता है। मूल शोध और PoC: https://github.com/V4bel/dirtyfrag
4.10 (कमिट cac2661c53f3, 2017-01-17) से 6.x पूर्व-f4c50a4034e6 तक के कर्नेल6.4 (कमिट 2dc334f1a63a, 2023-06-08) से अपस्ट्रीम तक के कर्नेल (अभी तक कोई पैच विलय नहीं हुआ)git clone https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
cd linux
# पैच 1 लागू करें (ESP — CVE-2026-43284)
git am 0001-net-xfrm-fix-page-cache-write-via-esp-splice-CVE-2026-43284.patch
# पैच 2 लागू करें (RxRPC — CVE-2026-43500)
git am 0002-net-rxrpc-fix-page-cache-write-via-rxkad-splice-CVE-2026-43500.patch
patch के साथ लागू करें (यदि संदर्भ विचलन के कारण git am विफल हो जाता है)patch -p1 < 0001-net-xfrm-fix-page-cache-write-via-esp-splice-CVE-2026-43284.patch
patch -p1 < 0002-net-rxrpc-fix-page-cache-write-via-rxkad-splice-CVE-2026-43500.patch
यदि आप पैच तुरंत लागू नहीं कर सकते हैं, तो भेद्य मॉड्यूल को ब्लैकलिस्ट करें:
sudo sh -c "printf 'install esp4 /bin/false\ninstall esp6 /bin/false\ninstall rxrpc /bin/false\n' \
> /etc/modprobe.d/dirtyfrag.conf && \
rmmod esp4 esp6 rxrpc 2>/dev/null; \
echo 3 > /proc/sys/vm/drop_caches"
चेतावनी:
esp4/esp6को हटाने से IPsec ESP अक्षम हो जाता है। उत्पादन प्रणालियों पर लागू करने से पहले प्रभाव का मूल्यांकन करें।
दोनों प्रकार एक ही मूल कारण साझा करते हैं: कर्नेल का शून्य-प्रतिलिपि splice() पथ कॉपी-ऑन-राइट शब्दार्थ के बिना एक केवल-पठनीय पेज-कैश पेज को सीधे skb फ्रैग में रोपित करता है। बाद में स्थान-में क्रिप्टो संचालन उस पेज-कैश पेज में लिखते हैं, जिससे कैश की गई फ़ाइल सामग्री स्थायी रूप से संशोधित हो जाती है।
splice(file_fd → pipe → socket)
│
▼
skb->frags[0].page = &page_cache_page_P <- कोई CoW नहीं!
│
▼
[esp_input / rxkad_verify_packet_1]
स्थान-में AEAD/fcrypt डिक्रिप्ट src == dst == &P
│
▼
STORE to page_cache_page_P <- केवल-पठनीय फ़ाइल कैश में मनमाना लेखन
| फ़ाइल | CVE | सबसिस्टम | स्थिति |
|---|
0001-net-xfrm-fix-page-cache-write-via-esp-splice-CVE-2026-43284.patch | CVE-2026-43284 | net/ipv4/esp4.c, net/ipv6/esp6.c, net/ipv4/ip_output.c, net/ipv6/ip6_output.c | ✅ मेनलाइन में विलय (f4c50a4034e6) |
0002-net-rxrpc-fix-page-cache-write-via-rxkad-splice-CVE-2026-43500.patch | CVE-2026-43500 | net/rxrpc/call_event.c, net/rxrpc/conn_event.c | ⏳ netdev ML को प्रस्तुत (afKV2zGR6rrelPC7@v4bel), विलय लंबित |
| प्रकार | दृष्टिकोण |
|---|
| ESP | splice फ्रैग्स को SKBFL_SHARED_FRAG के साथ चिह्नित करें; स्थान-में क्रिप्टो से पहले skb_cow_data() को बाध्य करने के लिए esp_input()/esp6_input() में इस फ्लैग की जाँच करें |
| RxRPC | skb_cloned() गेट को (skb_cloned(skb) || skb->data_len) तक विस्तारित करें ताकि गैर-रैखिक skbs (जिनमें splice फ्रैग्स हो सकते हैं) स्थान-में डिक्रिप्शन से पहले हमेशा कॉपी किए जाएँ |