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

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

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

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

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

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
CVE-2026-2796-escape-wasm-by-using-wasm — CVE-2026-2796 के लिए PoC एक्सप्लॉइट चेन: SpiderMonkey WebAssembly सैंडबॉक्स एस्केप (सिग्नेचर टाइप कन्फ्यूजन -> मनमाना R/W -> RCE) | Kitploit
उपकरण/GitHubGitHub/sneakynachos/cve-2026-2796-escape-wasm-by-using-wasm
भेद्यता विश्लेषणशोषणरिवर्स इंजीनियरिंगवेब सुरक्षाबाइनरी शोषण
GitHubsneakynachos/cve-2026-2796-escape-wasm-by-using-wasm

CVE-2026-2796-escape-wasm-by-using-wasm

CVE-2026-2796 के लिए PoC एक्सप्लॉइट चेन: SpiderMonkey WebAssembly सैंडबॉक्स एस्केप (सिग्नेचर टाइप कन्फ्यूजन -> मनमाना R/W -> RCE)

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

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

सभी देखें →

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

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

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

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

CVE-2026-2796 — SpiderMonkey WebAssembly सैंडबॉक्स एस्केप

CVE-2026-2796 के लिए प्रूफ-ऑफ-कॉन्सेप्ट एक्सप्लॉइट चेन, जो Mozilla SpiderMonkey के WebAssembly इम्पोर्ट ऑप्टिमाइज़ेशन ("JavaScript: WebAssembly" कंपोनेंट) में JIT गलत-संकलन / टाइप-कन्फ्यूज़न है। एक क्राफ्टेड wasm मॉड्यूल संपूर्ण होस्ट प्रोसेस का मनमाना रीड/राइट और मनमाना नेटिव कोड निष्पादन प्राप्त करता है, जिससे WebAssembly सैंडबॉक्स से बच निकलता है।

  • CVE: CVE-2026-2796 (CWE-843, टाइप कन्फ्यूज़न)
  • प्रभावित: Firefox < 148, Thunderbird < 148 (और उसी इंजन के एम्बेडिंग)
  • फिक्स किया गया: Firefox 148 / Thunderbird 148, 2026-02-24
  • अपस्ट्रीम बग: Mozilla Bug 2013165 (MFSA-2026-13)
  • फिक्स कमिट: e2acef67 ("Bug 2013165 - Fix import optimization")

मूल कारण

जब कोई wasm मॉड्यूल किसी JS फ़ंक्शन को इम्पोर्ट करता है, तो SpiderMonkey MaybeOptimizeFunctionCallBind (js/src/wasm/WasmInstance.cpp) में एक ऑप्टिमाइज़ेशन लागू करता है जो Function.prototype.call.bind(fn) के रूप के इम्पोर्ट को अनरैप करता है और fn को सीधे इम्पोर्ट के callable के रूप में संग्रहीत करता है। यह जाँचने में विफल रहा कि बाउंड मान स्वयं एक है या नहीं:

wasm-निर्यातित फ़ंक्शन
root@kitploit:~
+  if (boundThis.toObject().is<JSFunction>() &&
+      boundThis.toObject().as<JSFunction>().isWasm()) {
+    return nullptr;
+  }

चेक अनुपस्थित होने पर, इम्पोर्ट को मूल-रूप से-wasm फ़ंक्शन मान लिया जाता है: JS रैपर — और इसके साथ सिग्नेचर चेक — को छोड़ दिया जाता है। इसलिए एक wasm फ़ंक्शन को घोषित इम्पोर्ट प्रकार के माध्यम से लागू किया जा सकता है जो उसके वास्तविक प्रकार से मेल नहीं खाता। मान रजिस्टरों में अपरिवर्तित पास होते हैं; केवल उनकी व्याख्या बदलती है (उदाहरण के लिए, एक हमलावर-नियंत्रित i64 को (ref $t) GC पॉइंटर के रूप में उपयोग किया जाता है, और इसके विपरीत)।

एक्सप्लॉइट चेन (poc/)

फ़ाइलचरणपरिणाम
poc-crash.jsसिग्नेचर कन्फ्यूज़नi64.const 0xDEADBEEF को funcref पॉइंटर के रूप में डीरेफ़रेंस किया गया → 0xdeadbf2f पर SIGSEGV
poc-addrof.jsaddrOf + fakeobjदोनों दिशाओं में कन्फ्यूज़न (i64 ↔ (ref $t)) → नकली WasmArrayObject (numElements_ @+16, data_ @+24, इनलाइन एलिमेंट @+40) → प्रोसेस में कहीं भी मनमाना R/W
poc-recon.jsलेआउट टोहीJSFunction नेटिव ptr @+0x20 → बाइनरी बेस लीक; WasmFuncRef typeDef ptr @+0x40
poc-forge.jsनियंत्रण प्रवाहजाली funcref call_ref टाइप चेक पास करता है; कॉल टारगेट [funcref+0x38] से लोड किया गया
poc-rce.jsकोड निष्पादनजाली funcref → लीक किए गए system() के माध्यम से system("touch /tmp/CVE-2026-2796-PWNED") (बाइनरी बेस + GOT एंट्री @ base+0x11d47b0)

कन्फ्यूज़न प्रिमिटिव बिल्कुल Mozilla के अपने रिग्रेशन टेस्ट (js/src/jit-test/tests/wasm/regress/bug2013165.js) की तरह प्राप्त किया जाता है: Function.prototype.call.bind(wasmExport) को दूसरे मॉड्यूल में इम्पोर्ट करें जिसकी इम्पोर्ट घोषणा में भिन्न सिग्नेचर हो, फिर ref.func + call_ref।

कमजोर शेल बनाना

root@kitploit:~
# Firefox सोर्स @ 2fbc0748c460b38fc95407a3f14c41d12fb12026 (2026-01-14,
# Firefox 148 नाइटली — फिक्स से पहले)। कोई भी pre-148 रिवीज़न काम करता है।
cd js/src
../../configure --enable-debug --enable-optimize --without-intl-api \
  --enable-project=js   # objdir जैसे js/src/_obj
cd _obj && make -j8
# बाइनरी: dist/bin/js   (रिपोर्ट करता है "JavaScript-C149.0a1")

चलाना

root@kitploit:~
JS=/path/to/dist/bin/js
$JS poc/poc-crash.js     # 0xdeadbf2f पर SIGSEGV
$JS poc/poc-addrof.js    # प्रिंट करता है [+] arbitrary read OK / write OK
$JS poc/poc-recon.js     # JSFunction / WasmFuncRef मेमोरी डंप करता है
$JS poc/poc-forge.js     # PC = लगाया गया canary के साथ क्रैश होता है
rm -f /tmp/CVE-2026-2796-PWNED
$JS poc/poc-rce.js       # system() के माध्यम से /tmp/CVE-2026-2796-PWNED बनाता है

पैच किए गए बिल्ड (Firefox ≥ 148) पर, poc-crash.js इसके बजाय TypeError: bad type फेंकता है — सिग्नेचर चेक बहाल कर दिया गया है।

पोर्टेबिलिटी नोट्स

ऑफसेट macOS arm64 (js शेल, इस सटीक रिवीज़न/बिल्ड फ्लैग्स) के लिए हैं: WasmArrayObject { +16 numElements, +24 data_, +40 इनलाइन डेटा }, JSFunction नेटिव @ +0x20, WasmFuncRef { +0x40 typeDef, +0x38 कॉल टारगेट }। इन्हें PoC के सेल्फ-टेस्ट द्वारा रनटाइम पर अनुभवजन्य रूप से मान्य किया जाता है; अन्य बिल्ड/आर्किटेक्चर को पुनः-व्युत्पत्ति की आवश्यकता होती है (recon PoC इसका अधिकांश भाग स्वचालित करता है)। arm64 (गैर-arm64e) बाइनरी पर कोई PAC नहीं; JIT क्षेत्र कॉल समय पर लिखने योग्य नहीं हैं, इसलिए चेन कोड इंजेक्ट करने के बजाय मौजूदा कॉल टारगेट को हाईजैक करती है।

फुल-चेन: सैंडबॉक्स एस्केप

स्टेज-2 विश्लेषण के लिए docs/full-escape.md देखें: CVE-2026-2768 (Bug 2014101, पैरेंट-प्रोसेस IndexedDB OOB राइट) के माध्यम से रेंडरर कोड निष्पादन से OS सैंडबॉक्स से बचना — पूर्ण Firefox समझौते का "दूसरा बग"। यहाँ उपयोग किया गया कमजोर ट्री उस फिक्स से भी पहले का है।

दायरा / ईमानदार सीमाएँ

यह wasm इंजन सैंडबॉक्स (लीनियर-मेमोरी / GC परिरोध) से बचता है और वर्तमान प्रोसेस में नेटिव कोड निष्पादन देता है। वास्तविक ब्राउज़र हमले में यह Firefox कंटेंट प्रोसेस के अंदर समाप्त होता है; OS सैंडबॉक्स से बचना ("दूसरा बग": IPC कन्फ्यूज़न या कर्नेल एक्सप्लॉइट) एक अलग समस्या है और इस PoC का हिस्सा नहीं है।

शमन

  • Firefox / Thunderbird ≥ 148 में अपडेट करें।
  • रक्षा-गहराई: javascript.options.wasm=false ट्रिगर वेक्टर को अवरुद्ध करता है।

संदर्भ

  • MFSA-2026-13
  • NVD: CVE-2026-2796
  • फिक्स: https://github.com/mozilla-firefox/firefox/commit/e2acef6711967949cd0825869034165383c482e1
  • टेस्ट: https://github.com/mozilla-firefox/firefox/commit/0605ac40b002d576688190a5b9921b8dcd1b6b96

अस्वीकरण

केवल सुरक्षा अनुसंधान, शिक्षा और रक्षात्मक परीक्षण के लिए। यह कमजोरी वर्तमान Firefox/Thunderbird रिलीज़ में पैच की गई है। उन प्रणालियों के विरुद्ध उपयोग न करें जिनके स्वामी आप नहीं हैं या जिनके परीक्षण के लिए आपके पास स्पष्ट प्राधिकरण नहीं है।

टूल डाउनलोड करें