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

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

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

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

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

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
cve_2026_31431 — CVE_2026_31431 के लिए एक्सप्लॉइट POC | Kitploit
उपकरण/GitHubGitHub/rootsecdev/cve_2026_31431
विशेषाधिकार वृद्धिभेद्यता विश्लेषणशोषणपेनिट्रेशन टेस्टिंगलर्निंग और शिक्षारेड टीमिंगबाइनरी शोषण
GitHubrootsecdev/cve_2026_31431

cve_2026_31431

CVE_2026_31431 के लिए एक्सप्लॉइट POC

रिपॉजिटरी देखें
56711234 महीने पहलेKitploit द्वारा समीक्षित

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

सभी देखें →

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

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

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

सभी उपकरण देखें →
साझा करें

CVE-2026-31431 ("Copy Fail") टूलकिट

लिनक्स algif_aead के लिए डिटेक्टर और प्रूफ-ऑफ-कॉन्सेप्ट LPE / authencesn पेज-कैश स्क्रैच-राइट बग जो 2026-04-29 को प्रकट किया गया।

प्रकटीकरण विवरण: https://xint.io/blog/copy-fail-linux-distributions

प्राधिकरण

केवल उन होस्ट्स पर उपयोग करें जिनके आप स्वामी हैं या जिनके मूल्यांकन के लिए आपको स्पष्ट रूप से नियुक्त किया गया है। LPE इन-मेमोरी स्थिति (पेज कैश) को संशोधित करता है लेकिन तकनीक वास्तविक विशेषाधिकार वृद्धि है — बिना प्राधिकरण के सिस्टम पर इसे चलाना अधिकांश क्षेत्राधिकारों में अवैध है।

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

algif_aead AEAD ऑपरेशनों को इन-प्लेस (req->src == req->dst) चलाता है। जब स्रोत डेटा को splice() के माध्यम से एक नियमित फ़ाइल से फीड किया जाता है, गंतव्य स्कैटरलिस्ट में फ़ाइल के पेज-कैश पृष्ठों के संदर्भ होते हैं — यानी कर्नेल उनमें लिखेगा। authencesn(hmac(sha256), cbc(aes)) एल्गोरिथ्म फिर एक 4-बाइट AAD के seqno_lo फ़ील्ड (sendmsg द्वारा आपूर्ति किए गए AAD के बाइट 4–7) का "स्क्रैच" राइट उस गंतव्य में करता है, जिससे फ़ाइल की पेज-कैश प्रति भ्रष्ट हो जाती है।

क्योंकि डिस्क-पर मौजूद फ़ाइल कभी संशोधित नहीं होती, कोई डिस्क-पर हस्ताक्षर नहीं होता; भ्रष्टाचार केवल उन रीडर्स द्वारा देखा जाता है जो साझा करते हैं पेज कैश। /etc/passwd और /usr/bin/su दोनों वर्ल्ड-रीडेबल हैं, इसलिए एक अन-प्रिविलेज्ड स्थानीय उपयोगकर्ता चालू कर्नेल के दृष्टिकोण में से किसी को भ्रष्ट कर सकता है।

प्रभावित: कमिट 72548b093ee3 (इन-प्लेस AEAD, 2017) वाले कर्नेल जिनमें अपस्ट्रीम रिवर्ट नहीं है। प्रकटीकरण ने Ubuntu 24.04 LTS, Amazon Linux 2023, RHEL 14.3, और SUSE 16 की पुष्टि की, लेकिन अंतर्निहित प्रिमिटिव उस सीमा से पहले का है।

फ़ाइलें

फ़ाइलउद्देश्य
test_cve_2026_31431.pyगैर-विनाशकारी डिटेक्टर। टेम्प निर्देशिका में एक सेंटिनल फ़ाइल पर कार्य करता है; सिस्टम बाइनरी को कभी नहीं छूता।
exploit_cve_2026_31431.pyLPE। /etc/passwd के पेज कैश में चालू उपयोगकर्ता के UID को 0 में बदलता है, फिर रूट शेल के लिए su को आमंत्रित करता है।

दोनों स्क्रिप्ट शुद्ध Python 3.10+ stdlib हैं।

त्वरित प्रारंभ

root@kitploit:~
# 1. Detect
python3 test_cve_2026_31431.py
#   exit 0 = not vulnerable, 2 = vulnerable, 1 = test error

# 2. Exploit (interactive — su will prompt for your own password)
python3 exploit_cve_2026_31431.py --shell

डिटेक्टर उपयोग

root@kitploit:~
python3 test_cve_2026_31431.py

यह निम्न कार्य करता है:

  1. पुष्टि करता है कि AF_ALG और authencesn(hmac(sha256),cbc(aes)) एल्गोरिथ्म एक अन-प्रिविलेज्ड प्रक्रिया से पहुंच योग्य हैं।
  2. एक टेम्प निर्देशिका में 4 KiB सेंटिनल फ़ाइल बनाता है, पेज कैश को आबाद करता है।
  3. sendmsg+cmsg के माध्यम से seqno_lo को मार्कर PWND पर सेट करके 8 बाइट AAD इनलाइन भेजता है, फिर सेंटिनल के पेज-कैश पृष्ठ के 32 बाइट्स AF_ALG op सॉकेट में os.splice() करता है।
  4. डिक्रिप्शन चलाने के लिए recv() को कॉल करता है। प्रमाणीकरण जांच EBADMSG के साथ विफल हो जाती है; स्क्रैच राइट फिर भी होता है।
  5. फ़ाइल को (पेज कैश से, डिस्क से नहीं) दोबारा पढ़ता है और मार्कर की तलाश करता है।

आउटपुट श्रेणियाँ:

  • Precondition not met — AF_ALG या authencesn अनुपलब्ध। Exit 0.
  • VULNERABLE to CVE-2026-31431 — मार्कर PWND स्प्लाइस किए गए पृष्ठ में पहुंच गया। Exit 2.
  • Page cache MODIFIED via in-place AEAD splice path — पृष्ठ में लेखन हुआ लेकिन मार्कर अपेक्षित स्थिति पर नहीं पहुंचा। इसे भेद्य मानें। Exit 2.
  • Page cache intact — पैच किया हुआ। Exit 0.

डिटेक्टर /usr/bin/su, /etc/passwd, या अपने द्वारा बनाई गई टेम्प निर्देशिका के बाहर की किसी भी अन्य फ़ाइल को कभी नहीं छूता, और वह फ़ाइल बाहर निकलते समय हटा दी जाती है।

LPE उपयोग

root@kitploit:~
python3 exploit_cve_2026_31431.py            # patch only, print next steps
python3 exploit_cve_2026_31431.py --shell    # patch and exec `su <user>`

यह निम्न कार्य करता है:

  1. /etc/passwd में चालू उपयोगकर्ता की UID पंक्ति खोजता है और 4-वर्ण UID फ़ील्ड का बाइट ऑफसेट ढूंढता है।
  2. उस ऑफसेट पर एक write4 लागू करता है, UID को 0000 से बदलता है।
  3. यह पुष्टि करने के लिए pwd.getpwnam(user) को कॉल करता है कि libc अब UID 0 की रिपोर्ट करता है।
  4. --shell के साथ, execvp("su", ["su", user])। अपना स्वयं का पासवर्ड दर्ज करें। PAM /etc/shadow (अछूता) के विरुद्ध सत्यापित करता है, फिर setuid(getpwnam(user).pw_uid) 0 पर पहुंच जाता है।

आवश्यकताएँ

  • चालू उपयोगकर्ता के पास 4-अंकों वाला UID (1000–9999) होना चाहिए। 1 से 3 अंकों वाले UID के लिए मल्टी-शॉट राइट्स की आवश्यकता होती है — write4 को तदनुसार बढ़ाएँ।
  • कोई NSS कैशिंग डेमन (nscd, sssd, systemd-userdbd) /etc/passwd रीड्स को मास्क नहीं कर रहा है। यदि पैच के बाद भी getpwnam वास्तविक UID लौटाता है, तो कैश को पुनरारंभ करें या बायपास करें, या कोई भिन्न उपयोगकर्ता चुनें।
  • /etc/passwd पृष्ठ को पैच और su exec के बीच कैश में रहना चाहिए। व्यवहार में यह सामान्य मेमोरी दबाव वाले किसी भी सिस्टम पर विश्वसनीय है।

पूर्ववत करना

डिस्क-पर मौजूद /etc/passwd अपरिवर्तित है।

ड्राई-रन (exploit_cve_2026_31431.py बिना --shell) बाहर निकलते समय POSIX_FADV_DONTNEED के माध्यम से भ्रष्ट पृष्ठ को स्वतः बाहर निकाल देता है, इसलिए UID→नाम लुकअप तुरंत सामान्य हो जाते हैं।

--shell के बाद, जब तक आप इसे साफ़ नहीं करते, पृष्ठ भ्रष्ट छोड़ दिया जाता है। जब यह भ्रष्ट है, UID 1000 → नाम से हल करने वाली कोई भी चीज़ (जैसे ls, फ़ाइल प्रबंधक, scp/sftp स्वामित्व जाँच) विफल हो जाएगी या संख्यात्मक ID दिखाएगी। साफ़ करने के लिए:

root@kitploit:~
# unprivileged - request page-cache eviction for /etc/passwd:
python3 -c "import os; fd=os.open('/etc/passwd', os.O_RDONLY); \
            os.posix_fadvise(fd, 0, 0, os.POSIX_FADV_DONTNEED); os.close(fd)"

# from the root shell:
echo 3 > /proc/sys/vm/drop_caches

रीबूट भी इसे साफ़ करता है।

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

root@kitploit:~
sendmsg([8-byte AAD], cmsg=[ALG_SET_OP=DECRYPT, ALG_SET_IV, ALG_SET_AEAD_ASSOCLEN=8],
        flags=MSG_MORE)
splice(target_fd, pipe_w, 32, offset_src=file_offset)
splice(pipe_r, op_fd, 32)
recv(op_fd)   # EBADMSG; scratch write has already landed

AAD की स्थिति 4–7 (seqno_lo) के 4 बाइट्स निम्न द्वारा लिखे जाते हैं authencesn द्वारा गंतव्य स्कैटरलिस्ट में, जो इस कोड पथ पर वह पेज-कैश पृष्ठ है जिसे हमने target_fd से स्प्लाइस किया था। पृष्ठ के भीतर लैंडिंग ऑफसेट उस offset_src के अनुरूप है जिसे हमने splice() को पारित किया था।

शमन

जब तक पैच किया गया कर्नेल आपके डिस्ट्रो तक नहीं पहुंचता:

root@kitploit:~
sudo tee /etc/modprobe.d/disable-algif-aead.conf <<<'install algif_aead /bin/false'
sudo rmmod algif_aead 2>/dev/null

लागू करने के बाद, test_cve_2026_31431.py को Precondition not met रिपोर्ट करना चाहिए और Exit 0 देना चाहिए।

अपस्ट्रीम फिक्स इन-प्लेस AEAD ऑपरेशनों को आउट-ऑफ-प्लेस में बदल देता है, जिससे पेज-कैश पृष्ठ लिखने योग्य स्कैटरलिस्ट से बाहर रहते हैं।

संदर्भ

  • Xint प्रकटीकरण विवरण: https://xint.io/blog/copy-fail-linux-distributions
  • CVE-2026-31431
टूल डाउनलोड करें