
CVE-2024-21338 के लिए प्रूफ-ऑफ-कॉन्सेप्ट एक्सप्लॉइट, जो Windows AppLocker ड्राइवर (appid.sys) में विशेषाधिकार वृद्धि (privilege escalation) भेद्यता है, जिसका उपयोग Lazarus समूह ने 0day के रूप में किया था। यह विशेष रूप से तैयार किए गए IOCTL अनुरोधों और PreviousMode हेरफेर के माध्यम से कर्नेल रीड/राइट प्राप्त करता है।
यह CVE-2024-21338 के लिए एक POC है। यह कमजोरी Windows AppLocker ड्राइवर (appid.sys) में एक विशेषाधिकार वृद्धि (privilege escalation) कमजोरी है, जिसे Lazarus संगठन द्वारा 0day के रूप में उपयोग किया गया था, जिसका उपयोग Windows स्थानीय विशेषाधिकार वृद्धि के लिए किया जाता है।
CVE-2024-21338 एक विशेषाधिकार वृद्धि कमजोरी है जिसे 13 फरवरी 2024 को Microsoft Patch Tuesday में खुलासा किया गया था। इस कमजोरी का उपयोग Lazarus हैकर संगठन द्वारा FudModule rootkit तैनात करने के लिए कर्नेल एक्सेस प्राप्त करने हेतु किया गया था।
यह कमजोरी appid.sys ड्राइवर के 0x22A018 नियंत्रण कोड में मौजूद है। हमलावर विशेष रूप से तैयार IOCTL अनुरोध भेजकर कमजोरी को ट्रिगर कर सकता है, जिससे मनमाना कॉलबैक कॉल संभव होता है, और अंततः कर्नेल पढ़ने/लिखने का अधिकार प्राप्त होता है।

यह कमजोरी appid.sys ड्राइवर के AppHashComputeImageHashInternal फ़ंक्शन में स्थित है। AipDeviceIoControlDispatch 0x22A018 अनुरोध को संसाधित करते समय PreviousMode की सही ढंग से जाँच नहीं करता है, जिससे यूज़र-मोड प्रक्रिया कर्नेल-मोड कॉलबैक फ़ंक्शन को ट्रिगर कर सकती है।
Local Service विशेषाधिकार प्राप्त करना: इस कमजोरी के लिए \\Device\\AppID डिवाइस तक पहुँचने हेतु Local Service विशेषाधिकार की आवश्यकता होती है, इसलिए उपकरण पहले Local Service प्रक्रिया को ढूंढकर उसका impersonation करता है।
IOCTL अनुरोध बनाना: उपकरण एक विशेष रूप से तैयार IOCTL अनुरोध बनाता है, जिसमें एक नियंत्रणीय फ़ंक्शन पॉइंटर और पैरामीटर होते हैं।
कमजोरी ट्रिगर करना: IOCTL अनुरोध भेजकर कमजोरी को ट्रिगर किया जाता है, कर्नेल में gadget फ़ंक्शन को कॉल किया जाता है, और वर्तमान थ्रेड के PreviousMode फ़ील्ड को यूज़र-मोड से कर्नेल-मोड में बदल दिया जाता है।
कर्नेल पढ़ने/लिखने का अधिकार प्राप्त करना: PreviousMode को बदलने के बाद, यूज़र-मोड प्रक्रिया NtReadVirtualMemory और NtWriteVirtualMemory का उपयोग करके किसी भी कर्नेल मेमोरी को पढ़ और लिख सकती है।
| फ़ाइल नाम | कार्य विवरण |
|---|---|
| main.cpp | मुख्य फ़ंक्शन, जो शोषण प्रक्रिया के प्रवाह को नियंत्रित करता है |
| CVE-2024-21338.h | शोषण से संबंधित संरचनाओं और फ़ंक्शन घोषणाओं को परिभाषित करता है |
| CVE-2024-21338.cpp | शोषण की पूर्व-शर्तें लागू करने वाले फ़ंक्शन |
| export_func.h | निर्यात फ़ंक्शन की घोषणाएँ |
| gadget_search.cpp | कर्नेल gadget खोज का कार्यान्वयन |
| Native.h | मूल Native API की परिभाषाएँ |
| PE.h | PE फ़ाइलों से संबंधित उपयोगिता फ़ंक्शन |
इस परियोजना को Visual Studio 2026 के साथ संकलित करने के लिए Windows SDK और C++ कंपाइलर समर्थन की आवश्यकता होती है।
बिना पैच वाले Windows सिस्टम (जैसे Windows 10 1709) पर Application Identity सेवा सक्षम करें।
संकलित निष्पादन योग्य फ़ाइल को व्यवस्थापक (admin) अधिकारों के साथ चलाएँ।
उपकरण स्वचालित रूप से Local Service प्रक्रिया ढूंढेगा और उसका impersonation करेगा।
उपकरण appid.sys ड्राइवर को लोड करेगा और कमजोरी ट्रिगर करने के लिए IOCTL अनुरोध बनाएगा।
कमजोरी सफलतापूर्वक ट्रिगर होने के बाद, उपकरण संशोधित करने के लिए कर्नेल पता और मान इनपुट करने का संकेत देगा, जिससे कर्नेल मेमोरी संशोधन किया जा सके।
यह परियोजना केवल शैक्षिक और अनुसंधान उद्देश्यों के लिए है, और इसका उपयोग अवैध उद्देश्यों के लिए नहीं किया जाना चाहिए।