
CVE-2022-24494
CVE-2022-24494
الثغرة هي قراءة عشوائية للذاكرة. السبب الجذري هو عدم التحقق من صحة عنوان ذاكرة يتم توفيره من مساحة المستخدم، ويُستخدم في عملية memcpy لنسخ البيانات من هذا العنوان إلى ذاكرة التجمّع (pool memory).
المشكلة تكمن في عدم الفحص عند العنوان Afd!AfdTliIoControl+0x40B

كما ترى في لقطة الشاشة أعلاه، يتم نسخ عنوان الذاكرة من مساحة المستخدم من InputBuffer+0x20 في المرة الأولى مع الفحص السليم باستخدام MmUserProbeAddress للتأكد من أن العنوان يقع ضمن نطاق ذاكرة مساحة المستخدم. لكن في المرة الثانية، يتم نسخ نفس العنوان من InputBuffer+0x20 إلى سجل RAX ولكن دون الفحص السليم باستخدام MmUSerProbeAddress. بسبب هذا النقص في التحقق، يصبح من الممكن توفير عنوان نواة عشوائي (arbitrary kernel address).
لاحقًا، يتم نسخ هذا العنوان إلى تخصيص ذاكرة تجمّع (العلامة: AfdL) باستخدام عملية memcpy كما ترى أدناه في AfdTliIoControl+0x5AB:

تُظهر الـ PoC بالأسفل عنوان النواة المقدَّم من مساحة المستخدم (0xffffffdeadbeef01)

يحاول المُشغِّل (driver) القراءة من هذا العنوان غير الصالح للذاكرة مما يؤدي إلى شاشة الموت الزرقاء (BSOD):

القيمة التي تم نسخها إلى المؤشر dst في عملية memcpy تُمرَّر لاحقًا إلى مشغِّل tcpip.sys. لم أبحث في الكائنات الداخلية المتأثرة، وما إذا كان من الممكن تسريب الذاكرة من مساحة المستخدم عن طريق استدعاء واجهات برمجة التطبيقات (APIs) التي قد تحصل على بيانات من هذه الكائنات الداخلية المحتملة.
بعد بضعة أشهر، أصدرت Microsoft بحثًا يتحدث عن التأثير المحتمل لتصعيد الامتيازات (EoP) لهذا النوع من الثغرات (قراءة الذاكرة العشوائية):
https://msrc-blog.microsoft.com/2022/03/22/exploring-a-new-class-of-kernel-exploit-primitive/