Skip to content
KitploitKITPLOIT
उपकरणब्लॉग
जमा करें
उपकरणब्लॉग
जमा करें

हैकिंग, पेनटेस्ट और साइबर सुरक्षा उपकरण आपके सुरक्षा शस्त्रागार के लिए!

Kitploit हैकिंग, साइबर सुरक्षा और पेंटेस्टिंग टूल्स की एक निर्देशिका है। कमजोरियों को खोजने, सिस्टम का विश्लेषण करने, परीक्षण को स्वचालित करने और अपनी सुरक्षा को मजबूत करने के लिए नवीनतम प्रोजेक्ट अपडेट खोजें।

··फ़ीड·संपर्क·गोपनीयता·© 2026 Kitploit

टूल निर्देशिका

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
CVE-2026-31431_CopyFail_LinuxKernel_LPE — शैक्षिक पुनर्लेखन ऑफ़ कॉपी फेल पीओसी (सीवीई-2026-31431) — लिनक्स कर्नेल एलपीई algif_aead इन-प्लेस क्रिप्टो + splice() पेज-कैश राइट के माध्यम से | Kitploit
उपकरण/GitHubGitHub/xn0kkx/cve-2026-31431_copyfail_linuxkernel_lpe
विशेषाधिकार वृद्धिशोषण फ्रेमवर्कभेद्यता विश्लेषणशोषणलर्निंग और शिक्षाबाइनरी शोषण
GitHubxn0kkx/cve-2026-31431_copyfail_linuxkernel_lpe

CVE-2026-31431_CopyFail_LinuxKernel_LPE

शैक्षिक पुनर्लेखन ऑफ़ कॉपी फेल पीओसी (सीवीई-2026-31431) — लिनक्स कर्नेल एलपीई algif_aead इन-प्लेस क्रिप्टो + splice() पेज-कैश राइट के माध्यम से

सबसे लोकप्रिय

सभी देखें →

हमारे समुदाय द्वारा सबसे अधिक उपयोग किए जाने वाले उपकरण खोजें।

सभी उपकरण खोजें

हमारे उपकरणों का संग्रह ब्राउज़ करें

सभी उपकरण देखें →
साझा करें
रिपॉजिटरी देखें
23 महीने पहलेअभी तक समीक्षित नहीं

CVE-2026-31431 — कॉपी फेल (लिनक्स कर्नेल LPE)

Theori/Xint के प्रूफ-ऑफ-कॉन्सेप्ट का शैक्षिक पुनर्लेखन CVE-2026-31431 के लिए, जो लिनक्स कर्नेल के algif_aead क्रिप्टो सॉकेट इंटरफेस में एक स्थानीय विशेषाधिकार वृद्धि भेद्यता है। यह 4.14 (जुलाई 2017) से 6.18.21 तक के हर मुख्यधारा कर्नेल, और 6.19.11 तक की 6.19 स्थिर शाखा को प्रभावित करता है।


अस्वीकरण

केवल शैक्षिक और अधिकृत सुरक्षा अनुसंधान के लिए। उन सिस्टमों पर न चलाएं जिनके आप मालिक नहीं हैं या जिनके परीक्षण के लिए आपके पास स्पष्ट लिखित अनुमति नहीं है। इसे कमजोर होस्ट पर चलाने से किसी भी अन-प्रिविलेज्ड स्थानीय उपयोगकर्ता को तुरंत रूट एक्सेस मिल जाता है। लेखक दुरुपयोग के लिए कोई जिम्मेदारी नहीं लेते हैं।


भेद्यता सारांश

लिनक्स कर्नेल ने कर्नेल 3.2 से AF_ALG सॉकेट परिवार (<linux/if_alg.h>) के माध्यम से उपयोगकर्ता स्थान को एक इन-कर्नेल क्रिप्टोग्राफी API उजागर किया है। उपयोगकर्ता स्थान एक SOCK_SEQPACKET सॉकेट खोलता है, इसे एक एल्गोरिदम टेम्पलेट (जैसे "aead" / "authencesn(hmac(sha256),cbc(aes))") से बांधता है, और एन्क्रिप्शन या डिक्रिप्शन के लिए डेटा भेजता है।

