
CVE-2026-43494 (PinTheft) के लिए Proof-of-concept: RDS zerocopy refcount bug + io_uring fixed buffers के माध्यम से Linux LPE → SUID page-cache overwrite. केवल अधिकृत अनुसंधान।
प्रूफ ऑफ कॉन्सेप्ट — uid=1000(raken) → uid=0(root) after ./sley on WSL2 (6.6.87.2-microsoft-standard-WSL2)
एकल-फ़ाइल प्रूफ ऑफ कॉन्सेप्ट CVE-2026-43494 (PinTheft) के लिए: एक Linux कर्नेल स्थानीय विशेषाधिकार वृद्धि जो RDS zerocopy संदर्भ-गणना बग को io_uring स्थिर बफ़र्स के साथ जोड़कर SUID-root बाइनरी के पेज कैश को अधिलेखित करता है।
अस्वीकरण: यह रिपॉजिटरी केवल अधिकृत सुरक्षा अनुसंधान, शिक्षा और रक्षात्मक परीक्षण के लिए है। इसे उन सिस्टमों पर चलाना जिनके आप मालिक नहीं हैं या जिनके परीक्षण के लिए आपके पास स्पष्ट अनुमति नहीं है, अवैध और अनैतिक है। लेखक दुरुपयोग के लिए कोई दायित्व नहीं लेते हैं।
मूल सार्वजनिक शोध और PoC V12 Security टीम (Aaron Esau) द्वारा प्रकाशित किए गए थे। SLEY एक स्वतंत्र, कॉम्पैक्ट पुनर्कार्यान्वयन है जिसमें प्रयोगशाला उपयोग और सीखने के लिए एक स्टाइलिश टर्मिनल UI है।
flowchart LR
A[mmap anonymous page] --> B[io_uring: register fixed buffer]
B --> C[Clone buffer table to 2nd ring]
C --> D[1024× failing RDS zerocopy sends]
D --> E[Drain FOLL_PIN bias / steal refs]
E --> F[munmap → page freed]
F --> G[SUID binary page reclaimed in page cache]
G --> H[Stale io_uring ptr writes ELF stub]
H --> I[exec SUID → root shell]su, mount, passwd, …) ढूंढें।FOLL_PIN बायस ≈ 1024)।execve SUID बाइनरी इंजेक्ट किए गए स्टब को रूट के रूप में चलाता है।CONFIG_RDS=y और CONFIG_RDS_TCP=yCONFIG_IO_URING=y और kernel.io_uring_disabled = 0rds / rds_tcp मॉड्यूल लोडेड (या गैर-विशेषाधिकार प्राप्त उपयोगकर्ताओं द्वारा ऑटोलोडेबल)IORING_REGISTER_CLONE_BUFFERS API के लिएsudo apt install build-essential linux-libc-dev # Debian/Ubuntu
# or equivalent headers package on your distro
# Patched? (example — adjust for your distro)
uname -r
grep -r CVE-2026-43494 /usr/share/doc/linux* 2>/dev/null || true
# RDS available?
grep CONFIG_RDS /boot/config-$(uname -r) 2>/dev/null
lsmod | grep -E '^rds'
# io_uring enabled?
cat /proc/sys/kernel/io_uring_disabled # expect 0
gcc -O2 -Wall -Wextra -o sley sley.c
स्टैटिक लिंकिंग (वैकल्पिक, न्यूनतम प्रयोगशाला छवियों के लिए):
gcc -O2 -static -o sley sley.c
./sley
सभी स्थिति आउटपुट stderr पर जाता है (ANSI 256-रंग UI, प्रगति पट्टी, चरणबद्ध लॉगिंग)। सुनिश्चित करें कि आपका टर्मिनल बॉक्स-ड्रॉइंग UI के लिए UTF-8 और truecolor/256 रंगों का समर्थन करता है।
उदाहरण चरण:
PHASE 1 │ Reconnaissance
PHASE 2 │ Memory & io_uring setup
PHASE 3 │ Pin reference theft (RDS zerocopy)
PHASE 4 │ Page cache overwrite & privesc
सफलतापूर्वक शोषित कॉन्फ़िगरेशन पर, श्रृंखला पूरी होती है और अधिलेखित पहले पेज के साथ खोजी गई SUID बाइनरी को संभालती है — यदि दौड़ और कर्नेल स्थिति संरेखित होती है तो एक रूट शेल उत्पन्न होता है।
पैच किए गए कर्नेल, कठोर होस्ट, या गायब RDS/io_uring पर, PoC जल्दी विफल हो जाएगा (कोई SUID लक्ष्य, mmap/io_uring/socket त्रुटियाँ, आदि)।
वितरण-विशिष्ट सुरक्षा सलाह बैकपोर्टेड पैच भेज सकते हैं — अपने विक्रेता के कर्नेल सुरक्षा कतार को ट्रैक करें।
.
├── README.md # This file
├── proof-of-concept.jpg # Screenshot: successful LPE (uid 1000 → root)
├── sley.c # Single-file PoC + terminal UI
└── .gitignore
यह सॉफ्टवेयर अनुसंधान और शिक्षा के लिए जैसा है वैसा प्रदान किया गया है। लागू कानूनों का पालन करने और किसी भी सिस्टम का परीक्षण करने से पहले लिखित प्राधिकरण प्राप्त करने की जिम्मेदारी आपकी है जिसके आप मालिक नहीं हैं।
MIT — यदि जोड़ा गया हो तो रिपॉजिटरी लाइसेंस फ़ाइल देखें। जिम्मेदारी से उपयोग करें।
| आइटम | विवरण |
|---|
| CVE | CVE-2026-43494 |
| सार्वजनिक नाम | PinTheft |
| घटक | net/rds — zerocopy भेजने का पथ (rds_message_zcopy_from_user) |
| प्रिमिटिव | जब पेज पिन विफल होता है तो डबल put_page() → FOLL_PIN रेफ्स चुराएं |
| हथियारीकरण | io_uring स्थिर बफर + RDS का असफल zerocopy → पेज-कैश UAF लेखन |
| प्रभाव | कमजोर कॉन्फ़िगरेशन पर स्थानीय रूट |
| अपस्ट्रीम फिक्स | e17492979319 |
| कार्रवाई | नोट्स |
|---|
| कर्नेल पैच करें | कमिट e17492979319 वाले स्थिर फिक्स को लागू करें |
| RDS अक्षम करें | modprobe -r rds_tcp rds (और ऑटोलोड को ब्लॉक करें) यदि आवश्यक न हो |
| io_uring प्रतिबंधित करें | sysctl के माध्यम से kernel.io_uring_disabled=1 या 2 |
| न्यूनतम विशेषाधिकार | अनावश्यक SUID बाइनरी हटाएं; कठोर प्रोफाइल वाले कंटेनर का उपयोग करें |
| निगरानी | RDS zerocopy विफलताओं के फटने + io_uring बफर पंजीकरण पैटर्न पर अलर्ट करें |