
arm64/aarch64 पोर्ट V4bel/dirtyfrag (CVE-2026-43284) का। ESP-केवल - rxrpc पथ arm64 पर flush_dcache_page के कारण kernel-oopses होता है।
V4bel/dirtyfrag (CVE-2026-43284, CVE-2026-43500) का arm64/aarch64 पोर्ट।
Ubuntu 24.04.4 LTS पर linux-aws 6.17.0-1013-aws के साथ AWS Graviton पर परीक्षण किया गया (इस लेखन के समय उपलब्ध नवीनतम)।
AppArmor बायपास विश्लेषण, सख्तीकरण नोट्स और डिटेक्शन नोट्स सहित पूर्ण राइटअप: linnemanlabs.com/posts/porting-dirtyfrag-arm64
Ubuntu में दो AppArmor sysctl हैं:
इन दोनों को aa-exec को स्वयं के साथ चेन करके बायपास किया जा सकता है, जो मेरे द्वारा परीक्षित मानक Ubuntu क्लाउड और इंस्टालर इमेज पर मौजूद प्रोफाइल का उपयोग करता है:
aa-exec -p crun -- aa-exec -p crun -- ./dirtyfrag_arm64 --force-esp
अधिक जानकारी के लिए Ubuntu AppArmor बायपास के पूर्ण विश्लेषण के लिए Two Hops and a Shell देखें।
अपस्ट्रीम x86_64 PoC दो शोषण पथों का उपयोग करता है: एक ESP/xfrm पथ जो /usr/bin/su को दूषित करता है, और एक rxrpc/rxkad फ़ॉलबैक जो /etc/passwd को दूषित करता है। arm64 पर rxrpc पथ कर्नेल-ओप्स करता है और इसका उपयोग नहीं किया जा सकता। ESP पथ साफ-सुथरे ढंग से काम करता है।
flush_dcache_pagex86_64 पर, flush_dcache_page() एक no-op है। x86 में हार्डवेयर-सहसंबद्ध डेटा/निर्देश कैश हैं। arm64 पर, यह वास्तविक dcache रखरखाव करता है और struct page* मेटाडेटा को डीरेफरेंस करता है। जब rxrpc क्रिप्टो पथ (rxkad_secure_packet -> crypto_pcbc_encrypt -> skcipher_walk_done) एक पेज पर flush_dcache_page को कॉल करता है जिसका संदर्भ splice/vmsplice श्रृंखला के माध्यम से हेरफेर किया गया है, तो x86_64 चुपचाप इसे छोड़ देता है लेकिन arm64 एक ट्रांसलेशन फॉल्ट से टकराता है और ओप्स करता है:
pc : flush_dcache_page+0x18/0x58
lr : skcipher_walk_done+0xbc/0x260
crypto_pcbc_encrypt+0xe8/0x1c8 [pcbc]
crypto_skcipher_encrypt+0x48/0xb8
rxkad_secure_packet+0x108/0x270 [rxrpc]
rxrpc_send_data+0x264/0x550 [rxrpc]
मेरे द्वारा परीक्षित arm64 सिस्टम पर, uid_map राइट को अस्वीकार करने से काम करने वाला ESP पथ हटा दिया गया। नेमस्पेस अभी भी बनाया जा सकता है, लेकिन प्रक्रिया स्वयं को उसके अंदर रूट में मैप नहीं कर सकती या XFRM सेटअप के लिए आवश्यक नेमस्पेस क्षमताएँ प्राप्त नहीं कर सकती। rxrpc फ़ॉलबैक ने arm64 पर कोई काम करने वाला नेमस्पेस-मुक्त विशेषाधिकार-वृद्धि पथ प्रदान नहीं किया, इसने इसके बजाय कर्नेल को ओप्स कर दिया।
arm64 पर, मेरे परीक्षण में केवल ESP पथ व्यवहार्य था। इस पथ के लिए एक उपयोगकर्ता और नेटवर्क नेमस्पेस बनाना और फिर कॉलिंग उपयोगकर्ता को उस नेमस्पेस के अंदर रूट में सफलतापूर्वक मैप करना आवश्यक है। डिस्ट्रो सख्तीकरण उस पथ को विभिन्न तरीकों से तोड़ सकता है: Ubuntu AppArmor userns प्रतिबंधों के माध्यम से uid_map राइट को अस्वीकार कर सकता है, मैंने Debian/RHEL पर परीक्षण नहीं किया है।
मेरे द्वारा परीक्षित Ubuntu 24.04 AWS इमेज पर, apparmor_restrict_unprivileged_userns=1 ने मेरे सामान्य SSH शेल से सीधे शोषण को अवरुद्ध कर दिया, नए नेमस्पेस के अंदर uid_map राइट को अस्वीकार कर।
हालांकि, डिफ़ॉल्ट apparmor_restrict_unprivileged_unconfined=0 के साथ, एक अप्रतिबंधित उपयोगकर्ता aa-exec के माध्यम से एक मौजूदा शिकायत-मोड प्रोफाइल (जैसे runc) में संक्रमण कर सकता है और प्रतिबंध को बायपास कर सकता है:
aa-exec -p runc -- ./dirtyfrag_arm64 --force-esp
kernel.apparmor_restrict_unprivileged_unconfined=1 सेट करना इस पथ को अवरुद्ध करता है, और वर्तमान में सभी पथों को अवरुद्ध करने के समाधान के रूप में व्यापक रूप से अनुशंसित है। हालांकि, एक और aa-exec जोड़ना भी इसे बायपास करता है:
aa-exec -p crun -- aa-exec -p crun -- ./dirtyfrag_arm64 --force-esp
विवरण के लिए पहले लिंक किए गए पोस्ट देखें।
शोषण पेज कैश में /usr/bin/su को एक न्यूनतम स्थिर ELF के साथ ओवरराइट करता है। अपस्ट्रीम PoC में x86_64 शेलकोड के साथ एक x86_64 ELF एम्बेडेड है। यह पोर्ट इसे एक समतुल्य aarch64 ELF से बदलता है:
e_machine: EM_X86_64 (62) के बजाय EM_AARCH64 (183)syscall के बजाय svc #0 का उपयोग करने वाले aarch64 निर्देश# क्लोन
git clone https://github.com/linnemanlabs/dirtyfrag-arm64.git
# बिल्ड
cd dirtyfrag-arm64
gcc -O0 -Wall -o dirtyfrag_arm64 dirtyfrag_arm64.c -lutil
# रन
./dirtyfrag_arm64 --force-esp
--force-esp फ्लैग arm64 कर्नेल ओप्स से बचने के लिए rxrpc पथ को पूरी तरह से छोड़ देता है।
2026-05-09 तक, नवीनतम उपलब्ध Ubuntu 24.04 aws कर्नेल (6.17.0-1013-aws, 24 अप्रैल को बनाया गया) Copy Fail (CVE-2026-31431, 29 अप्रैल को खुलासा) या Dirty Frag (CVE-2026-43284/43500, 7 मई को खुलासा) के लिए पैच के बिना जहाज करता है।
कमजोर मॉड्यूल को ब्लैकलिस्ट करें, अपने डिस्ट्रो के लिए उपयुक्त सिस्टम सख्तीकरण लागू करें।
उन सिस्टमों पर सुरक्षित जो सक्रिय रूप से IPsec ट्रांसपोर्ट मोड या AFS का उपयोग नहीं कर रहे हैं। मॉड्यूल को लोड होने से रोकने के लिए निम्नलिखित को /etc/modprobe.d/dirtyfrag.conf में डालें:
install esp4 /bin/false
install esp6 /bin/false
install rxrpc /bin/false
Ubuntu initramfs को पुनर्जीवित करने की भी सिफारिश करता है ताकि ब्लैकलिस्ट प्रारंभिक बूट के दौरान मौजूद रहे:
update-initramfs -u -k all
```markdown
### SUID बाइनरी से पढ़ने की अनुमतियाँ हटाएँ
यह उन SUID बाइनरी लक्ष्यों के खिलाफ इस splice-आधारित पेज-कैश हमले वर्ग को अवरुद्ध करता है। शोषण को लक्ष्य फ़ाइल पर `splice()` के लिए पढ़ने की अनुमतियों की आवश्यकता होती है। उपयोगकर्ता अभी भी बाइनरी को निष्पादित कर सकते हैं।
**इसे अपने वातावरण और अपने सभी टूलिंग में परीक्षण किए बिना लागू न करें।**
```bash
chmod o-r /usr/bin/su
यह एक सुधार नहीं है, केवल एक शमन है। विशेषाधिकार वृद्धि के कई और पथ हैं।
चल रहे सिस्टम से मॉड्यूल अनलोड करने के लिए:
rmmod esp4 esp6 ipcomp4 ipcomp6 rxrpc 2>/dev/null
सुनिश्चित करें कि वे अनलोड हो गए हैं:
grep -qE '^(esp4|esp6|rxrpc) ' /proc/modules \
&& echo "Affected modules are loaded" \
|| echo "Affected modules are NOT loaded"
पेज कैश को फ्लश करने से दुर्भावनापूर्ण सामग्री हटा दी जानी चाहिए और फ़ाइलों को डिस्क से फिर से पढ़ने का कारण बनना चाहिए।
echo 3 > /proc/sys/vm/drop_caches
नोट: मुझे इसके साथ कुछ असंगत परिणाम मिले हैं, लेकिन जितना अधिक मैं इसे पुन: पेश करने का प्रयास करता हूं, यह उतना ही अपेक्षित रूप से काम कर रहा है। इस PoC के लिए, आप /usr/bin/su पर md5sum की जांच कर सकते हैं, और यदि यह मेल नहीं खाता है, तो रीबूट करें।
पेज कैश फ्लश चरण चलाएँ, फिर बाद में इसके साथ सत्यापित करें:
sha256sum /usr/bin/su
# या पैकेज मैनेजर से:
dpkg -V util-linux # Debian/Ubuntu
rpm -V util-linux # RHEL/Amazon Linux
अधिक सक्रिय रुख के लिए जो इस पूरे भेद्यता वर्ग को संबोधित करता है (केवल विशिष्ट CVE नहीं), AppArmor userns प्रतिबंधों, मॉड्यूल प्रीलोडिंग रोकथाम, और Tetragon-आधारित रनटाइम डिटेक्शन के साथ-साथ YARA नियमों के लिए पूर्ण राइटअप देखें।
flush_dcache_page क्रैश विश्लेषण, AppArmor अनुसंधान, डिटेक्शन नोट्सयह उपकरण केवल अधिकृत सुरक्षा परीक्षण और अनुसंधान के लिए है।
उन सिस्टमों के खिलाफ अनधिकृत उपयोग जिनके आप मालिक नहीं हैं या जिनके परीक्षण की स्पष्ट अनुमति नहीं है, अवैध और अनैतिक है।
MIT। इसे कॉपी करें, चुराएं, संशोधित करें, इससे सीखें, अपने सुधार मेरे साथ साझा करें। या न करें। यह कोड है, इसके साथ जो चाहें करें।
| गुण | मान |
|---|
| इंस्टेंस | AWS t4g.micro (Graviton2) |
| OS | Ubuntu 24.04.4 LTS |
| कर्नेल | 6.17.0-1013-aws #13~24.04.1-Ubuntu (2026-04-24 को बनाया गया) |
| आर्किटेक्चर | aarch64 |
unprivileged_userns_clone | 1 (सक्षम) |
| esp4 मॉड्यूल | उपलब्ध, लोड करने योग्य |
| rxrpc मॉड्यूल | उपलब्ध, लोड करने योग्य (लेकिन arm64 पर क्रैश करता है) |
| कॉन्फ़िगरेशन | स्टॉक ubuntu 24.04 क्लाउड इमेज, डिफ़ॉल्ट कर्नेल मॉड्यूल |