2017 में, एक प्रदर्शन अनुकूलन मर्ज किया गया था जो AEAD एल्गोरिदम को डेटा को इन-प्लेस एन्क्रिप्ट या डिक्रिप्ट करने की अनुमति देता है जब कर्नेल पता लगाता है कि स्रोत और गंतव्य समान अंतर्निहित पृष्ठ साझा करते हैं। यह प्रत्येक ऑपरेशन पर एक अनावश्यक मेमोरी कॉपी से बचाता है।

authencesn टेम्पलेट (जो प्रमाणित एन्क्रिप्शन में विस्तारित अनुक्रम संख्या समर्थन जोड़ता है) में डिक्रिप्शन के दौरान एक स्क्रैच-राइट होता है: यह प्रमाणीकरण जांच चलने से पहले ऑपरेशन के डेटा बफर के भीतर एक विशिष्ट ऑफसेट पर ESN बाइट्स लिखता है। जब ऑपरेशन के स्रोत पृष्ठ splice() के माध्यम से एक नियमित फ़ाइल के पेज कैश से प्राप्त किए गए थे, और इन-प्लेस अनुकूलन सक्रिय है, तो यह स्क्रैच राइट सीधे उन कैश्ड पृष्ठों में वापस चला जाता है।

क्योंकि कर्नेल का पेज कैश एक साझा मैपिंग है — कोई भी प्रक्रिया जो समान फ़ाइल खोलती है वह समान भौतिक पृष्ठ देखती है — एक अन-प्रिविलेज्ड उपयोगकर्ता यह कर सकता है:

  1. किसी भी पठनीय फ़ाइल (जैसे /usr/bin/su) को O_RDONLY के साथ खोलें।
  2. इसके पृष्ठों को एक AF_ALG ऑपरेशन सॉकेट में splice करें।
  3. एक authencesn डिक्रिप्शन ट्रिगर करें; ESN स्क्रैच राइट नियंत्रित ऑफसेट पर हमलावर-नियंत्रित बाइट्स के साथ पृष्ठ को दूषित करता है।
  4. डिस्क कभी संशोधित नहीं होती; केवल इन-मेमोरी पेज कैश पैच किया जाता है।

ऑफ-होस्ट अखंडता स्कैनर (AIDE, Tripwire, IMA/EVM) जो डिस्क पर फ़ाइलों के चेकसम की तुलना करते हैं, इस हमले के प्रति पूरी तरह से अंधे हैं। पेज-कैश निष्कासन या रीबूट के बाद लेखन गायब हो जाता है, जिससे डिस्क पर कोई फोरेंसिक निशान नहीं रहता।

/usr/bin/su (एक setuid root बाइनरी) को लक्षित करके और PAM प्रमाणीकरण जांच की रक्षा करने वाली शाखा को अधिलेखित करके, हमलावर एक पासवर्ड-रहित रूट शेल प्राप्त करता है।


प्रभावित कर्नेल

बग पेश करने वाला अनुकूलन कमिट 4.14 विकास चक्र (जुलाई 2017) में आया था। उपरोक्त श्रेणियों में CONFIG_CRYPTO_USER_API_AEAD=y और CONFIG_CRYPTO_AUTHENC=y (दोनों सामान्य डिफ़ॉल्ट) के साथ संकलित कोई भी कर्नेल कमजोर है।


प्रभावित वितरण (गैर-व्यापक)

सटीक सलाह स्थिति के लिए अपने वितरण के सुरक्षा ट्रैकर की जांच करें।


