Skip to content
KitploitKITPLOIT
उपकरणएक्सप्लॉइटब्लॉग
Log in
जमा करें
उपकरणएक्सप्लॉइटब्लॉग
जमा करें

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

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

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

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

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
cve-2023-31355-poc — AMD SEV-SNP फ़र्मवेयर भेद्यता (CVE-2023-31355) के लिए एक्सप्लॉइट जो पते शून्य पर एक अप्रारंभीकृत RMP प्रविष्टि लिखकर UMC कुंजी बीज को दूषित करके सेवामुक्त मेहमानों की मनमानी मेमोरी को डिक्रिप्ट करता है। | Kitploit
उपकरण/GitHubGitHub/freax13/cve-2023-31355-poc
एन्क्रिप्शन/डिक्रिप्शन उपकरणमेमोरी फोरेंसिकभेद्यता विश्लेषणशोषणहार्डवेयर सुरक्षाफर्मवेयर विश्लेषणबाइनरी शोषण
GitHubfreax13/cve-2023-31355-poc

cve-2023-31355-poc

AMD SEV-SNP फ़र्मवेयर भेद्यता (CVE-2023-31355) के लिए एक्सप्लॉइट जो पते शून्य पर एक अप्रारंभीकृत RMP प्रविष्टि लिखकर UMC कुंजी बीज को दूषित करके सेवामुक्त मेहमानों की मनमानी मेमोरी को डिक्रिप्ट करता है।

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

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

सभी देखें →

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

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

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

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

SEV फ़र्मवेयर भेद्यता

इस रिपॉज़िटरी में SEV फ़र्मवेयर की एक भेद्यता के लिए शोषण (exploit) मौजूद है। यह शोषण SEV-SNP गेस्ट को डीकमीशन किए जाने के बाद उसकी मनमानी मेमोरी को डिक्रिप्ट करने की अनुमति देता है।

परीक्षण संस्करण 1.55.16 (लेखन के समय नवीनतम) पर किया गया है।

मूल कारण

snp_reclaim_buffer बिना शर्त RMP परिवर्तनों को वापस लिखने का प्रयास करता है, भले ही पता RMP द्वारा कवर न किया गया हो। यदि address RMP द्वारा कवर नहीं है, तो RMP एंट्री के लिए पता page_rmp_paddr कभी ठीक से आरंभ (initialize) नहीं होता और अपने प्रारंभिक मान 0 पर ही रहता है। परिणामस्वरूप फ़र्मवेयर RMP एंट्री में हुए परिवर्तनों को पते 0 पर वापस लिखने का प्रयास करता है। यह खराब है क्योंकि पता 0 RMP द्वारा कवर किया जाता है और अतिरिक्त जाँचों के बिना उस पर लिखना नहीं चाहिए। यदि address RMP-आच्छादित क्षेत्र के बाहर है, तो page_rmp_entry कभी ठीक से आरंभ नहीं होता और उसमें स्टैक से कचरा मेमोरी होती है। यह कचरा मेमोरी व्यवहार में स्थिर रहती है।

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

snp_reclaim_buffer को SEV रिंग बफ़र के स्टेटस पेज के पते के साथ कॉल किया जाता है, जब हाइपरवाइज़र रिंग बफ़र मोड से बाहर निकलने का अनुरोध करता है। यह पता हमलावर-नियंत्रित होता है। इस पते के लिए कुछ जाँचें हैं, लेकिन डिफ़ॉल्ट पेज (यानी RMP-आच्छादित क्षेत्र के बाहर के पेज) स्पष्ट रूप से अनुमत हैं।

शोषण

