
प्रूफ-ऑफ-कॉन्सेप्ट जो Amazon EKS पर कंटेनर एस्केप प्रदर्शित करता है, Dirty Frag (CVE-2026-43284) कर्नेल पेज-कैश भ्रष्टाचार का साझा इमेज लेयर्स और विशेषाधिकार प्राप्त DaemonSets के माध्यम से शोषण करके।
एक प्रूफ-ऑफ-कॉन्सेप्ट जो दर्शाता है कि कैसे एक डिफ़ॉल्ट, अनप्रिविलेज्ड कुबरनेट्स पॉड Amazon EKS पर नोड-स्तरीय कोड निष्पादन प्राप्त कर सकता है, साझा कंटेनर इमेज लेयर्स के माध्यम से डर्टी फ्रैग लिनक्स कर्नेल पेज-कैश भ्रष्टाचार भेद्यता का शोषण करके।
मुख्य हमला प्रिमिटिव है: कोई भी प्रिविलेज्ड DaemonSet जो एक हमलावर-नियंत्रित कंटेनर के साथ इमेज लेयर्स साझा करता है, उसे कंटेनर एस्केप के लिए हथियार बनाया जा सकता है। यह PoC kube-proxy को एक ठोस उदाहरण के रूप में उपयोग करता है, लेकिन तकनीक क्लस्टर पर किसी भी प्रिविलेज्ड वर्कलोड पर सामान्यीकृत होती है।
Amazon EKS (कर्नेल 6.12.80) पर मान्य — एक अनप्रिविलेज्ड पॉड प्रिविलेज्ड kube-proxy DaemonSet के माध्यम से होस्ट फाइलसिस्टम पर [*] success लिखता है:

