
POC जल्द ही उपलब्ध होगा
Google Chrome (संस्करण 123 और पूर्व) में एक गंभीर रिमोट कोड निष्पादन भेद्यता जो WebAssembly (WASM) कचरा-संग्रह प्रकार हैंडलिंग को प्रभावित करती है। यह बग प्रकार भ्रम (type confusion) की अनुमति देता है जिसे मनमानी मेमोरी पढ़ने/लिखने और अंततः कोड निष्पादन तक बढ़ाया जा सकता है।
यह भेद्यता WASM आइसोरिकर्सिव कैनोनिकल टाइप आईडी और JavaScript-से-WASM रूपांतरण फ़ंक्शन में उपयोग किए गए wasm::HeapType / wasm::ValueType अभ्यावेदन के बीच भ्रम से उत्पन्न होती है।
महत्वपूर्ण बात यह है कि एक कैनोनिकल टाइप आईडी किसी भी तरह से kV8MaxWasmTypes से बंधी नहीं है — यह होस्ट मेमोरी द्वारा समर्थित जितनी बड़ी हो सकती है।
ValueType वर्ग 20-बिट फ़ील्ड में हीप प्रकारों को एनकोड करता है, लेकिन कैनोनिकल टाइप आईडी इस सीमा को पार कर सकती हैं। जब एक कैनोनिकल टाइप आईडी जैसे:
tn = t0 + 0x100000 * n
को 20 बिट तक छोटा किया जाता है, तो यह t0 के साथ उपनाम (alias) बनाता है, जो प्रकार-भ्रम हमले को सक्षम करता है।
इसके अतिरिक्त, kAny + 0x100000 * n (जहाँ kAny = 1000005) से मेल खाने वाली कैनोनिकल टाइप आईडी प्रकार जाँच को बायपास करती हैं और मनमानी WASM प्रकार भ्रम की अनुमति देती हैं।
यह सलाह तीन चरणों में शोषण का वर्णन करती है:
1,000,000+ प्रकारों के साथ WASM मॉड्यूल तैयार करने से कैनोनिकल टाइप आईडी रैप हो जाती हैं, जो स्ट्रक्ट प्रकारों और संदर्भ प्रकारों के बीच भ्रम को सक्षम करती हैं। kAny के साथ उपनाम (alias) करने के लिए तैयार किए गए स्ट्रक्ट प्रकार JS-से-WASM प्रकार जाँच को बायपास करते हैं।
ArrayBuffer बैकिंग-स्टोर फ़ील्ड को संशोधित करके, हमलावर एक मनमाना पता लेखन प्राप्त करता है जहाँ लिखा गया मान मेटाडेटा पता होता है। यह chrome.dll पतों को लीक करने और मनमानी मेमोरी लेखन प्राप्त करने के लिए SlotSpanMetadata संरचनाओं का शोषण करता है।
शोषण CodePointerTable को हाईजैक करता है और निष्पादन को एक ROP श्रृंखला पर पिवट करता है जो शेलकोड क्षेत्रों को निष्पादन योग्य चिह्नित करता है।
PoC प्रदर्शित करता है:
kAny के साथ उपनाम (alias) बनाने वाले स्ट्रक्ट प्रकार बनाना।यह CVE-2024-2887 का एक प्रकार है, जिसे Manfred Paul द्वारा खोजा गया और Pwn2Own वैंकूवर 2024 में प्रस्तुत किया गया। यह एक अलग वेक्टर के माध्यम से समान प्रकार-कैनोनिकलाइज़ेशन कमज़ोरी का शोषण करता है।
Google Chrome 123 और पूर्व।
Google Chrome 124 में ठीक किया गया।
Seunghyun Lee (Xion, @0x10n), TyphoonPWN 2024 में प्रतिभागी।