
Copy Fail - CVE-2026-31431 - redteam और अधिकृत प्रवेश परीक्षण संचालन के लिए सुरक्षित C कार्यान्वयन। ⚠️ कानूनी नोटिस: यह उपकरण केवल अधिकृत सुरक्षा अनुसंधान, अधिकृत प्रवेश परीक्षण और रक्षात्मक विश्लेषण के लिए है। इसका उपयोग केवल उन सिस्टम पर करें जिनके आप मालिक हैं या जिनके परीक्षण के लिए आपके पास स्पष्ट लिखित अनुमति है। कंप्यूटर सिस्टम तक अनधिकृत पहुँच अवैध है।
रेडटीम और अधिकृत पैनेट्रेशन परीक्षण संचालन के लिए कठोर C कार्यान्वयन।
⚠️ कानूनी सूचना: यह उपकरण केवल अधिकृत सुरक्षा अनुसंधान, अधिकृत पैनेट्रेशन परीक्षण और रक्षात्मक विश्लेषण के लिए है। उन सिस्टमों पर उपयोग करें जिनके आप स्वामी हैं या जिनका परीक्षण करने की स्पष्ट लिखित अनुमति है। कंप्यूटर सिस्टमों तक अनधिकृत पहुंच अवैध है।
🚀 प्राथमिक विकास GitLab पर स्थानांतरित हो गया है।
यह रिपॉजिटरी यहां सक्रिय रूप से बनाए रखा जाता है। समस्याओं और योगदान के लिए, कृपया GitLab का उपयोग करें।
यह प्रोजेक्ट CVE-2026-31431 ("कॉपी फेल") स्थानीय विशेषाधिकार वृद्धि शोषण का एक कठोर, उत्पादन-तैयार C पोर्ट है, जिसे मूलतः Theori और Xint द्वारा 29 अप्रैल 2026 को प्रकट किया गया था।
मूल प्रूफ-ऑफ-कॉन्सेप्ट Python में लिखा गया था और अनुसंधान प्रदर्शन के लिए डिज़ाइन किया गया था। यह कार्यान्वयन इसे निम्नलिखित विशेषताओं के साथ रेडटीम-ग्रेड टूलकिट में बदल देता है:
| गुण | मान |
|---|---|
| प्रकटीकरण तिथि | 29 अप्रैल, 2026 |
| शोधकर्ता | Theori (Jinoh Kang, Yonghwi Jin, Seunghyun Lee), Xint |
| विवरण | https://copy.fail/ |
| मूल PoC | theori-io/copy-fail-CVE-2026-31431 (Python) |
| C पोर्ट (आधार) | tgies/copy-fail-c by Tony Gies |
| प्रभावित कर्नेल | Linux 4.14 -- 6.14 (सुधार कमिट a664bf3d603d से पहले) |
| गंभीरता | CVSS 7.8 (उच्च) -- स्थानीय विशेषाधिकार वृद्धि |
यह भेद्यता Linux कर्नेल के AF_ALG क्रिप्टो उपतंत्र में निहित है। authencesn AEAD टेम्पलेट डिक्रिप्शन के लिए एक इन-प्लेस ऑप्टिमाइज़ेशन लागू करता है: जब सिफरटेक्स्ट किसी फ़ाइल के पेज कैश से splice() के माध्यम से आपूर्ति की जाती है, तो कर्नेल उसी पेज को स्रोत और गंतव्य दोनों के रूप में पुन: उपयोग करता है।
हमले का प्रवाह:
/usr/bin/su) को केवल-पढ़ने के लिए खोलेंAF_ALG के माध्यम से एक authencesn(hmac(sha256),cbc(aes)) AEAD ऑपरेशन सेट करेंsplice() के माध्यम से सिफरटेक्स्ट की आपूर्ति करेंexecve() निष्पादित करें -- कर्नेल कैश से उत्परिवर्तित पेज लोड करता है, setuid-root क्रेड्स प्रदान करता हैमुख्य अंतर्दृष्टि: डिस्क पर मौजूद इनोड कभी संशोधित नहीं होता। केवल इन-मेमोरी पेज कैश उत्परिवर्तित होता है, जिससे पारंपरिक फ़ाइल अधिलेखन शोषणों की तुलना में फोरेंसिक पहचान काफी कठिन हो जाती है।
यह प्रोजेक्ट नौ मॉड्यूलों में रेडटीम-उन्मुख सख्तीकरण के साथ मूल अनुसंधान का विस्तार करता है।
patch_chunk.c)| विशेषता | मूल | हमारा कार्यान्वयन |
|---|---|---|
| सॉकेट प्रबंधन | प्रति खंड नया सॉकेट | सॉकेट पुन: उपयोग (~60% कम सिस्कॉल) |
| सत्यापन | कोई नहीं | mmap + memcmp स्वचालित पुनर्प्रयास (3 प्रयास) के साथ |
| समानांतर लेखन | केवल अनुक्रमिक | फोर्क-आधारित समानांतर (16 प्रोसेस तक) |
| त्रुटि कोड | बाइनरी सफलता/विफलता | सूक्ष्म: 0=सत्यापित, 1=पैच किया हुआ कर्नेल, -1=घातक |
| हीप आवंटन | हॉट पथ में malloc | केवल स्टैक (कोई आवंटन जिटर नहीं) |
target_discovery.c)su, sudo, passwd, pkexec, mount, ping, आदि।/snap (गैर-पारंपरिक setuid) को छोड़ता हैanti_forensics.c)| तकनीक | उद्देश्य |
|---|---|
posix_fadvise(POSIX_FADV_DONTNEED) | प्रति-फ़ाइल पेज कैश निष्कासन |
echo 3 > /proc/sys/vm/drop_caches | वैश्विक कैश ड्रॉप (पोस्ट-रूट) |
utimensat() टाइमस्टॉम्प | मूल atime/mtime पुनर्स्थापित करें |
| स्व-विनाश | निष्पादन से पहले ड्रॉपर बाइनरी को शून्य से अधिलेखित करें |
| मेमोरी वाइप | संवेदनशील बफ़र्स का volatile शून्यीकरण |
memfd_exec.c)kworker, anon_inode, eventfd नाम दिया गया (/proc/$pid/fd/ में घुलमिल जाता है)stage1.c)| चैनल | छिपाव | गति | फ़ॉलबैक प्राथमिकता |
|---|---|---|---|
| एम्बेडेड | अधिकतम | तत्काल | अंतिम (एयरगैप) |
| HTTP डायरेक्ट | मध्यम | <1s | पहला |
| सिस्टम curl/wget | कम | 1-3s | दूसरा (HTTPS समर्थन) |
| DNS TXT | उच्च | धीमा | तीसरा (फ़ायरवॉल बायपास) |
stage2_template.c)SIGUSR1 (ट्रिगर), SIGUSR2 (स्थिति), SIGTERM (शटडाउन)ps/top में [kworker/N:0]proc_hide.c)/proc/$pid/cmdline का इन-प्लेस प्रतिस्थापनSSH_*, AWS_*, TOKEN*, आदि का चयनात्मक वाइपsetsid() + setpgid()signal_trigger.c)| मोड | व्यवहार | उपयोग मामला |
|---|---|---|
trigger_oneshot() | सोएं → ट्रिगर → निष्पादित करें → बाहर निकलें | हिट-एंड-रन |
trigger_daemon() | सोएं → ट्रिगर → निष्पादित करें → लूप | स्थायी इम्प्लांट |
trigger_auto() | टाइमआउट फ़ॉलबैक के साथ सोएं | अनअटेंडेड ऑप्स |
शून्य-सीपीयू प्रतीक्षा: पोलिंग लूप के बजाय sigsuspend()।
sleep_jitter.c)getrandom(2), /dev/urandom, rdtsc फ़ॉलबैकsleep_scheduled() जिटर के बावजूद औसत अंतराल बनाए रखता हैcheck_sandbox_acceleration() पैच किए गए sleep() का पता लगाता है