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

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

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

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

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

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
cve-2016-7190 — ChakraCore शोषण तकनीकें | Kitploit
उपकरण/GitHubGitHub/0xcl/cve-2016-7190
भेद्यता विश्लेषणशोषणशेलकोडवेब एप्लिकेशन शोषणपेपर और शोधलर्निंग और शिक्षापेलोड डेवलपमेंटबाइनरी शोषण
GitHub0xcl/cve-2016-7190

cve-2016-7190

ChakraCore शोषण तकनीकें

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

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

सभी देखें →

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

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

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

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

अवलोकन

CVE-2016-7190 [0] ChakraCore के Array.map() फ़ंक्शन में एक हीप ओवरफ़्लो है जो आसन्न मेमोरी को अधिलेखित करने की अनुमति देता है। मनमाना रीड-राइट एक्सेस प्राप्त करने का मुख्य विचार पहले क्रमिक JavaScript पूर्णांक एरेज़ आवंटित करना है, और फिर एक एरे के आकार में हेरफेर करने के लिए ओवरफ़्लो का शोषण करना है। फिर, हम इस एरे का उपयोग Uint8Array के बेस एड्रेस को उस पते में बदलने के लिए करते हैं जिसे हम पढ़ना/लिखना चाहते हैं। इस अतिरिक्त कदम का कारण यह है कि ओवरफ़्लो ओवरफ़्लो हुए पूर्णांक एरे के आकार के 2x तक सीमित है।

यह भेद्यता विभिन्न शोषण रणनीतियों के परीक्षण के लिए बहुत उपयुक्त है क्योंकि इसे ChakraCore के वर्तमान संस्करणों में आसानी से पुनः प्रस्तुत किया जा सकता है (undo-cve-2016-7190.patch देखें)।

मेरा परीक्षण वातावरण

  • ChakraCore Release 1.8 (6e56489a4fe940ce6f8a960caf9429700bf2d8db)
  • Microsoft Windows 10 Pro x64 / 10.0.14393 Build 14393
  • बाइनरी: https://drive.google.com/open?id=1WTXqMLVRHPRoBU9eo-MWEwAY--CQC8e3
  • प्रतीक: https://drive.google.com/open?id=1kQDrlG97NY5ruVH6i2Mjr43cFuNISp5z

उदाहरण शोषण

नियंत्रण प्रवाह का अपहरण

इस उदाहरण में, हम एक Uint8Array C++ ऑब्जेक्ट के vtable पॉइंटर को एक नियंत्रित मेमोरी पते पर अधिलेखित करके और Uint8Array ऑब्जेक्ट के एक फ़ंक्शन को लागू करके नियंत्रण प्रवाह का अपहरण करते हैं जिसके परिणामस्वरूप एक वर्चुअल फ़ंक्शन का आह्वान होता है।

मनमाना निर्देश उत्पन्न करने के लिए डेटा-केवल हमला (ACG [3] द्वारा शमन)

कंट्रोल-फ़्लो इंटीग्रिटी (CFI) एक रक्षा तकनीक है जो नियंत्रण-प्रवाह अपहरण हमलों को शमित करने के लिए है। CFI का सामान्य विचार संकलन समय के दौरान एक एप्लिकेशन का नियंत्रण-प्रवाह ग्राफ़ (CFG) की गणना करना है, और फिर एप्लिकेशन को रन-टाइम जाँच के साथ उपकरणित करना है ताकि यह सुनिश्चित हो सके कि नियंत्रण प्रवाह रन टाइम के दौरान स्थिर रूप से गणना किए गए CFG से विचलित न हो। हालाँकि, यदि कोई एप्लिकेशन, जैसे वेब-ब्राउज़र, डायनेमिक कोड जनरेशन का समर्थन करता है, तो CFG को रन टाइम के दौरान विस्तार योग्य होना चाहिए। यह कई चुनौतियाँ प्रस्तुत करता है:

  • CFG के एक सौम्य और दुर्भावनापूर्ण विस्तार में अंतर कैसे करें?
  • डायनेमिक रूप से उत्पन्न कोड की सुरक्षा कैसे करें?
  • यह कैसे सुनिश्चित करें कि सही प्रोग्राम उत्पन्न हुआ है?

जिस समय हमने अपना शोध किया, हमने अंतिम चुनौती पर ध्यान केंद्रित किया। मुख्य विचार जस्ट-इन-टाइम (JIT) कंपाइलर के इनपुट (डेटा) में हेरफेर करना है। परिणामस्वरूप, JIT कंपाइलर दुर्भावनापूर्ण कोड उत्पन्न करेगा जो तब वर्तमान संदर्भ में एकीकृत हो जाएगा—और CFI के साथ भी सख्त किया जा सकता है। हमारे शोध के समानांतर, theori [4] ने दिखाया कि JIT कंपाइलर के आउटपुट में हेरफेर करके CFI को कैसे बायपास किया जाए। इस हमले को चेकसम के माध्यम से आउटपुट की अखंडता को सत्यापित करके शमित किया जाता है। यह हमारे हमले को नहीं रोक सकता क्योंकि हम JIT कंपाइलर के इनपुट में हेरफेर करते हैं। हालाँकि, JIT संकलन को किसी अन्य प्रक्रिया (उर्फ आर्बिट्रेरी कोड गार्ड [3]) को आउटसोर्स करके दोनों हमले शमित हो जाते हैं।

