
लिनक्स कर्नेल स्थानीय विशेषाधिकार वृद्धि भेद्यता के लिए Rust PoC, जो Crypto API और splice का दोहन करके पेज कैश को अधिलेखित करता है और रूट प्राप्त करने के लिए /etc/passwd UID को संशोधित करता है।
यह प्रोजेक्ट एक Proof of Concept (PoC) है जो Rust में लागू किया गया है, जो एक स्थानीय विशेषाधिकार वृद्धि (LPE) भेद्यता (CVE-2026-31431 का अनुकरण) के लिए है। यह दर्शाता है कि Crypto API का शोषण करके Linux कर्नेल पेज कैश में हेरफेर कैसे किया जाए।[cite: 1, 2]
[!CAUTION] यह कोड केवल शैक्षिक और नैतिक सुरक्षा अनुसंधान उद्देश्यों के लिए है। पूर्व स्पष्ट सहमति के बिना सिस्टम के विरुद्ध इस टूल का अनधिकृत उपयोग अवैध है। लेखक इस प्रोग्राम से होने वाले किसी भी दुरुपयोग या क्षति के लिए कोई जिम्मेदारी नहीं लेता है।
यह टूल AF_ALG (कर्नेल क्रिप्टो इंटरफ़ेस) और splice सिस्टम कॉल से संबंधित एक भेद्यता का शोषण करता है।[cite: 2] यह एक अन-विशेषाधिकार प्राप्त उपयोगकर्ता को केवल-पठनीय फ़ाइल के पेज कैश के 4 बाइट्स को अधिलेखित करने की अनुमति देता है—विशेष रूप से /etc/passwd में UID फ़ील्ड को लक्षित करके उसे अस्थायी रूप से 0000 (रूट) में बदलने के लिए।[cite: 1, 2]
main.rs को पार्स करता है ताकि /etc/passwd के भीतर वर्तमान उपयोगकर्ता के UID का सटीक फ़ाइल ऑफ़सेट खोजा जा सके।[cite: 1, 2]AF_ALG का उपयोग करके authencesn(hmac(sha256),cbc(aes)) एल्गोरिथम के साथ एक सॉकेट प्रारंभ करता है।[cite: 2]setsockopt पैरामीटर को सावधानीपूर्वक तैयार करके और splice का उपयोग करके, यह फ़ाइल डेटा को क्रिप्टो पाइपलाइन के माध्यम से पुनर्निर्देशित करता है।[cite: 2]0000) के साथ अधिलेखित करने की अनुमति देती है।[cite: 2]--shell फ़्लैग प्रदान किया गया है, तो यह su <user> निष्पादित करता है, जो सफल होता है क्योंकि सिस्टम अब कैश किए गए /etc/passwd में उपयोगकर्ता के UID को 0 के रूप में देखता है।[cite: 1]POSIX_FADV_DONTNEED का उपयोग करके दूषित पेज कैश को हटा देता है।[cite: 1]libc और nix (fs, socket, zerocopy, और user सुविधाओं के साथ)।[cite: 3]cargo build --release
शेल स्पॉन किए बिना पेज कैश पैचिंग का परीक्षण करें:
./target/release/cve-2026-31431
रूट शेल तक विशेषाधिकार वृद्धि का प्रयास करें:
./target/release/cve-2026-31431 --shell
main.rs: हमले का समन्वय करता है, CLI तर्कों को संभालता है, और अंतिम शेल कमांड निष्पादित करता है।[cite: 1]modules.rs: मुख्य शोषण तर्क शामिल करता है, जिसमें AF_ALG सॉकेट हेरफेर और UID ऑफ़सेट खोज शामिल है।[cite: 2]Cargo.toml: प्रोजेक्ट मेटाडेटा और बाहरी क्रेट निर्भरताओं को परिभाषित करता है।[cite: 3]main.rs, modules.rs, Cargo.toml[cite: 1, 2, 3]socket, bind, sendmsg, splice, posix_fadvise।[cite: 1, 2]