
Lenovo dispatcher driver (LnvMSRIO.sys) (CVE-2025-8061) का शोषण करने के लिए PoC
यह Lenovo dispatcher ड्राइवर (LnvMSRIO.sys) (CVE-2025-8061) का शोषण करने के लिए एक बुनियादी proof of concept है। कमजोरियाँ Luis Casvella द्वारा पाई गईं (स्रोत: https://blog.quarkslab.com/exploiting-lenovo-driver-cve-2025-8061.html)।
इस poc का मुख्य विचार केवल read/write प्रिमिटिव्स का शोषण करना है, ताकि ntoskrnl.exe से system token चुराया जा सके। ऐसा करने के लिए, poc Superfetch/PFN (https://www.outflank.nl/blog/2023/12/14/mapping-virtual-to-physical-adresses-using-superfetch/) का उपयोग करता है ताकि usermode में virtual addresses को physical addresses में अनुवाद किया जा सके।
Superfetch का उपयोग करके, हम virtual addresses को physical addresses में अनुवाद कर सकते हैं ताकि उन्हें सीधे कमजोर ड्राइवर को प्रदान किया जा सके, जिससे हम किसी भी address को पढ़ और लिख सकते हैं। इसके साथ, poc केवल ntoskrnl.exe में परिभाषित NtAddAtom फ़ंक्शन की शुरुआत को एक छोटे shellcode के साथ अधिलेखित कर देगा ताकि हमारे rust code (base.rs में steal_kernel_token_shellcode_fn) में inline assembly के साथ परिभाषित usermode shellcode पर कूद सके। यह छोटा shellcode generate_jmp_user_shellcode में उत्पन्न होता है, और जैसा कि हम देख सकते हैं, यह SMEP को अक्षम करने के लिए CR4 में 20वां बिट अनसेट करेगा, फिर हमारे userland shellcode (system token चुराने के लिए) को कॉल करेगा और अंत में SMEP को पुनः सक्षम करेगा।
इन सबके साथ, हमें अपना system cmd मिल जाएगा।
महत्वपूर्ण: superfetch को क्वेरी करने के लिए व्यवस्थापक (admin) के रूप में चलाना आवश्यक है।
यह Windows 10 (22h2) और Windows 11 (25h2) पर परीक्षण किया गया है। अपने Windows संस्करण के अनुसार आवश्यकतानुसार offsets समायोजित करें।