आवश्यकताएँ

  • कमजोर श्रेणी में लिनक्स कर्नेल (ऊपर तालिका देखें)
  • Python 3.10+ (os.splice Python 3.10 में जोड़ा गया था)
  • लक्ष्य बाइनरी तक पढ़ने की पहुंच (डिफ़ॉल्ट: /usr/bin/su, विश्व-पठनीय क्योंकि यह setuid है)
  • कोई विशेष विशेषाधिकार आवश्यक नहीं — यह एक स्थानीय विशेषाधिकार वृद्धि है

उपयोग

root@kitploit:~
# दिखाएं कि कर्नेल को छुए बिना क्या लिखा जाएगा (सुरक्षित):
python3 copy_fail_exploit.py --dry-run

# /usr/bin/su पेज कैश पैच करें (कमजोर कर्नेल आवश्यक):
# चेतावनी: कमजोर कर्नेल आवश्यक है -- केवल उन सिस्टमों पर उपयोग करें जिनके आप मालिक हैं
python3 copy_fail_exploit.py

# पैच करें और तुरंत रूट तक बढ़ाएं:
python3 copy_fail_exploit.py --spawn-shell

# कस्टम लक्ष्य बाइनरी और पेलोड का उपयोग करें:
python3 copy_fail_exploit.py --target /usr/bin/sudo --payload-file ./custom_patch.bin

# विस्तृत आउटपुट (प्रत्येक 4-बाइट लेखन प्रिंट करें):
python3 copy_fail_exploit.py --verbose --dry-run

डिफ़ॉल्ट रूप से --spawn-shell बंद है। पैचिंग के बाद, स्क्रिप्ट प्रिंट करती है:

root@kitploit:~
[+] Patch applied to page cache of '/usr/bin/su' (disk unchanged).
    Run `su` to escalate, or re-run with --spawn-shell.
    To restore: echo 3 | sudo tee /proc/sys/vm/drop_caches

आपको --spawn-shell के साथ शेल स्पॉन में ऑप्ट-इन करना होगा। यह जानबूझकर है: यह आपको परिणाम निष्पादित करने से पहले समझने के लिए मजबूर करता है कि एक्सप्लॉइट ने क्या किया।


यह कैसे काम करता है

प्रिमिटिव सेट करना। एक्सप्लॉइट एक AF_ALG सॉकेट खोलता है और इसे डमी ऑल-शून्य कुंजी के साथ authencesn(hmac(sha256),cbc(aes)) टेम्पलेट से बांधता है। यह फिर ALG_SET_AEAD_AUTHSIZE के माध्यम से प्रमाणीकरण टैग आकार को 4 बाइट्स पर कॉन्फ़िगर करता है। नियंत्रण सॉकेट पर accept() एक ऑपरेशन सॉकेट उत्पन्न करता है जो व्यक्तिगत डिक्रिप्ट अनुरोध सबमिट कर सकता है।

पेज-कैश लेखन ट्रिगर करना। पैच पेलोड के प्रत्येक 4-बाइट चंक के लिए, एक्सप्लॉइट MSG_MORE सेट के साथ ऑपरेशन सॉकेट पर sendmsg() कॉल करता है, 8 बाइट्स संबद्ध डेटा (AAD) पास करता है: 4 बाइट्स फिलर के बाद 4 पेलोड बाइट्स। MSG_MORE कर्नेल को अधिक डेटा आने तक ऑपरेशन को रोकने के लिए कहता है। यह फिर एक पाइप बनाता है और दो splice() कॉल जारी करता है — file_fd → pipe → op_sock — फ़ाइल के अपने पेज-कैश पृष्ठों को डिक्रिप्शन ऑपरेशन के इनपुट के रूप में दान करता है। जब recv() अंततः कॉल किया जाता है, कर्नेल authencesn डिक्रिप्शन चलाता है। इन-प्लेस अनुकूलन सक्रिय होता है (स्रोत और गंतव्य समान पृष्ठ हैं), और ESN स्क्रैच राइट हमारे पेलोड बाइट्स को लक्ष्य ऑफसेट पर कैश पृष्ठ में कॉपी करता है। recv() EBADMSG लौटाता है क्योंकि प्रमाणीकरण टैग सत्यापित नहीं हो सकता — यह अपेक्षित और हानिरहित है। लेखन पहले ही हो चुका है।

