Skip to content
KitploitKITPLOIT
उपकरणएक्सप्लॉइटब्लॉग
Log in
जमा करें
उपकरणएक्सप्लॉइटब्लॉग
जमा करें

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

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

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

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

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
CVE-2026-89633 — CVE-2026-89633 के लिए PoC और एक्सप्लॉइट चेन, जो Linux cifs.ko SMB1 TRANS2 कोएलेसिंग पाथ में हीप आउट-ऑफ-बाउंड्स राइट है, जो cred ओवरराइट और PTE एलियासिंग के माध्यम से uid 0 तक एस्केलेट होती है। | Kitploit
उपकरण/GitHubGitHub/woshigenm/cve-2026-89633
एंड्रॉइड सुरक्षाविशेषाधिकार वृद्धिमेमोरी फोरेंसिकभेद्यता विश्लेषणशोषणपेपर और शोधबाइनरी शोषण
GitHubwoshigenm/cve-2026-89633

CVE-2026-89633

CVE-2026-89633 के लिए PoC और एक्सप्लॉइट चेन, जो Linux cifs.ko SMB1 TRANS2 कोएलेसिंग पाथ में हीप आउट-ऑफ-बाउंड्स राइट है, जो cred ओवरराइट और PTE एलियासिंग के माध्यम से uid 0 तक एस्केलेट होती है।

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

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

सभी देखें →

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

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

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

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

CVE-2026-89633 — cifs SMB1 coalesce_t2 हीप OOB राइट

अंग्रेज़ी | 简体中文

Linux cifs.ko SMB1 क्लाइंट में हीप आउट-ऑफ़-बाउंड्स राइट के लिए रिसर्च PoC/EXP। एक दुर्भावनापूर्ण SMB1 सर्वर TRANS2 सेकेंडरी रिस्पॉन्स में DataOffset को नियंत्रित करता है, और coalesce_t2() बिना किसी टारगेट-बाउंड्स जाँच के 8-बाइट सेकेंडरी पेलोड को &primary->Protocol + DataOffset + accumulated पर कॉपी करता है। कॉपी का गंतव्य वहीं होता है जहाँ सर्वर उसे इंगित करता है, रिस्पॉन्स बफ़र (server->bigbuf) के सापेक्ष।

यह रिपॉज़िटरी अलग-अलग भूमिकाओं वाले दो प्रदर्शन रखती है; वे एक-दूसरे के विकल्प नहीं हैं:

  • POC — OOB राइट को ट्रिगर करें और उसे देखें: एक दुर्भावनापूर्ण SMB1 सर्वर और एक TCP प्रॉक्सी जो रनटाइम पर DataOffset को पैच करता है।
  • EXP 1 (न्यूनतम प्रिमिटिव) — रूट-साइड संदर्भ श्रृंखला जो राइट को वास्तविक क्रेडेंशियल ओवरराइट में बदल देती है: टारगेट प्रोसेस का cred slab पेज एक पाइप-नियंत्रित फ़िज़िकल पेज पर रखा जाता है, फिर एक 4-फ़्रेम coalesce रिस्पॉन्स uid/gid/suid/sgid/euid/egid/fsuid/fsgid को शून्य कर देता है। यह सबसे सीधा प्रमाण है कि OOB राइट नियंत्रणीय है और एक cred को संशोधित कर सकता है, सबसे कम निर्भरताओं के साथ।
  • EXP 2 (उन्नत प्रिमिटिव) — केवल-शेल PTE श्रृंखला: वही OOB राइट एक उपयोगकर्ता-लेखन-योग्य PTE इंस्टॉल करता है, alias cred पेज और वैकल्पिक रूप से selinux_state को मैप करता है, और clone रूट-साइड अवलोकन के बिना पूर्ण caps के साथ uid 0 बन जाता है। यह EXP 1 का विस्तार है, प्रतिस्थापन नहीं।

कर्नेल-मॉड्यूल लोडिंग इस रिपॉज़िटरी के दायरे से जानबूझकर बाहर है: श्रृंखला uid 0 (और वैकल्पिक रूप से selinux_state permissive) पर रुक जाती है और कोई मॉड्यूल इंस्टॉल नहीं करती। लोडेड मॉड्यूल के बिना भी, uid 0 + permissive वह पूर्ण LPE प्रदर्शन है जिसका दावा यह रिपॉज़िटरी करती है।

