
1.xx-2xx फ़र्मवेयर के लिए एक PS5 हाइपरवाइज़र एक्सप्लॉइट।
PS5 हाइपरवाइज़र एक्सप्लॉइट <= 2.xx फ़र्मवेयर के लिए। रिपॉजिटरी में दो कमजोरियाँ और एक्सप्लॉइट चेन शामिल हैं, वे एक-दूसरे से स्वतंत्र हैं और दोनों में से कोई भी इस्तेमाल की जा सकती है। एक एक्सप्लॉइट मुख्य रूप से संरक्षण के लिए दिया गया है (/_old_jump_table_exploit), केवल प्राथमिक एक्सप्लॉइट चेन का उपयोग करने की आवश्यकता है (QA फ़्लैग्स एक्सप्लॉइट)।
यह शोध hardwear.io NL 2024 में प्रस्तुत किया गया था, स्लाइड्स यहाँ मिल सकती हैं। यह वार्ता जल्द ही प्रकाशित की जाएगी।
जंप टेबल एक्सप्लॉइट
पहला एक्सप्लॉइट एक ऐसी कमजोरी का उपयोग करता है जहाँ हाइपरवाइज़र कोड जंप टेबल अतिथि कर्नेल के साथ साझा की जाती हैं, और यह /_old_jump_table_exploit/ में स्थित है। VMMCALL_HV_SET_CPUID_PS4 हाइपरकॉल के लिए जंप टेबल प्रविष्टि को हाईजैक करके, हाइपरवाइज़र में कोड निष्पादन प्राप्त किया जा सकता है। हम एक ROP चेन चलाते हैं जो नेस्टेड पेजिंग (NPT) और गेस्ट मोड एक्सिक्यूट ट्रैप (GMET) को अक्षम करती है, जिससे हम कर्नेल पेज टेबल एंट्रीज़ (PTEs) में eXecute Only Memory (XOM) उर्फ xotext को अक्षम करके उसे डंप कर सकते हैं, साथ ही PTEs में राइट सक्षम करके कर्नेल को हुक/पैच भी कर सकते हैं।
इस विधि के लिए काफी संख्या में गैजेट्स और ऑफसेट्स की आवश्यकता होती है, जो मुख्य कारण है कि यह एक्सप्लॉइट प्राथमिक नहीं है। यह वर्तमान में केवल उस कोर पर हाइपरवाइज़र को तोड़ता है जिस पर ROP चेन चलती है, हाइपरवाइज़र अन्य कोर पर अभी भी सक्रिय रहता है और उसे अक्षम करने की आवश्यकता होगी।
QA फ़्लैग्स एक्सप्लॉइट
प्राथमिक और अनुशंसित एक्सप्लॉइट इस तथ्य का लाभ उठाता है कि सिस्टम क्वालिटी एश्योरेंस (QA) फ़्लैग हाइपरवाइज़र और अतिथि कर्नेल के बीच साझा किए जाते हैं। जब हाइपरवाइज़र इनिशियलाइज़ होता है, तो नेस्टेड पेज टेबल बनाने के लिए init कोड सिस्टम लेवल (SL) डिबगिंग फ़्लैग के लिए QA फ़्लैग्स की जाँच करेगा। यदि यह फ़्लैग सेट है, तो नेस्टेड पेज टेबल एंट्रीज़ (PTEs) में कर्नेल .text पेजों के लिए xotext बिट सेट नहीं होगा, और इसके अलावा कर्नेल .text पेजों पर राइट बिट भी सेट होगा।
स्लीप मोड से रिज़्यूम करने पर ये फ़्लैग सिक्योर लोडर द्वारा पुनः इनिशियलाइज़ नहीं किए जाते, हालाँकि हाइपरवाइज़र पुनः इनिशियलाइज़ होता है। SL फ़्लैग सेट करके, सिस्टम को स्लीप में डालकर, और रिज़्यूम करके, हम अतिथि कर्नेल के पेजटेबल्स को संपादित कर सकते हैं ताकि कर्नेल .text पेज रीड/राइट करने योग्य बन जाएँ, जिससे कर्नेल की डंपिंग और हुक/पैच संभव हो सकें।
यह एक्सप्लॉइट पेलोड PS5-Payload-Dev SDK का उपयोग करके बनाया गया है। यह भी ध्यान दें कि hen/ के लिए बिल्ड थोड़ा विशेष है, क्योंकि इसे एक फ्लैट बाइनरी में संकलित किया जाता है जिसे कर्नेल कोड केव में कॉपी किया जाता है। hen/ में मौजूद सारा कोड सुपरवाइज़र/कर्नेल मोड में चलता है।
byepervisor.elf भेजेंbyepervisor.elf फिर से भेजें (यदि आप John Tornblom का ELF लोडर उपयोग करते हैं, तो ELF लोडर को रिज़्यूम के बाद पेलोड स्वीकार करना जारी रखना चाहिए, यदि नहीं, तो UMTX एक्सप्लॉइट को फिर से चलाने की आवश्यकता होगी)byepervisor.elf को केवल एक बार भेजने की आवश्यकता होPS5 अनुसंधान/डेवलपमेंट में योगदान देने में रुचि रखने वाले लोग मेरे द्वारा सेटअप किए गए डिस्कॉर्ड यहाँ से जुड़ सकते हैं।