
वाज़ुह 4.14.4 के लिए CVE-2026-31431 (कॉपी फेल) का पता लगाने के नियम - authencesn पेज कैश राइट के माध्यम से लिनक्स स्थानीय विशेषाधिकार वृद्धि
Copy Fail कर्नेल LPE के लिए डिटेक्शन इंजीनियरिंग · Ubuntu / RHEL / SUSE / Amazon Linux 2023 / Kali
CVE-2026-31431 Linux कर्नेल के authencesn क्रिप्टोग्राफिक टेम्पलेट में एक लॉजिक बग है। यह किसी भी अनप्रिविलेज्ड स्थानीय उपयोगकर्ता को सिस्टम पर किसी भी पठनीय फ़ाइल के पेज कैश में एक निर्धारित, नियंत्रित 4-बाइट राइट करने की अनुमति देता है - बिना रेस कंडीशन, कर्नेल ऑफसेट, या उन्नत विशेषाधिकारों की आवश्यकता के।
केवल स्टैंडर्ड लाइब्रेरी मॉड्यूल (os, socket, zlib) का उपयोग करने वाली एक 732-बाइट Python 3.10+ स्क्रिप्ट 2017 से शिप किए गए सभी प्रमुख Linux वितरणों पर रूट प्राप्त करने के लिए इस भेद्यता का शोषण करती है।
डिस्क पर मौजूद फ़ाइल अपरिवर्तित रहती है, जिससे पारंपरिक फ़ाइल इंटीग्रिटी मॉनिटरिंग (FIM) पूरी तरह से अंधी हो जाती है।
Taeyang Lee (Theori / Xint) द्वारा Xint Code AI टूल की सहायता से खोजा गया।
राइट केवल इन-मेमोरी पेज कैश को लक्षित करता है। कर्नेल पेज को कभी डर्टी के रूप में चिह्नित नहीं करता है, इसलिए राइटबैक तंत्र इसे कभी डिस्क पर स्थायी नहीं करता है। डिस्क पर मौजूद बाइनरी मूल के बाइट-दर-बाइट समान रहती है।
पारंपरिक FIM दृष्टिकोण:
डिस्क से फ़ाइल पढ़ें -> हैश की गणना करें -> तुलना करें -> कोई विसंगति रिपोर्ट नहीं
Copy Fail वास्तविकता:
डिस्क पर फ़ाइल = अपरिवर्तित
पेज कैश = दूषित
FIM परिणाम = अंधा
एकमात्र प्रभावी डिटेक्शन व्यवहारिक है, syscall मॉनिटरिंग के माध्यम से। यह रिपॉजिटरी प्रोडक्शन-मान्य Wazuh नियम प्रदान करती है जो कर्नेल syscall स्तर पर शोषण श्रृंखला का पता लगाती है।
चरण 1: socket(38, 5, 0) AF_ALG सॉकेट - कोई विशेषाधिकार आवश्यक नहीं
चरण 2: bind() authencesn से बाइंड करें - भेद्य कोड सक्रिय करें
चरण 3: sendmsg() AAD पेलोड तैयार करें - बाइट 4-7 = लिखने के लिए मान
चरण 4: splice() [!] ट्रिगर - पेज कैश पेज राइटेबल SGL में प्रवेश करते हैं
चरण 5: recv() authencesn seqno_lo को पेज कैश में लिखता है
चरण 6: execve(/usr/bin/su) दूषित setuid बाइनरी UID 0 के रूप में शेलकोड चलाती है
splice() महत्वपूर्ण चरण है। यह कॉपी किए बिना AF_ALG सॉकेट के राइटेबल स्कैटरलिस्ट में पेज कैश पेज पहुंचाता है - algif_aead.c में 2017 का इन-प्लेस ऑप्टिमाइज़ेशन जिसने पाइप बफर के पेज को गंतव्य SGL में पुन: उपयोग योग्य बना दिया। जब authencesn.decrypt() चलता है, तो यह उन पेजों में लिखता है, जो आपकी लक्षित फ़ाइल का पेज कैश होते हैं।
कमिट 72548b093ee3 (2017) के बाद से कर्नेल शिप करने वाले सभी Linux वितरण प्रभावित हैं।
कंटेनर एस्केप: Copy Fail एक कंटेनर एस्केप वेक्टर भी है। पेज कैश होस्ट पर सभी प्रोसेस के बीच साझा होता है, जिसमें कंटेनर सीमाओं के पार भी शामिल है। Kubernetes शोषण के लिए Xint का भाग 2 देखें।
COPY-FAIL-Detection-with-Wazuh-4.14.4/
│
├── rules/
│ └── local_rules.xml # 8 Wazuh डिटेक्शन नियम (199600-199607)
│
├── auditd/
│ └── cve-2026-31431.rules # auditd syscall सेंसर नियम
│
├── sca/
│ └── cve_2026_31431.yml # SCA नीति - कर्नेल-संस्करण स्वतंत्र
│
└── docs/
├── pentlab_uid.png # PoC निष्पादन - Kali पर रूट प्राप्त
├── Rule-199604-TRIGs.png # नियम 199604 - pentlab पर 80 हिट
├── Rule_199604_Wazuh_Server_only.png # नियम 199604 - पहला सत्यापन
├── Splice_-_Non-root_process.png # नियम 199600/199601/199604 फायरिंग
├── Modprobe_-_Possible_Algif_aed_load_attempt.png # नियम 199603
├── Pentlab-PoC.png # pentlab एजेंट पर नियम 199603
├── exploit_chain_timeline.svg # शोषण श्रृंखला
└── SCA_CVE-2026-31431.png # SCA नीति स्कोर 75%
दो स्वतंत्र परतें — कोई भी कर्नेल संस्करण पर निर्भर नहीं करती।
uid!=0 फ़िल्टर इंटरैक्टिव खातों से परे उपयोगकर्ताओं को कवर करता है: सेवा खाते (www-data, postgres, jenkins), कंटेनर, और बिना लॉगिन सत्र वाले वेब शेल।
Auditd सेंसर नियम (auditd/cve-2026-31431.rules):
-a always,exit -F arch=b64 -S socket -F a0=0x26 -F uid!=0 -k copy_fail_af_alg
-a always,exit -F arch=b32 -S socket -F a0=0x26 -F uid!=0 -k copy_fail_af_alg
-a always,exit -F arch=b64 -S splice -F uid!=0 -k copy_fail_splice
-w /usr/bin/su -p x -k copy_fail_execve_su
-w /usr/bin/kmod -p x -k copy_fail_modload
sca/cve_2026_31431.yml के माध्यम से हर 12 घंटे में स्वचालित कॉन्फ़िगरेशन जांच। कोई कर्नेल संस्करण आवश्यक नहीं।
इंजीनियरिंग नोट: नियम 199600 और 199601 को नियम 92600 (Python प्रोसेस, गहराई 1) के चाइल्ड होना चाहिए, न कि 80700 के। Wazuh नियम इंजन प्रति इवेंट एक श्रृंखला पथ का अनुसरण करता है। डिटेक्शन नियमों को 92600 के तहत गहराई 2 पर रखने से वे सहोदर नियमों (जैसे 0850-audit_rules.xml में 92603-92606 जो
if_group=audit + exe=pythonसे भी मेल खाते हैं) पर श्रृंखला मूल्यांकन जीतने की गारंटी देते हैं।
# Ubuntu / Debian / Kali
apt install auditd audispd-plugins -y
systemctl enable --now auditd
auditctl -s | grep enabled
# RHEL / Amazon Linux
yum install audit -y
systemctl enable --now auditd
# SUSE
zypper install audit -y
systemctl enable --now auditd
cp auditd/cve-2026-31431.rules /etc/audit/rules.d/
augenrules --load
auditctl -l | grep copy_fail
अपेक्षित आउटपुट:
-a always,exit -F arch=b64 -S socket -F a0=0x26 -F uid!=0 -F key=copy_fail_af_alg
-a always,exit -F arch=b32 -S socket -F a0=0x26 -F uid!=0 -F key=copy_fail_af_alg
-a always,exit -F arch=b64 -S splice -F uid!=0 -F key=copy_fail_splice
-w /usr/bin/su -p x -k copy_fail_execve_su
-w /usr/bin/kmod -p x -k copy_fail_modload
नियम rules/local_rules.xml में प्रदान किए गए हैं। आप सामग्री को अपनी मौजूदा /var/ossec/etc/rules/local_rules.xml में विलय कर सकते हैं या स्टैंडअलोन फ़ाइल के रूप में परिनियोजित कर सकते हैं:
# विकल्प A - स्टैंडअलोन फ़ाइल
cp rules/local_rules.xml /var/ossec/etc/rules/cve-2026-31431_rules.xml
# विकल्प B - local_rules.xml में जोड़ें
cat rules/local_rules.xml >> /var/ossec/etc/rules/local_rules.xml
# सिंटैक्स सत्यापित करें - शून्य चेतावनियों के साथ बाहर निकलना चाहिए 0
/var/ossec/bin/wazuh-analysisd -t 2>&1 | tail -5
# मैनेजर पुनः आरंभ करें
systemctl restart wazuh-manager
cp sca/cve_2026_31431.yml /var/ossec/etc/shared/default/
ossec.conf में <sca> ब्लॉक के अंदर जोड़ें:
<policies>
<policy>/var/ossec/etc/shared/default/cve_2026_31431.yml</policy>
</policies>
systemctl restart wazuh-manager
सुनिश्चित करें कि Wazuh auditd लॉग को इन्जेस्ट करता है:
<!-- <ossec_config> के अंदर जोड़ें -->
<localfile>
<log_format>audit</log_format>
<location>/var/log/audit/audit.log</location>
</localfile>
# आवश्यकता पड़ने पर एक परीक्षण उपयोगकर्ता बनाएं
useradd -m testuser 2>/dev/null || true
# सिग्नल 1 उत्पन्न करें - AF_ALG सॉकेट
su - testuser -c "python3 -c \"import socket; socket.socket(38, 5, 0); print('AF_ALG OK')\""
# सिग्नल 3 उत्पन्न करें - /usr/bin/su निष्पादन
su - testuser -c "/usr/bin/su --help 2>/dev/null || true"
# सत्यापित करें कि auditd ने इवेंट कैप्चर किए
ausearch -k copy_fail_af_alg -ts recent 2>/dev/null | grep "key=\|exe=\|uid=" | head -5
# सत्यापित करें कि Wazuh ने अलर्ट उत्पन्न किए
grep -E "199600|199602" /var/ossec/logs/alerts/alerts.log | tail -10
grep -E "31431|cve_2026" /var/ossec/logs/alerts/alerts.log | tail -10
अपेक्षित SCA स्कोर (अनमिटिगेटेड सिस्टम): 75% (3 पास / 1 विफल - algif_aead ब्लैकलिस्टेड नहीं)
testuser (uid=1001) ने 732-बाइट PoC निष्पादित किया और रूट शेल प्राप्त किया:

