
CVE-2019-9729. https://github.com/DoubleLabyrinth/SdoKeyCrypt-sys-local-privilege-elevation से स्थानांतरित
SdoKeyCrypt.sys एक MMORPG, उर्फ मैसिवली-मल्टीप्लेयर-ऑनलाइन-रोल-प्लेइंग-गेम, जिसे MapleStory Online कहा जाता है, के लिए एक कीबोर्ड सुरक्षा ड्राइवर है, जिसे चीन में Shanda Group द्वारा प्रकाशित किया गया है।
गेम की आधिकारिक वेबसाइट: http://mxd.sdo.com। (भाषा: चीनी)
यह ड्राइवर गेम के पहली बार चलने पर C:\Windows\System32\ फ़ोल्डर में डाउनलोड और इंस्टॉल किया जाएगा। चूँकि गेम बहुत बड़ा है, लगभग 13.11 GB, इसलिए मैंने यहाँ एक बैकअप SdoKeyCrypt.sys बनाया है, जो कोई भी इस एक्सप्लॉइट को दोहराना चाहता है उसके लिए।
SdoKeyCrypt.sys निश्चित रूप से आधिकारिक है और किसी के द्वारा संशोधित नहीं किया गया है।
आप देख सकते हैं कि Shanda Computer (Shanghai) Co., Ltd. द्वारा हस्ताक्षरित एक वैध डाइजेस्ट हस्ताक्षर है, जो पुष्टि करता है कि SdoKeyCrypt.sys वास्तव में Shanda द्वारा बनाया गया है।

IRP_MJ_DEVICE_CONTROL हैंडल रूटीन में, जब IOCTL कोड (DWORD)(-0x7FFF3FFC + 0x18) = 0x8000c01c होता है, ड्राइवर यूज़र स्पेस से पारित डेटा को ठीक से संभाल नहीं पाता है, जिससे साइज़ मान नेगेटिव हो सकता है और हीप अंडरफ़्लो उत्पन्न हो सकता है।
हीप स्प्रेइंग, जिसे पूल-फेंग-शुई (pool-Feng-Shui) हमला भी कहा जाता है, की सहायता से एक SMEP को अक्षम कर सकता है और कर्नेल मोड में किसी भी शेलकोड को चला सकता है, जिससे स्थानीय विशेषाधिकार उन्नयन होता है।


x64 Microsoft Visual C++ कंपाइलर (जो c++11 का समर्थन करता है) के साथ
$ cl poc.cpp /Fe:poc.exe /link /dynamicbase:no /fixed ntdll.lib
Visual Studio 2017 Community पर परीक्षण किया गया, निम्नलिखित आउटपुट का एक उदाहरण है:
C:\Github\SdoKeyCrypt-sys-local-privilege-elevation>cl poc.cpp /Fe:poc.exe /link /dynamicbase:no /fixed ntdll.lib
Microsoft (R) C/C++ Optimizing Compiler Version 19.16.27027.1 for x64
Copyright (C) Microsoft Corporation. All rights reserved.
poc.cpp
Microsoft (R) Incremental Linker Version 14.16.27027.1
Copyright (C) Microsoft Corporation. All rights reserved.
/out:poc.exe
/dynamicbase:no
/fixed
ntdll.lib
poc.obj
फिर सुनिश्चित करें कि SdoKeyCrypt.sys लोड है और poc.exe को सीधे चलाएँ। यदि कुछ गलत नहीं होता है, तो आपको एक nt authority\system शेल मिलना चाहिए।
PoC कोड का परीक्षण किया गया है और यह Win10 1709 और Win10 1803 पर ठीक काम करता है।
हालाँकि यह Win10 1809 पर काम नहीं करता है, जो हीप-बैक्ड पूल का उपयोग करता है, जो हीप-स्प्रे हमले को शमन करता है। लेकिन यह BSOD का कारण बन सकता है, इसलिए कम से कम एक स्थानीय Denial-of-Service भेद्यता तो है।
निम्नलिखित Win10 1803 17134.619 पर एक परीक्षण वीडियो है।