अस्वीकरण: यह रिपॉजिटरी केवल शैक्षिक और रक्षात्मक उद्देश्यों के लिए प्रकाशित की गई है। इसका उपयोग केवल उन सिस्टमों पर करें जिनके आप मालिक हैं या जिनके परीक्षण के लिए आपके पास स्पष्ट प्राधिकरण है।
डर्टी फ्रैग (CVE-2026-43284) xfrm/ESP रिसीव पथ में एक लिनक्स कर्नेल पेज-कैश भ्रष्टाचार भेद्यता है। प्रभावित पथ में, esp_input() बिना frag_list के एक गैर-रैखिक skb के लिए skb_cow_data() को छोड़ सकता है, जिससे crypto_authenc_esn_decrypt() को splice() के माध्यम से पहुंचे पेज-कैश पेज में हमलावर-नियंत्रित डेटा के 4 बाइट्स संग्रहीत करने की अनुमति मिलती है।
डिस्क पर फाइल संशोधित नहीं होती है। भ्रष्ट बाइट्स कर्नेल पेज कैश में रहते हैं और उसी कैश्ड फाइल पेज के बाद के पाठकों द्वारा देखे जाते हैं।
मूल भेद्यता के पूर्ण विवरण के लिए, देखें V4bel/dirtyfrag।
हमला तीन गुणों का शोषण करता है जो आमतौर पर कुबरनेट्स क्लस्टरों में सह-अस्तित्व में होते हैं:
privileged: true, hostNetwork: true, व्यापक क्षमताएं, आदि) के साथ DaemonSets चलाते हैं जो समय-समय पर अपनी इमेज से बाइनरी निष्पादित करते हैं।जब ये स्थितियां संरेखित होती हैं, एक अनप्रिविलेज्ड पॉड साझा इमेज लेयर में एक बाइनरी को भ्रष्ट कर सकता है, और उसी नोड पर एक प्रिविलेज्ड DaemonSet अनजाने में भ्रष्ट बाइनरी को अपने उन्नत विशेषाधिकारों के साथ निष्पादित करेगा — पूर्ण नोड-स्तरीय कोड निष्पादन प्राप्त करना।
भेद्यता लक्ष्य kube-proxy तक सीमित नहीं है। कोई भी प्रिविलेज्ड DaemonSet (मॉनिटरिंग एजेंट, CNI प्लगइन्स, लॉग कलेक्टर, सुरक्षा एजेंट, आदि) जिसकी कंटेनर इमेज हमलावर-नियंत्रित इमेज के साथ लेयर्स साझा करती है, एक व्यवहार्य लक्ष्य है।
यह प्रोजेक्ट कॉपी फेल कुबरनेट्स PoC में प्रलेखित कुबरनेट्स शोषण मॉडल से प्रेरित है, लेकिन एक अलग कर्नेल प्रिमिटिव का उपयोग करता है।
| गुण | कॉपी फेल | डर्टी फ्रैग |
|---|---|---|
| CVE | CVE-2026-31431 | CVE-2026-43284 |
| कर्नेल पथ | AF_ALG + splice() | xfrm/ESP + splice() |
| नेमस्पेस आवश्यकता | आवश्यक नहीं | यूजर नेमस्पेस की आवश्यकता है |
| उपयोग की गई मुख्य क्षमता | प्रारंभिक कंटेनर में कोई नहीं | नए नेट नेमस्पेस के अंदर CAP_NET_ADMIN |
| प्रासंगिक मॉड्यूल | algif_aead | esp4 |
| व्यावहारिक अंतर | AF_ALG वेक्टर अवरुद्ध होने पर विफल | तब भी प्रासंगिक जब AF_ALG अनुपलब्ध हो लेकिन ESP/यूजर नेमस्पेस सक्षम हों |
हमले की श्रृंखला के तीन चरण हैं: पेज-कैश भ्रष्टाचार, क्रॉस-कंटेनर प्रसार, और प्रिविलेज्ड निष्पादन।
PoC बाइनरी एक अनप्रिविलेज्ड कंटेनर से निम्नलिखित अनुक्रम करती है:
unshare(CLONE_NEWUSER | CLONE_NEWNET) के साथ नए यूजर और नेट नेमस्पेस में प्रवेश करती है।splice() और क्राफ्टेड ESP इनपुट का उपयोग करती है।लक्ष्य फाइल के लिए कोई लेखन अनुमति आवश्यक नहीं है। डिस्क पर फाइल अपरिवर्तित है — केवल इन-मेमोरी पेज कैश भ्रष्ट है।
कंटेनर रनटाइम कर्नेल पेज कैश के माध्यम से ओवरले निचली लेयर्स से रीड्स की सेवा करते हैं। यदि PoC कंटेनर और kube-proxy समान निचली-लेयर फाइल साझा करते हैं, तो दोनों समान कैश्ड पेजों का अवलोकन करते हैं।
इस रिपॉजिटरी में EKS इमेज निम्न से बनाई गई है:
public.ecr.aws/eks-distro-build-tooling/eks-distro-minimal-base-iptables:2026-03-11-1773190710.2023
वह बेस मान्य वातावरण में उपयोग किए गए EKS kube-proxy यूजरस्पेस टूलचेन लेयर से मेल खाने के लिए चुना गया है।
जब kube-proxy अगली बार एक पैच्ड iptables-परिवार बाइनरी निष्पादित करता है, तो कर्नेल भ्रष्ट कैश्ड पेजों को लोड करता है। PoC पेलोड होस्ट रूट डिवाइस को माउंट करता है और /root/res पर एक मार्कर फाइल लिखता है।
अपेक्षित मार्कर सामग्री है:
[*] success
┌──────────────────────────────┐ ┌────────────────────────┐ ┌──────────────────────────┐
│ PoC पॉड │ │ कर्नेल पेज कैश │ │ kube-proxy DaemonSet │
│ अनप्रिविलेज्ड कंटेनर │ │ │ │ प्रिविलेज्ड कंटेनर │
│ │ │ │ │ │
│ 1. unshare यूजर+नेट ns │ │ │ │ │
│ 2. xfrm SAs स्थापित करें │ │ │ │ │
│ 3. splice लक्ष्य बाइनरी │────▶│ साझा-लेयर बाइनरी │────▶│ पैच्ड बाइनरी निष्पादित करता है │
│ ESP पथ के माध्यम से │ │ पेज कैश पैच्ड │ │ पेलोड नोड-स्तरीय के साथ चलता है│
│ │ │ │ │ विशेषाधिकार │
└──────────────────────────────┘ └────────────────────────┘ └──────────────────────────┘
| गुण | मान |
|---|---|
| प्लेटफॉर्म | Amazon Elastic Kubernetes Service (EKS) |
| नोड कर्नेल | 6.12.80-106.156.amzn2023.x86_64 |
| पैच स्थिति | पैच-पूर्व कर्नेल, f4c50a4034e6 अनुपलब्ध |
esp4 मॉड्यूल | लोडेड |
| यूजर नेमस्पेस | सक्षम (user.max_user_namespaces=15030) |
| SELinux | अनुमेय |
| Seccomp | परीक्षण किए गए पॉड संदर्भ में अनकन्फाइंड |
| लक्ष्य DaemonSet | kube-proxy |
| लक्ष्य विशेषाधिकार | privileged: true, hostNetwork: true |
| प्रॉक्सी मोड | iptables |
| मार्कर पथ | /root/res |