
# CVE-2026-85046 के लिए प्रूफ-ऑफ-कॉन्सेप्ट और तकनीकी विश्लेषण यह CVE-2026-85046 के लिए प्रूफ-ऑफ-कॉन्सेप्ट और तकनीकी विश्लेषण है, जो इनलाइन `Array.prototype.sort` में V8 टाइप कन्फ्यूज़न है, जिसमें मूल कारण, पैच डिफ़, और Chrome < 152.0.7977.82 के लिए एक्सप्लॉइटेशन चेन शामिल है।
| फ़ील्ड | मान |
|---|
| CVSS | 8.8 (उच्च) |
| CWE | CWE-843 (टाइप कन्फ्यूज़न) |
| घटक | V8 JavaScript इंजन -- Maglev/Turbofan इनलाइन सॉर्ट |
| प्रभावित | Chrome < 152.0.7977.82, सभी Chromium-आधारित ब्राउज़र |
| सुधारित | Chrome 152.0.7977.82 (2026-09-03) |
| फिक्स कमिट | e0562d87ad9c17042b581582c99237d798572e67 |
| CISA KEV | 2026-09-04 को जोड़ा गया, समय-सीमा 2026-09-18 |
| वाइल्ड एक्सप्लॉइटेशन | हाँ (Google द्वारा पुष्टि) |
| रिपोर्टर | Salvatore Gulizia (Serotav) |
इनलाइन सॉर्ट ऑप्टिमाइज़ेशन पॉलीमॉर्फिक एलिमेंट-काइंड फीडबैक (PACKED_SMI_ELEMENTS + PACKED_ELEMENTS) स्वीकार करता है। जब कंपेरेटर arr.fill(0) कॉल करता है, V8 रिसीवर मैप को PACKED_ELEMENTS से वापस PACKED_SMI_ELEMENTS में माइग्रेट करता है। पोस्ट-सॉर्ट मैप चेक पास हो जाता है क्योंकि PACKED_SMI_ELEMENTS मूल फीडबैक सेट में था। कॉपी-बैक ऑब्जेक्ट पॉइंटर्स को ऐसी ऐरे में लिखता है जिसका मैप केवल SMI एलिमेंट्स का दावा करता है।
फिक्स एक पूर्व-शर्त जोड़ता है जिसमें सॉर्ट को इनलाइन करने से पहले फीडबैक में सभी रिसीवर मैप्स को समान elements_kind साझा करना आवश्यक होता है।
| फ़ाइल | विवरण |
|---|---|
patch-analysis.md | मूल कारण, ट्रिगर तंत्र, और एक्सप्लॉइटेशन प्रिमिटिव मूल्यांकन के साथ पूर्ण पैच डिफ़ विश्लेषण |
patch-analysis.json | संरचित डेटा: कमिट हैश, CWE, प्रभावित संस्करण, एक्सप्लॉइट प्रिमिटिव |
v8-research.md | V8 एलिमेंट काइंड्स गहन अध्ययन, पूर्व कला PoCs (CVE-2020-6418, CVE-2025-2135, CVE-2024-4947, आदि), सैंडबॉक्स आर्किटेक्चर, एस्केप तकनीकें |
poc-minimal.js | d8 के लिए न्यूनतम टाइप कन्फ्यूज़न ट्रिगर (d8 --allow-natives-syntax poc-minimal.js) |
poc.html | पूर्ण एक्सप्लॉइटेशन श्रृंखला: टाइप कन्फ्यूज़न, addrof प्रिमिटिव, हीप स्प्रे, बैकिंग स्टोर ओवरलैप के माध्यम से fakeobj, सूचना रिसाव |
exploit-notes.md | तकनीकी राइटअप: चरण-दर-चरण श्रृंखला, हीप लेआउट आरेख, पॉइंटर कम्प्रेशन, सैंडबॉक्स प्रभाव, डिटेक्शन संकेतक, उपचार |
# V8 डीबग हेल्पर्स के साथ
d8 --allow-natives-syntax poc-minimal.js
# बिना (String() के माध्यम से ह्यूरिस्टिक सत्यापन)
d8 poc-minimal.js
Chrome < 152.0.7977.82 में poc.html खोलें। एक्सप्लॉइट स्वचालित रूप से चलता है और प्रत्येक चरण को पेज और डेवलपर कंसोल पर लॉग करता है। चरण:
arr.fill(0) के माध्यम से टाइप कन्फ्यूज़न ट्रिगरaddrof प्रिमिटिव -- कम्प्रेस्ड हीप पॉइंटर्स को पूर्णांकों के रूप में लीक करता हैfakeobj -- नियंत्रित पूर्णांकों से ऑब्जेक्ट संदर्भ बनाता हैप्रशिक्षण (2000 पुनरावृत्तियाँ)
|
v
टाइप कन्फ्यूज़न: PACKED_ELEMENTS मैप -> PACKED_SMI_ELEMENTS मैप
(बैकिंग स्टोर में अभी भी ऑब्जेक्ट पॉइंटर्स हैं)
|
v
addrof: String(confused_array) पॉइंटर्स को पूर्णांकों के रूप में लीक करता है
|
v
fakeobj: डबल/ऑब्जेक्ट ऐरे ओवरलैप नियंत्रित पॉइंटर लिखता है
|
v
नियंत्रित एलिमेंट्स पॉइंटर के साथ नकली JSArray -> मनमाना R/W (इंट्रा-केज)
|
v
V8 सैंडबॉक्स के अंदर कोड निष्पादन (पूर्ण RCE के लिए सैंडबॉक्स एस्केप आवश्यक)
kMaxInlineSortLength)arr.fill() कॉल करना चाहिएPACKED_SMI और PACKED_ELEMENTS दोनों ऐरे पास होने चाहिए