बाइनरी पैच करना। एम्बेडेड पेलोड (Theori PoC से शब्दशः लिया गया) /usr/bin/su में एक शाखा निर्देश को स्टॉक util-linux बिल्ड से अधिलेखित करता है, PAM प्रमाणीकरण लागू करने वाली सशर्त जंप को बिना शर्त फॉल-थ्रू में बदल देता है। पैचिंग के बाद, बिना पासवर्ड के su चलाना सफल होता है और एक रूट शेल छोड़ता है। डिस्क पर बाइनरी अछूती है; पेज-कैश प्रविष्टियों को हटाना (echo 3 > /proc/sys/vm/drop_caches) परिवर्तन को तुरंत वापस कर देता है।

गहन तकनीकी विश्लेषण के लिए नीचे दिए गए संदर्भ देखें, विशेष रूप से Xint ब्लॉग पोस्ट और Theori PoC रिपॉजिटरी।


पहचान

Falco नियम

root@kitploit:~
- rule: AF_ALG socket opened by unprivileged process
  desc: >
    CVE-2026-31431 — an unprivileged process opened an AF_ALG (family 38)
    socket, which is the first step of the Copy Fail exploit.
  condition: >
    evt.type = socket and
    evt.arg.domain = 38 and
    not user.uid = 0
  output: >
    AF_ALG socket opened (user=%user.name uid=%user.uid
    pid=%proc.pid comm=%proc.name)
  priority: WARNING
  tags: [host, network, privilege_escalation, CVE-2026-31431]

YARA (एक्सप्लॉइट स्क्रिप्ट के लिए मेमोरी स्कैन)

root@kitploit:~
rule CopyFail_CVE_2026_31431 {
    meta:
        description = "Detects Copy Fail exploit script in memory or on disk"
        cve         = "CVE-2026-31431"
    strings:
        $template = "authencesn(hmac(sha256),cbc(aes))" ascii
        $splice   = "os.splice" ascii
        $aflag    = "AF_ALG" ascii
    condition:
        all of them
}

auditd — AF_ALG सॉकेट निर्माण का पता लगाएं

/etc/audit/rules.d/cve-2026-31431.rules में जोड़ें:

root@kitploit:~
-a always,exit -F arch=b64 -S socket -F a0=38 -k cve_2026_31431_afalg

फिर लॉग देखें:

root@kitploit:~
ausearch -k cve_2026_31431_afalg --interpret

शमन

1. कर्नेल पैच लागू करें (अनुशंसित) कर्नेल 6.18.22, 6.19.12, 7.0-rc7 या बाद में अपग्रेड करें, या अपने वितरण का सुरक्षा अद्यतन लागू करें।

2. बिल्ड समय पर CONFIG_CRYPTO_USER_API_AEAD अक्षम करें यदि आप अपना स्वयं का कर्नेल बनाते हैं, सेट करें:

root@kitploit:~
# CONFIG_CRYPTO_USER_API_AEAD is not set

यह पूरे AF_ALG AEAD इंटरफेस को हटा देता है और हमले की सतह को समाप्त करता है। अधिकांश एम्बेडेड/हार्डन्ड तैनाती को इसकी आवश्यकता नहीं होती है।

3. seccomp — AF_ALG सॉकेट परिवार अस्वीकार करें संवेदनशील प्रक्रियाओं (या LSM नीति के माध्यम से सिस्टम-व्यापी) में एक seccomp फ़िल्टर जोड़ें जो socket(AF_ALG, ...) को अस्वीकार करता है:

