
CVE-2026-43494 (PinTheft) के लिए प्रूफ-ऑफ-कॉन्सेप्ट: Linux कर्नेल में स्थानीय विशेषाधिकार वृद्धि, जो RDS zerocopy संदर्भ-गणना बग का फायदा उठाकर io_uring फिक्स्ड बफ़र्स के साथ SUID बाइनरी पेज कैश को अधिलेखित करती है।
प्रूफ़ ऑफ़ कॉन्सेप्ट — WSL2 (6.6.87.2-microsoft-standard-WSL2) पर ./sley चलाने के बाद uid=1000(raken) → uid=0(root)
CVE-2026-43494 (PinTheft) के लिए सिंगल-फ़ाइल प्रूफ़-ऑफ़-कॉन्सेप्ट: एक लिनक्स कर्नेल स्थानीय विशेषाधिकार वृद्धि जो RDS zerocopy रेफ़रेंस-काउंट बग को io_uring फिक्स्ड बफ़र्स के साथ जोड़कर SUID-रूट बाइनरी के पेज कैश को ओवरराइट करती है।
अस्वीकरण: यह रिपॉज़िटरी केवल अधिकृत सुरक्षा अनुसंधान, शिक्षा और रक्षात्मक परीक्षण के लिए है। इसे उन सिस्टमों पर चलाना जिनके स्वामी आप नहीं हैं या जिनके परीक्षण की स्पष्ट अनुमति आपके पास नहीं है, अवैध और अनैतिक है। लेखक किसी भी दुरुपयोग के लिए उत्तरदायी नहीं हैं।
मूल सार्वजनिक शोध और 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 के लिए कर्नेल ≥ 6.13sudo 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 त्रुटियाँ, आदि)।
डिस्ट्रो-विशिष्ट सुरक्षा सलाहकार (advisories) बैकपोर्टेड पैच भेज सकते हैं — अपने विक्रेता के कर्नेल सुरक्षा कतार पर नज़र रखें।
.
├── README.md # This file
├── proof-of-concept.jpg # Screenshot: successful LPE (uid 1000 → root)
├── sley.c # Single-file PoC + terminal UI
└── .gitignore
यह सॉफ़्टवेयर अनुसंधान और शिक्षा के लिए यथास्थिति (as-is) प्रदान किया गया है। लागू कानूनों का पालन करना और किसी भी ऐसे सिस्टम का परीक्षण करने से पहले लिखित प्राधिकरण प्राप्त करना आपकी ज़िम्मेदारी है जिसके स्वामी आप नहीं हैं।
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 बफ़र रजिस्ट्रेशन पैटर्न पर अलर्ट करें |