EXP 2 की लागतें स्पष्ट बनी हुई हैं: एक प्रति-विंडो लॉटरी (~25–33%, 12 प्रयासों में ~97–99%), एक बेयर PTE जो रीबूट तक लाइव रहता है, शेल-लेखन-योग्य tracefs पर निर्भरता, और बिल्ड-विशिष्ट direct-map/call-site/SEL_PFN मान्यताएँ। EXP 1 सबसे सरल प्रिमिटिव प्रमाण बना हुआ है और तब फ़ॉलबैक है जब शेल-लेखन-योग्य tracefs उपलब्ध न हो।

स्थिति

आइटममान
CVECVE-2026-89633
वर्गहीप आउट-ऑफ़-बाउंड्स राइट (CWE-787)
घटकcifs.ko, SMB1 TRANS2 सेकेंडरी coalescing
अपस्ट्रीम फ़िक्स36d01415d881 ("smb: client: fix ... coalesce_t2", 6.12.113)
POCट्रिगर और OOB राइट सत्यापित (माउंट के बाद और माउंट के दौरान)
EXP 1 (न्यूनतम प्रिमिटिव)रूट-साइड अवलोकन के अंतर्गत 4-फ़्रेम OOB cred राइट; uid 0 सत्यापित (माउंट के बाद और माउंट-समय पर होल्ड किया गया रिस्पॉन्स)
EXP 2 (उन्नत प्रिमिटिव)केवल-शेल PTE श्रृंखला; uid 2000 → uid 0 + पूर्ण caps + Permissive सत्यापित (SEL_PFN/SEL_OFF); बेयर PTE पर रुकता है, कोई मॉड्यूल लोड नहीं
आवश्यकताएँहमलावर-नियंत्रित सर्वर पर SMB1 माउंट (विशेषाधिकार प्राप्त गेट); संदर्भ गेट su का उपयोग करता है, और केवल-शेल प्लेसमेंट के लिए शेल-लेखन-योग्य tracefs आवश्यक है

परीक्षण किया गया वातावरण: एक arm64 Android 16 वेंडर बिल्ड, कर्नेल 6.12.38 जिसमें cifs.ko 6.12.23 KMI बेसलाइन से बनाया गया है, SELinux enforcing।

परीक्षण का दायरा

  • सत्यापित: ऊपर दिया गया arm64 Android 16 बिल्ड (कर्नेल 6.12.38, cifs.ko 6.12.23 KMI बेसलाइन से) — POC ट्रिगर/OOB राइट (माउंट के बाद और माउंट के दौरान दोनों, माउंट पॉइंट तक पहुँच के बिना), EXP 1 रूट-साइड संदर्भ श्रृंखला (uid 0), माउंट-समय होल्ड-रिस्पॉन्स वेरिएंट (कोई statfs नहीं, माउंट पॉइंट तक पहुँच नहीं), EXP 2 केवल-शेल प्लेसमेंट (केवल tracefs, कोई रूट-साइड अवलोकन नहीं), पूर्ण EXP 2 स्वीकृति (uid 0 + सभी cap बिट्स + SEL_PFN/SEL_OFF के साथ Permissive), और su-संचालित माउंट गेट (केवल माउंट रूट के रूप में चलता है; प्लेसमेंट uid 2000 के रूप में चलता है) का परीक्षण वहाँ SELinux enforcing के अंतर्गत किया गया।
  • सत्यापित नहीं: अन्य 6.12.x बिल्ड, अन्य Android संस्करण/SoC, स्टॉक AOSP GKI कर्नेल, या गैर-arm64 प्लेटफ़ॉर्म। call-site लिंक, struct ऑफ़सेट और direct-map स्थिरांक बिल्ड-विशिष्ट हैं; EXP के काम करने की अपेक्षा करने से पहले उन्हें भिन्न कर्नेल पर पुनः सत्यापित करें।

बग

MAX_CIFS_SMALL_BUFFER_SIZE - 4 (444 बाइट्स) से बड़े SMB1 TRANS2 प्रतिक्रिया के लिए, क्लाइंट प्राइमरी को server->bigbuf में रखता है और उसे mid->resp_buf में संग्रहीत करता है। इसके बाद आने वाली SMB_COM_TRANSACTION2_SECONDARY प्रतिक्रियाएँ cifs_check_trans2() -> check2ndT2() -> coalesce_t2() से होकर गुज़रती हैं:

data_area_of_tgt = &primary->Protocol + primary->DataOffset + total_in_tgt;
memcpy(data_area_of_tgt, data_area_of_src, secondary->DataCount);

