
Firefox JIT CVE-2026-2764 के लिए प्रूफ-ऑफ-कॉन्सेप्ट एक्सप्लॉइट चेन, जो JIT मिसकंपाइलेशन और यूज़-आफ्टर-फ्री को मनमाने रीड/राइट और WASM शेलकोड निष्पादन में जोड़ती है।
स्थिति: विश्लेषण + सत्यापित PoC. प्रिमिटिव वेपनाइज़ेशन प्रगति पर है।
इस बार 2026 के बग पर आधारित एक WasmBlazeFox-शैली श्रृंखला: CVE-2026-2764, जो JavaScript Engine: JIT घटक में एक IonMonkey/baseline "JIT गलत संकलन + उपयोग-के-बाद-मुक्त" है, Firefox 148 में ठीक किया गया (MFSA 2026-13, CVSS TBD)। वही अंतिम लक्ष्य जैसा CVE-2024-29943-but-with-wasm: प्रिमिटिव को shellcode स्थिरांकों से भरे WASM JIT पृष्ठ में फीड करें।
Bugzilla बग 2012608 प्रतिबंधित है, लेकिन फिक्स सार्वजनिक रूप से आया:
hg 1b58f51668d3 — "Bug 2012608: Call CreateThis directly from PBL":
PortableBaselineInterpret.cpp ने स्क्रिप्टेड-कंस्ट्रक्टर
this-निर्माण को CreateThisFromIC (जो IC स्थिति को फिर से पढ़ता था) के माध्यम से रूट करना बंद कर दिया और अब
js::CreateThis को सही ढंग से रूट किए गए मानों के साथ सीधे कॉल करता है।hg 3adad00d0042 — के
अनुबंध पर फ़ॉर्मेटिंग/दस्तावेज़ (argc में स्प्रेड तर्क शामिल होने चाहिए)।BaselineCacheIRCompiler.cppcreateThishg 57885d520e85 — रिग्रेशन परीक्षण (हमारे PoC)।विफलता मोड: Proxy को newTarget के रूप में रखते हुए new Ctor(...arr) / Reflect.construct पर,
प्रॉक्सी का get ट्रैप तब चलता है जब इंजन तर्कों को स्प्रेड करने और this बनाने के बीच होता है।
वह कॉलबैक उसी ऐरे को म्यूटेट या मुक्त कर सकता है जिसे इंजन स्प्रेड कर रहा है, और इंजन पुरानी मान्यताओं के साथ जारी रहता है:
arr[0] int से object में बदल दिया गया
(poc-typeconfusion.js)arr.length = 0; gc() स्प्रेड के बीच में एलिमेंट्स स्टोर को मुक्त कर देता है
(poc-uaf.js)2026-02-09 के mozilla-central नाइटली jsshell (JavaScript-C149.0a1,
linux x86-64, प्री-फिक्स) के विरुद्ध, एक x86_64 Docker कंटेनर में:
./js poc-typeconfusion.js -> Error: Assertion failed: got "oops", expected 1
./js poc-uaf.js -> Segmentation fault
दोनों PoC Mozilla के अपने रिग्रेशन परीक्षण हैं, शब्दशः।
poc-typeconfusion.js (controllable argument-value confusion, no crash)
-> Ion-optimize a constructor that makes baked type assumptions on its
spread arguments; swap in an object where an int32 was proven
-> addrof / fakeobj
-> corrupt TypedArray length -> arbitrary R/W
-> WASM JIT shellcode stage (same as CVE-2024-29943-but-with-wasm:
f64.const immediates, FuncExport entry-offset overwrite)
WASM स्टेज और ऑफसेट-वॉक कोड बिना बदलाव के पोर्ट हो जाते हैं, सिवाय उन ऑफसेट्स के
जिन्हें FF149-युग बिल्ड के विरुद्ध फिर से निकालना है (नुस्खे के लिए
CVE-2024-29943-but-with-wasm/test.gdb देखें)।
1b58f51668d3, 3adad00d0042, परीक्षण 57885d520e85