root@kitploit:~
// Deny socket() when domain == AF_ALG (38)
BPF_STMT(BPF_LD | BPF_W | BPF_ABS, offsetof(struct seccomp_data, args[0])),
BPF_JUMP(BPF_JMP | BPF_JEQ | BPF_K, 38, 0, 1),
BPF_STMT(BPF_RET | BPF_K, SECCOMP_RET_ERRNO | EACCES),

4. कर्नेल हार्डनिंग के माध्यम से पेज-कैश विशेषाधिकार हटाएं vm.unprivileged_userfaultfd=0 और समान ट्यूनेबल उपयोगकर्ता-सुलभ कर्नेल मेमोरी इंटरफेस की हमले की सतह को कम करते हैं, हालांकि वे सीधे इस CVE को अवरुद्ध नहीं करते हैं।


परीक्षण के बाद सफाई

एक्सप्लॉइट केवल इन-मेमोरी पेज कैश को संशोधित करता है; डिस्क पर बाइनरी कभी नहीं छुई जाती। मेमोरी में मूल फ़ाइल सामग्री को पुनर्स्थापित करने के लिए, कर्नेल का पेज कैश हटाएं:

root@kitploit:~
echo 3 | sudo tee /proc/sys/vm/drop_caches

यह कैश से सभी स्वच्छ पृष्ठों को निष्कासित करता है। /usr/bin/su (या जो भी बाइनरी पैच की गई थी) का अगला पठन डिस्क से मूल बाइट्स को फिर से लोड करेगा।

रीबूट भी पेज कैश को पूरी तरह से साफ करता है।


संदर्भ

  • मूल PoC — Theori
  • तकनीकी लेख — Xint
  • Sysdig खतरा विश्लेषण
  • Microsoft सुरक्षा ब्लॉग
  • NVD प्रविष्टि
  • Debian सुरक्षा ट्रैकर

श्रेय

  • मूल खोज और प्रकटीकरण: Theori (theori.io) और Xint (xint.io)
  • शैक्षिक पुनर्लेखन: n0kk

लाइसेंस

MIT — LICENSE देखें।

MIT को कस्टम "केवल शैक्षिक उपयोग" लाइसेंस पर चुना गया था क्योंकि ऐसा कोई लाइसेंस मान्यता प्राप्त OSI/SPDX पहचानकर्ता के रूप में मौजूद नहीं है। MIT अनुमेय, कानूनी रूप से अच्छी तरह से समझा जाने वाला, और जिम्मेदार प्रकटीकरण रिपॉजिटरी के साथ संगत है। शैक्षिक इरादा मॉड्यूल डॉकस्ट्रिंग, इस README के अस्वीकरण अनुभाग, और --help आउटपुट में व्यक्त किया गया है — कानूनी रूप से संदिग्ध कस्टम लाइसेंस खंड में नहीं।

टूल डाउनलोड करें
शाखापहला कमजोरअंतिम कमजोरइसमें ठीक किया गया
मुख्यधारा4.146.18.216.18.22
6.19 स्थिर6.19.06.19.116.19.12
7.0-rc7.0-rc17.0-rc67.0-rc7
वितरणभेजा गया कर्नेल (लगभग)पैच किया गया?
Debian 12 (Bookworm)6.1.xहाँ (बैकपोर्ट)
Debian 13 (Trixie)6.12.x / 6.14.xहाँ (बैकपोर्ट)
Ubuntu 24.04 LTS6.8.xहाँ (USN-7xxx)
Ubuntu 24.106.11.xहाँ
RHEL 9.x5.14.x (रीबेस्ड)हाँ (RHSA)
Alpine 3.206.6.xहाँ (बैकपोर्ट)
Arch Linuxरोलिंग (≥ 6.18.22 अब)हाँ
Kali Linux 2026.16.18.12कमजोर
Kali Linux 2026.2+6.18.22+ठीक किया गया
Linux Mint 226.8.x (Ubuntu आधार)हाँ (Ubuntu USN)