DataOffset सर्वर प्रतिक्रिया से शब्दशः लिया गया है। काउंटर जाँचें (total_in_tgt/byte_count ओवरफ़्लो, स्रोत-बफ़र सीमाएँ) मौजूद हैं, लेकिन इस बात की कोई जाँच नहीं है कि data_area_of_tgt प्रतिक्रिया बफ़र के अंदर रहता है या नहीं। प्रत्येक सेकेंडरी फ़्रेम 8 बाइट आगे गिरता है (संचित DataCount), इसलिए एक बहु-फ़्रेम प्रतिक्रिया बफ़र आधार से हमलावर-चयनित ऑफ़सेट (16-बिट) पर 8*N बाइट लेखन देती है।

ट्रिगर शर्तें:

  1. क्लाइंट एक ऐसे सर्वर से SMB1 शेयर माउंट करता है (vers=1.0) जिसे हमलावर नियंत्रित करता है;
  2. क्लाइंट कोई भी TRANS2 अनुरोध जारी करता है (PoC statfs के माध्यम से QUERY_FS_INFORMATION का उपयोग करता है);
  3. सर्वर एक प्राइमरी के साथ उत्तर देता है जिसमें TotalDataCount > DataCount है और जो bigbuf पथ के लिए पर्याप्त बड़ा है, फिर एक या अधिक सेकेंडरी फ़्रेम जिनमें TotalDataCount > DataCount है।

रिपॉज़िटरी लेआउट

Makefile
src/poc/poc_smb1_trans2.py   malicious SMB1 server (QFS hook, runtime ctl)
src/poc/smb1_proxy.py        TCP proxy: patches DataOffset, repeats secondaries
src/exp/pipesearch.c         pipe placement/write driver (modes 3, 8, 9)
src/exp/shcred.c             shell-side drain + clone helper (uid 2000)
src/exp/shp4a2.c             trace-based drainer/observer/clone (modes 8/9)
src/exp/pte_fault.c          2 MiB fault + PTE alias writes
src/exp/bscan.c              bigbuf discovery by call site (no kprobes)
src/exp/kslide.c             KASLR slide from a raw call site
src/exp/smbd.c               device-side SMB1 server (held TRANS2)
src/exp/smbd_templates.h     SMB1 response templates for smbd
src/exp/pfn.c                linear-map VA to pfn
src/exp/kflags.c             /proc/kpageflags reader
scripts/setup_device.sh      trace instance + kprobes (root on device)
scripts/start_servers.sh     host: SMB1 server + proxy + mount helper
scripts/probe_round.sh       one probe round: bigbuf base + free target page
scripts/place.sh             placement: pipesearch mode 3 + shcred
scripts/write_cred.sh        4-frame coalesce write + /proc verification
scripts/mount_su.sh          generic su mount gate (target/decoy/abort/unmount)
scripts/chain_shell.sh       shell-only placement for an already-held TRANS2
scripts/gen_smb_templates.py regenerates smbd_templates.h from a capture
docs/analysis.md             vulnerability and chain analysis
docs/exp-protocol.md         shared-page and smbd ctl protocols

बिल्ड

make deps        # checks impacket
make helpers     # NDK cross-build of all C helpers
make push        # adb push to /data/local/tmp

NDK, API, ARCH, ADB, DEVICE_DIR को ओवरराइड किया जा सकता है।

POC — OOB write को ट्रिगर करें और देखें

ट्रिगर को स्वयं केवल SMB1 माउंट और चल रहे सर्वर/प्रॉक्सी की आवश्यकता होती है। kprobes और kflags अवलोकन सहायक हैं, ट्रिगर का हिस्सा नहीं — जब आपको dst/src/len साक्ष्य चाहिए तो इन्हें इंस्टॉल करें (और इनकी आवश्यकता नीचे दी गई EXP श्रृंखला द्वारा होती है, जिसे bigbuf बेस, प्लेसमेंट वॉच और लक्ष्य cred पता चाहिए)।

  1. डिवाइस (root, वैकल्पिक — केवल अवलोकन): प्रोब्स इंस्टॉल करें।

    adb push scripts/setup_device.sh /data/local/tmp/
    adb shell su -c 'sh /data/local/tmp/setup_device.sh'
    adb push build/kflags /data/local/tmp/kflags
    
  2. होस्ट: SMB1 सर्वर और प्रॉक्सी प्रारंभ करें (स्क्रिप्ट शेयर निर्देशिका भी बनाती है और माउंट कमांड प्रिंट करती है):

    scripts/start_servers.sh /tmp/cifs01-ctl
    
टूल डाउनलोड करें