हम पते 0 पर एक गेस्ट कॉन्टेक्स्ट पेज रखकर इस लेखन का शोषण कर सकते हैं। सुविधाजनक रूप से, गेस्ट कॉन्टेक्स्ट पेज का पहला फ़ील्ड UMC key seed होता है, जिसका आकार RMP एंट्री के समान ही होता है (दोनों 16 बाइट्स के होते हैं)। फ़र्मवेयर को पते 0 पर परिवर्तन वापस लिखने के लिए धोखा देकर हम UMC key seed को दूषित कर सकते हैं। जो अनारंभित RMP एंट्री लिखी जाती है वह हमेशा समान होती है, इसलिए दूषित UMC key seed भी हमेशा लगभग समान होगा: RMP एंट्री में सबपेज काउंट (9 बिट्स) नहीं लिखा जाता, लेकिन अन्य सभी फ़ील्ड लिखे जाते हैं। बार-बार नए गेस्ट कॉन्टेक्स्ट पेज बनाकर—जिनमें हर बार अलग यादृच्छिक प्रारंभिक सबपेज काउंट होता है—हम अंततः समान UMC key seed वाले कई गेस्ट बना सकते हैं।

भेद्यता का शोषण करने के लिए हम निम्नलिखित चरणों का पालन कर सकते हैं:

  1. पीड़ित गेस्ट के लिए पते 0 पर एक गेस्ट कॉन्टेक्स्ट पेज बनाएँ।
  2. भेद्यता का उपयोग करके पीड़ित गेस्ट के UMC key seed को दूषित करें।
  3. पीड़ित गेस्ट कॉन्टेक्स्ट पेज को सक्रिय करें, और पीड़ित गेस्ट को लॉन्च व चलाएँ।
  4. पीड़ित गेस्ट को डीकमीशन करें।
  5. हमलावर गेस्ट के लिए पते 0 पर एक गेस्ट कॉन्टेक्स्ट पेज बनाएँ।
  6. भेद्यता का उपयोग करके हमलावर गेस्ट के UMC key seed को दूषित करें। 9 बिट्स को छोड़कर बाकी सब पीड़ित गेस्ट से मेल खाने की गारंटी है।
  7. यदि हमलावर गेस्ट का UMC key seed पीड़ित गेस्ट से मेल खाता है तो आगे बढ़ें, अन्यथा चरण 5 पर जाएँ।
  8. हमलावर गेस्ट कॉन्टेक्स्ट पेज को सक्रिय करें और डीबग फ़्लैग सक्षम करके लॉन्च करें।
  9. पीड़ित गेस्ट की मेमोरी को हमलावर गेस्ट को सौंपें।
  10. हमलावर गेस्ट के कॉन्टेक्स्ट पेज का उपयोग करके पीड़ित गेस्ट की मेमोरी को डिक्रिप्ट करने के लिए SNP_DBG_ENCRYPT कमांड का उपयोग करें। यह सफल होगा क्योंकि पीड़ित गेस्ट और हमलावर गेस्ट एक ही UMC key seed साझा करते हैं।

प्रभाव

इस तथ्य के कारण कि हम गेस्ट के डीकमीशन के बाद ही मेमोरी डिक्रिप्ट कर सकते हैं, नकली अटेस्टेशन रिपोर्ट बनाना संभव नहीं है, भले ही हमारे पास गेस्ट के रहस्यों तक पहुँच हो। हम नकली अटेस्टेशन रिपोर्ट तभी बना सकते हैं जब गेस्ट को डीकमीशन किए जाने से पहले किसी अन्य होस्ट पर माइग्रेट किया गया हो: इस स्थिति में डीकमीशन किए गए गेस्ट के रहस्य (यानी VMPCKs) नई माइग्रेटेड इंस्टेंस पर भी काम करेंगे।

व्यवहार में, हालाँकि, कई एप्लिकेशन अन्य संवेदनशील जानकारी (यानी निजी कुंजियाँ, डिस्क एन्क्रिप्शन कुंजियाँ) संग्रहीत करते हैं जिन्हें इस शोषण का उपयोग करके लीक किया जा सकता है।

शमन (Mitigation)

RMP एंट्री को केवल तभी वापस लिखा जाना चाहिए जब पेज डिफ़ॉल्ट स्थिति में न हो।

PoC उपयोग

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