
कर्नेल-मोड विंडोज ड्राइवर जो CVE-2017-11882 के शोषण को प्रक्रिया निर्माण को इंटरसेप्ट करके और eqnedt32.exe द्वारा उत्पन्न दुर्भावनापूर्ण चाइल्ड प्रक्रियाओं को अस्वीकार करके रोकता है।
एक विंडोज ड्राइवर जो CVE-2017-11882 को निष्क्रिय करता है : )
यह प्रोजेक्ट एक कर्नेल ड्राइवर और एक उपयोगकर्ता-मोड अधिसूचना घटक में विभाजित है जो उल्टे कॉल मॉडल का उपयोग करके एक कस्टम डिवाइस पर बातचीत करते हैं।
DriverEntry एक PsSetCreateProcessNotifyRoutineEx कॉलबैक पंजीकृत करता है ताकि ड्राइवर सिस्टम में प्रत्येक प्रक्रिया निर्माण पर, नई प्रक्रिया निष्पादित होने से पहले, समकालिक रूप से आमंत्रित किया जाए।ZwOpenProcess के माध्यम से पैरेंट प्रक्रिया खोलता है और पूर्ण NT पथ प्राप्त करने के लिए ProcessImageFileName को क्वेरी करता है। एक अनुगामी-प्रत्यय RtlCompareUnicodeString तुलना eqnedt32.exe के विरुद्ध यह निर्धारित करती है कि यह शोषण का प्रयास है या नहीं।CreateInfo->CreationStatus = STATUS_ACCESS_DENIED सेट करता है। कॉलबैक से प्रक्रिया लॉन्च को रद्द करने का यह दस्तावेजी तरीका है।एजेंट दो थ्रेड का उपयोग करता है: एक I/O डिस्पैचर जो WaitForSingleObject + GetOverlappedResult के साथ उल्टे-कॉल लूप चलाता है, और एक UI वर्कर जो अलर्ट पॉप करता है और उन्हें MessageBoxW के साथ प्रस्तुत करता है। हैंडल एक छोटे RAII AutoHandle रैपर द्वारा प्रबंधित किए जाते हैं।
संपूर्ण पहचान कर्नेल-रिपोर्टेड पैरेंट PID पर निर्भर करती है। एक हमलावर PROC_THREAD_ATTRIBUTE_PARENT_PROCESS के साथ NtCreateUserProcess को कॉल करके पेलोड को explorer.exe में पुनः-पैरेंट कर सकता है और पहचान से बच सकता है : )
यह समाधान उन्नत शोषणों का पता नहीं लगाता जो प्रक्रिया इंजेक्शन या इन-मेमोरी कोड निष्पादन करते हैं। यह केवल इस CVE के सामान्य शोषण का पता लगाता है, जो एक नई (दुर्भावनापूर्ण) प्रक्रिया को जन्म देता है।