हैकिंग, पेनटेस्ट और साइबर सुरक्षा उपकरण आपके सुरक्षा शस्त्रागार के लिए!
CVE-2021-21220 — शैक्षिक प्रस्तुति जो CVE-2021-21220 के शोषण का विवरण देती है, जो V8 JIT प्रकार भ्रम है जो WebAssembly के माध्यम से OOB एक्सेस और RCE की ओर ले जाता है, साथ में शमन विश्लेषण भी। | Kitploit
शैक्षिक प्रस्तुति जो CVE-2021-21220 के शोषण का विवरण देती है, जो V8 JIT प्रकार भ्रम है जो WebAssembly के माध्यम से OOB एक्सेस और RCE की ओर ले जाता है, साथ में शमन विश्लेषण भी।
यह प्रस्तुति CVE-2021-21220 के शोषण की व्याख्या करती है, जो Google Chrome के V8 JavaScript इंजन में एक भेद्यता है, जो अनुकूलन के दौरान गलत JIT कंपाइलर धारणाओं के कारण उत्पन्न हुई है।
प्रस्तुति निम्नलिखित बिंदुओं से गुज़रती है:
V8 जस्ट-इन-टाइम (JIT) संकलन कैसे करता है
अनुकूलन के दौरान signed/unsigned प्रकार का भ्रम (type confusion) बग कैसे प्रकट होता है
यह बग आउट-ऑफ-बाउंड्स (OOB) ऐरे प्रिमिटिव को कैसे जन्म देता है
हमलावर OOB पहुंच का उपयोग करके पतों को लीक करने और मनमानी मेमोरी लिखने की क्षमता कैसे प्राप्त कर सकते हैं
WebAssembly (Wasm) नेटिव कोड निष्पादन का लक्ष्य कैसे बनता है
मौजूदा शमन (mitigations) और आधुनिक ब्राउज़र सुरक्षा उपाय
प्रस्तुति के लक्ष्य
इस प्रस्तुति का लक्ष्य यह दर्शाना है कि एक आधुनिक JavaScript इंजन के भीतर एक सूक्ष्म अनुकूलन गलती कैसे बढ़कर निम्नलिखित में बदल सकती है:
मेमोरी भ्रष्टाचार
मनमानी पढ़ने/लिखने की प्रिमिटिव्स
नेटिव कोड संशोधन
संभावित रिमोट कोड निष्पादन (RCE)
यह exploit श्रृंखला दर्शाती है कि JIT इंजन प्रदर्शन और सुरक्षा के बीच संतुलन कैसे बनाते हैं, और कैसे गलत अनुकूलन धारणाएँ शोषण योग्य बन सकती हैं।
शामिल विषय
1. V8 आर्किटेक्चर
प्रस्तुति V8 के प्रमुख घटकों से परिचित कराती है:
Ignition Interpreter
JavaScript बाइटकोड निष्पादित करता है
रनटाइम फीडबैक एकत्र करता है
फीडबैक वेक्टर में प्रकार की जानकारी संग्रहीत करता है
TurboFan Optimizer
रनटाइम फीडबैक से अनुकूलित ग्राफ बनाता है
अनुमानित धारणाएँ और गार्ड सम्मिलित करता है
आक्रामक अनुकूलन पास निष्पादित करता है
Machine Code Backend
नेटिव CPU निर्देश उत्पन्न करता है
'हॉट' फ़ंक्शन के लिए अनुकूलित मशीन कोड तैयार करता है
प्रस्तुति में आर्किटेक्चर आरेख दर्शाता है कि JavaScript कैसे इस प्रकार आगे बढ़ता है:
root@kitploit:~
Parsing → Bytecode → Optimization → Execution
2. JavaScript को अनुकूलित करना कठिन क्यों है
JavaScript उच्च-प्रदर्शन निष्पादन के लिए चुनौतीपूर्ण है क्योंकि:
चर गतिशील रूप से प्रकार बदलते हैं
ऐरे संरचना और तत्व प्रकार बदलते हैं
+ जैसे ऑपरेटरों के कई अर्थ हो सकते हैं
रनटाइम जाँच महंगी होती हैं
V8 रनटाइम व्यवहार के बारे में अनुमान लगाकर सामान्य निष्पादन पैटर्न को अनुकूलित करने के लिए JIT संकलन का उपयोग करता है।
3. CVE-2021-21220 का मूल कारण
यह भेद्यता JIT अनुकूलन के दौरान signed बनाम unsigned पूर्णांक बेमेल से उत्पन्न होती है।
प्रदर्शित प्रमुख अवधारणाएँ:
Uint32Array
Word32Xor
गलत प्रकार प्रसार
ChangeInt32ToInt64
गलत असेंबली निर्देश चयन
exploit इस मान का दुरुपयोग करता है:
root@kitploit:~
0x80000000
जो 32-बिट पूर्णांक का साइन बिट सेट करता है।
4. अनुकूलन बेमेल
यह भेद्यता इसलिए उत्पन्न होती है क्योंकि TurboFan इसको पूरी तरह से अनुकूलित करके हटा देता है:
root@kitploit:~
x ^ 0
इस अनुकूलन के दौरान:
XOR ऑपरेशन गायब हो जाता है
प्रकार की जानकारी खो जाती है
Signed मान unsigned के रूप में व्याख्यायित हो जाते हैं
JIT व्यवहार इंटरप्रेटर व्यवहार से भिन्न हो जाता है
इसके परिणामस्वरूप गलत मशीन कोड निर्माण और हमलावर-नियंत्रित मान उत्पन्न होते हैं।
5. OOB प्रिमिटिव का निर्माण
exploit गलत JIT परिणाम को ऐरे व्यवहार पर नियंत्रण में परिवर्तित करता है।
प्रस्तुति निम्नलिखित प्रदर्शित करती है:
गलत अनुकूलित पूर्णांक मान
नियंत्रण चर i में रूपांतरण
वार्मअप और ट्रिगर निष्पादन के बीच बेमेल
Array.shift() लंबाई अंडरफ़्लो
OOB-सक्षम ऐरे का निर्माण
दिखाई गई महत्वपूर्ण exploit अवधारणाएँ:
वार्मअप अनुकूलन
अनुमानात्मक अनुकूलन
प्रकार भ्रम
ऐरे लंबाई भ्रष्टाचार
6. आउट-ऑफ-बाउंड्स एक्सेस
जब ऐरे की लंबाई -1 हो जाती है, हमलावर को प्राप्त होता है:
आउट-ऑफ-बाउंड्स रीड
आउट-ऑफ-बाउंड्स राइट
पड़ोसी V8 हीप ऑब्जेक्ट्स तक पहुंच
फिर exploit निम्नलिखित प्रदर्शित करता है:
पॉइंटर लीक
ऑब्जेक्ट पता खोज
ओवरलैपिंग ऐरे
कच्चे V8 पॉइंटर निष्कर्षण
7. WebAssembly दुरुपयोग
प्रस्तुति बताती है कि हमलावर कैसे लक्षित कर सकते हैं:
WebAssembly संकलित कोड पेज
V8 द्वारा उत्पन्न नेटिव निष्पादन योग्य मेमोरी
हमले का प्रवाह:
एक Wasm फ़ंक्शन बनाएँ
निष्पादन योग्य मेमोरी का पता लगाएँ
संकलित मशीन कोड को अधिलेखित करें
Wasm को पुनः निष्पादित करें
मनमाना नेटिव निष्पादन प्राप्त करें
यह दर्शाता है कि JavaScript इंजन बग प्रक्रिया-स्तरीय कोड निष्पादन में कैसे परिवर्तित हो सकता है।
सुरक्षा उपाय और शमन
अंतिम अनुभाग आधुनिक ब्राउज़र सुरक्षा उपायों को शामिल करता है:
संपीड़ित पॉइंटर
प्रत्यक्ष पॉइंटर जोखिम और हीप की भविष्यवाणी को कम करते हैं।
पॉइंटर इनडायरेक्शन
कच्चे मेमोरी पतों तक सीधी पहुंच को रोकते हैं।
हीप सैंडबॉक्सिंग
मेमोरी क्षेत्रों को अलग करते हैं और exploit के प्रभाव को कम करते हैं।
W^X (Write XOR Execute)
पेजों को एक साथ लिखने योग्य और निष्पादन योग्य होने से रोकते हैं।
प्रस्तुति में साइन-एक्सटेंशन समस्या के समाधान को दर्शाने वाला वास्तविक V8 पैच diff भी शामिल है।
मुख्य निष्कर्ष
यह प्रस्तुति दर्शाती है कि:
छोटी अनुकूलन गलतियाँ गंभीर भेद्यताएँ बन सकती हैं
JIT कंपाइलर हमले की सतह की जटिलता को काफी बढ़ा देते हैं
रनटाइम अनुमान खतरनाक असंगतियाँ उत्पन्न कर सकता है
WebAssembly शोषण के परिदृश्य को बदल देता है
आधुनिक ब्राउज़रों को कई स्तरित सुरक्षा उपायों की आवश्यकता होती है
चर्चित प्रौद्योगिकियाँ
JavaScript
Google V8 इंजन
TurboFan
Ignition
WebAssembly (Wasm)
JIT संकलन
मेमोरी भ्रष्टाचार
आउट-ऑफ-बाउंड्स एक्सेस
ब्राउज़र शोषण
शैक्षिक उद्देश्य
यह सामग्री कड़ाई से केवल निम्नलिखित के लिए है:
सुरक्षा अनुसंधान
शैक्षिक प्रदर्शन
ब्राउज़र आंतरिक कार्यप्रणाली सीखना
भेद्यता विश्लेषण
इस जानकारी का उपयोग उन प्रणालियों के विरुद्ध न करें जिनके स्वामी आप नहीं हैं या जिनके परीक्षण की अनुमति आपके पास नहीं है।