हम प्रदर्शित करते हैं कि एक हमलावर JIT कंपाइलर के विरुद्ध डेटा-केवल हमले का शोषण करके मनमाना नेटिव कोड उत्पन्न कर सकता है। विशेष रूप से, हम हमलावर-नियंत्रित निर्देशों को इंजेक्ट करने के लिए JIT कंपाइलर के मध्यवर्ती प्रतिनिधित्व (IR) को संशोधित करते हैं। जब JIT कंपाइलर तब संशोधित IR के आधार पर नेटिव कोड उत्पन्न करता है तो वह हमलावर-नियंत्रित नेटिव कोड उत्पन्न करेगा।

मूल रूप से शोध किए जाने के समय और अब के बीच, ChakraCore का IR बदल दिया गया था। हमने हमले को पोर्ट करने का प्रयास नहीं किया, इसलिए, इस हमले के साथ खेलने के लिए, कृपया निम्नलिखित बाइनरी का उपयोग करें।

  • बाइनरी: https://drive.google.com/open?id=1Il51XlTPwYcUWcuMqchZIrkBC7Uq844v
  • प्रतीक: https://drive.google.com/open?id=1w_TqCEoDFhi2SG48UrBBiVcl3rF_5-yG

मनमाना मेमोरी को लिखने योग्य के रूप में पुनः मैप करने के लिए डेटा-केवल हमला

ACG [3] के विश्लेषण के दौरान हमने अन्य [1,2] के अलावा देखा कि वैश्विक केवल-पढ़ने योग्य डेटा, जो .mrdata अनुभाग में संग्रहीत है, को गतिशील रूप से उत्पन्न कोड को एकीकृत करने के लिए समायोजित किया जाना चाहिए। यह LdrProtectMrdata() फ़ंक्शन के माध्यम से किया जाता है जो इसे थ्रेड-सुरक्षित बनाने के लिए एक लॉक का उपयोग करता है। हालाँकि, .mrdata अनुभाग को लॉक प्राप्त करने से पहले पहले लिखने योग्य के रूप में पुनः मैप किया जाता है। दिलचस्प बात यह है कि .mrdata अनुभाग में .mrdata अनुभाग का बेस एड्रेस और आकार होता है जिसका उपयोग बाद में इस अनुभाग को फिर से केवल पढ़ने योग्य के रूप में पुनः मैप करने के लिए किया जाता है।

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

  1. .mrdata अनुभाग के लिए लॉक प्राप्त करें
  2. JIT कंपाइलर को ट्रिगर करें जो एक अलग थ्रेड में निष्पादित होता है
  3. तब तक प्रतीक्षा करें जब तक .mrdata अनुभाग लिखने योग्य के रूप में मैप न हो जाए
  4. .mrdata अनुभाग का बेस एड्रेस बदलें
  5. लॉक जारी करें परिणामस्वरूप, .mrdata अनुभाग लिखने योग्य बना रहा। मनमाना मेमोरी को लिखने योग्य के रूप में मैप करने के लिए, हमलावर को केवल .mrdata अनुभाग का बेस एड्रेस बदलना होगा, और फिर ऊपर दिए गए चरणों को दोहराना होगा।

इस हमले का परिणाम यह है कि पहले से विश्वसनीय डेटा, यानी डेटा जो केवल पढ़ने योग्य के रूप में मैप किया गया है, अविश्वसनीय हो जाता है। हमारे प्रूफ-ऑफ-कॉन्सेप्ट में, हम CFGuard के सत्यापन फ़ंक्शन के पॉइंटर को बदलकर कंट्रोल-फ़्लो गार्ड (CFGuard) को बायपास करने के लिए इस प्रिमिटिव का शोषण करते हैं जो _guard_dispatch_icall_fptr में सहेजा गया है। प्रभाव को डीबगर संलग्न करके और bypass_cfguard चर को बदलकर देखा जा सकता है।

संदर्भ

[0] https://bugs.chromium.org/p/project-zero/issues/detail?id=923
[1] http://alex-ionescu.com/publications/euskalhack/euskalhack2017-cfg.pdf
[2] https://sites.google.com/site/bingsunsec/dataonlyattack
[3] https://blogs.windows.com/msedgedev/2017/02/23/mitigating-arbitrary-native-code-execution/
[4] http://theori.io/research/chakra-jit-cfg-bypass

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