
CVE-2018-8060/8061 के लिए सरल IOCTL डिस्पैचर
विवरण:
HWiNFO AMD64 कर्नेल ड्राइवर संस्करण 8.98 और उससे नीचे का संस्करण बिना विशेषाधिकार वाले उपयोगकर्ता को डिवाइस ड्राइवर को IOCTL भेजने की अनुमति देता है। यदि इनपुट और/या आउटपुट बफर पॉइंटर शून्य (null) हैं या इन बफ़र्स का डेटा अमान्य है, तो शून्य/अमान्य पॉइंटर उत्पन्न होता है, जिसके परिणामस्वरूप Windows कर्नेल पैनिक, जिसे ब्लू स्क्रीन (Blue Screen) भी कहा जाता है, होता है।
POC:
एक बिना विशेषाधिकार वाला उपयोगकर्ता प्रतीकात्मक डिवाइस "HWiNFO32" को कुछ IOCTL भेजता है, जो 0x85FE2600 से अधिक होते हैं तथा जिनमें इन/आउट बफर का डेटा स्वेच्छिक होता है; इसके परिणामस्वरूप डिवाइस ड्राइवर के दायरे में पॉइंटर डिरेफरेंस (pointer dereference) होता है, जिससे कर्नेल पैनिक उत्पन्न होता है। कुछ मामलों में यह CWE-476 (NULL Pointer Dereference) या CWE-781 (METHOD_NEITHER I/O Control Code के साथ IOCTL में अनुचित एड्रेस सत्यापन) का परिणाम देता है।
विवरण:
HWiNFO AMD64 कर्नेल ड्राइवर संस्करण 8.98 और उससे नीचे का संस्करण बिना विशेषाधिकार वाले उपयोगकर्ता को डिवाइस ड्राइवर को विशेष IOCTL भेजने की अनुमति देता है, जिसके परिणामस्वरूप सीधे भौतिक मेमोरी में पढ़ना या लिखना होता है।
POC:
बिना विशेषाधिकार वाला उपयोगकर्ता प्रतीकात्मक डिवाइस "HWiNFO32" को एक विशेष IOCTL, अर्थात 0x85FE2608 भेजता है, जिसमें इन-बफर (user-space) में एक भौतिक मेमोरी एड्रेस, आकार और एक वर्चुअल मेमोरी एड्रेस होता है; इसके परिणामस्वरूप ड्राइवर भौतिक मेमोरी को मैप करके उसे पढ़ता है, तथा उसकी सामग्री को वर्चुअल एड्रेस पर कॉपी करता है।
फ़ाइल 8061.data इस प्रकार स्वरूपित है: