
📟 كود صغير يقوم بإجراء القراءة والكتابة في وضع النواة باستخدام CVE-2023-38817.

هذا الكود يوفّر ببساطة القدرة على قراءة / كتابة الذاكرة في وضع النواة (kernel-mode) من وضع المستخدم (user-mode) باستخدام برنامج تشغيل موقّع لكنه هشّ. إنه ببساطة يستخدم MmCopyVirtualMemory، وهو غير موثّق لكنه أحد أشهر واجهات برمجة التطبيقات، في وضع النواة بحيث يمكنك قراءة / كتابة أي ذاكرة في وضع المستخدم دون القلق بشأن الحماية التي تمتلكها صفحة الذاكرة. بالإضافة إلى ذلك، يحتوي على دالة للحصول على مقبض العملية (process handle) لمعرّف عملية معيّن كأداة جانبية. وبما أن إنشاء المقبض يتم في وضع النواة، أعتقد أن فحوصات الوصول القياسية والاستدعاءات الراجعة (callbacks) لن تعمل.
أُنشئ هذا المشروع لأغراض دراسية، ولا يُنصح باستخدامه خارج جهاز افتراضي.
رأيتُ أن برنامج التشغيل المحدد هذا يحتوي على ثغرة تصعيد صلاحيات في منتدى uc. لذلك بدأت في عكس هندسة برنامج التشغيل بنفسي، وبالفعل لا يملك برنامج التشغيل أي تحكم في الوصول إلى أوامر ioctls القوية الخاصة به.
يستخدم هذا المشروع الثغرة المُبلَّغ عنها باسم CVE-2023-38817. https://www.loldrivers.io/drivers/afb8bb46-1d13-407d-9866-1daa7c82ca63/
بما أنني كنت كسولًا جدًا لتنفيذ الأمر بشكل صحيح، عليك فقط تضمين كل شيء وتجميعه. جميع الوظائف مغلّفة داخل الكلاس kur_t.
https://github.com/pseuxide/kur/blob/cd3da42b8a146af3ca83d5f95970b030bd55585f/kur/kur.h#L5-L14