समान python प्रोसेस से AF_ALG सॉकेट + splice() - pid=46784 - तत्काल जांच आवश्यक:






Wazuh डैशबोर्ड Discover परिणाम (एजेंट=pentlab, आज):
wazuh-analysisd -t: बाहर निकलें 0 - शून्य चेतावनियाँ - सभी 8 नियम लोड हुए।
rmmod algif_aead 2>/dev/null || true
echo 'install algif_aead /bin/false' > /etc/modprobe.d/disable-algif-aead.conf
यह dm-crypt/LUKS, kTLS, IPsec, OpenSSL, GnuTLS, या SSH को प्रभावित नहीं करता है।
अपने वितरण के कर्नेल अपडेट के माध्यम से कर्नेल कमिट a664bf3d603d लागू करें। यह algif_aead.c में 2017 के इन-प्लेस ऑप्टिमाइज़ेशन को वापस लेता है, req->src (TX SGL, जहां splice पेज पहुंचाता है) को req->dst (RX SGL, उपयोगकर्ता बफर) से अलग करता है। सभी प्रमुख वितरण फिक्स शिप कर रहे हैं।
# Ubuntu / Debian
apt update && apt upgrade linux-generic
# RHEL / Amazon Linux
dnf update kernel
# SUSE
zypper update kernel-default
Kislley Rodrigues (m0us3r) Wazuh एम्बेसडर | डिटेक्शन इंजीनियरिंग | ब्लू टीम
डिटेक्शन नियम, auditd सेंसर कॉन्फ़िगरेशन और SCA नीति Wazuh 4.14.4, Ubuntu 24.04.2 LTS (कर्नेल 6.8.0-106-generic) और Kali GNU/Linux 2026.1 (कर्नेल 6.18.12+kali-amd64) पर सत्यापित।
| स्रोत | लिंक |
|---|---|
| CISA ने सक्रिय रूप से शोषित Linux रूट एक्सेस बग CVE-2026-31431 को KEV में जोड़ा | https://thehackernews.com/2026/05/cisa-adds-actively-exploited-linux-root.html |
यह प्रोजेक्ट Wazuh एम्बेसडर प्रोग्राम के भाग के रूप में विकसित किया गया था।
Wazuh एक मुफ्त, ओपन सोर्स सुरक्षा प्लेटफ़ॉर्म है जो एकीकृत XDR और SIEM सुरक्षा प्रदान करता है। wazuh.com पर अधिक जानें।
| संसाधन | लिंक |
|---|
| आधिकारिक CVE साइट | https://copy.fail/ |
| तकनीकी राइट-अप - Xint Research | https://xint.io/blog/copy-fail-linux-distributions |
| PoC - copy_fail_exp.py | https://github.com/theori-io/copy-fail-CVE-2026-31431/blob/main/copy_fail_exp.py |
| कर्नेल फिक्स - a664bf3d603d | https://github.com/torvalds/linux/commit/a664bf3d603d |
| भेद्य कमिट - 72548b093ee3 | https://github.com/torvalds/linux/commit/72548b093ee3 |
| MITRE ATT&CK T1068 | https://attack.mitre.org/techniques/T1068/ |
| वितरण | कर्नेल | स्थिति |
|---|
| Ubuntu 24.04 LTS | 6.17.0-1007-aws | ROOT कन्फर्म |
| Amazon Linux 2023 | 6.18.8-9.213.amzn2023 | ROOT कन्फर्म |
| RHEL 10.1 | 6.12.0-124.45.1.el10_1 | ROOT कन्फर्म |
| SUSE 16 | 6.12.0-160000.9-default | ROOT कन्फर्म |
| Kali GNU/Linux 2026.1 | 6.18.12+kali-amd64 | ROOT कन्फर्म |
| नियम | पैरेंट | सिग्नल | गहराई | स्तर |
|---|
| 80700 | decoded_as=auditd | auditd एंकर (Wazuh बिल्ट-इन) | 0 | 0 |
| 92600 | 80700 | Python प्रोसेस निष्पादन (Wazuh बिल्ट-इन) | 1 | 0 |
| 199600 | 92600 | AF_ALG सॉकेट - python श्रृंखला | 2 | 10 |
| 199601 | 92600 | splice() syscall - python श्रृंखला | 2 | 10 |
| 199604 | 199601 + if_matched=199600 | शोषण श्रृंखला - python (समान pid/120s) | 3 | 15 |
| 199602 | 80700 | /usr/bin/su निष्पादन | 1 | 6 |
| 199603 | 80700 | modprobe/kmod निष्पादन | 1 | 12 |
| 199605 | 80700 | AF_ALG सॉकेट - गैर-python | 1 | 10 |
| 199606 | 80700 | splice() syscall - गैर-python | 1 | 10 |
| 199607 | 199606 + if_matched=199605 | शोषण श्रृंखला - गैर-python (समान pid/120s) | 2 | 15 |
| नियम | हिट | विवरण |
|---|
| 199604 | 80 | शोषण श्रृंखला का पता चला - pid=46784 exe=/usr/bin/python3.13 |
| 199600 | 40 | गैर-रूट प्रोसेस द्वारा AF_ALG सॉकेट बनाया गया |
| 199603 | 28 | modprobe निष्पादन का पता चला |
| 199602 | 12 | /usr/bin/su निष्पादित |
| तिथि | घटना |
|---|
| 2026-03-23 | भेद्यता Linux कर्नेल सुरक्षा टीम को रिपोर्ट की गई |
| 2026-03-24 | प्रारंभिक पुष्टि प्राप्त हुई |
| 2026-03-25 | पैच प्रस्तावित और समीक्षित |
| 2026-04-01 | पैच मेनलाइन कर्नेल में कमिट किया गया (a664bf3d603d) |
| 2026-04-22 | CVE-2026-31431 असाइन किया गया |
| 2026-04-29 | सार्वजनिक प्रकटीकरण - Xint राइट-अप + PoC प्रकाशित |
| Dirty Cow (2016-5195) | Dirty Pipe (2022-0847) | Copy Fail (2026-31431) |
|---|
| रेस कंडीशन | हाँ - कई प्रयास | नहीं | नहीं - निर्धारित लॉजिक |
| सिस्टम क्रैश कर सकता है | हाँ | नहीं | नहीं |
| पोर्टेबिलिटी | सीमित | संस्करण-विशिष्ट | सभी डिस्ट्रो 2017+ |
| शोषण आकार | किलोबाइट्स (C) | सैकड़ों बाइट्स | 732 बाइट्स (Python stdlib) |
| FIM डिटेक्शन | संभव | संभव | संभव नहीं |
| जांच | शीर्षक | जोखिम |
|---|
| 31431001 | algif_aead मेमोरी में लोड नहीं | CRITICAL |
| 31431002 | algif_aead modprobe.d के माध्यम से अक्षम | HIGH |
| 31431003 | auditd सक्रिय और चल रहा है | HIGH |
| 31431004 | CVE-2026-31431 सेंसर नियम परिनियोजित | HIGH |
| ज्ञात शोषित भेद्यताएँ कैटलॉग | https://www.cisa.gov/known-exploited-vulnerabilities-catalog |
| CVE-2026-31431 - crypto: algif_aead - आउट-ऑफ-प्लेस संचालन पर वापस लौटें | https://www.cve.org/CVERecord?id=CVE-2026-31431 |