
CVE-2025-13032 الجزء 2: فريق SAFA يوضح رفعاً كاملاً للصلاحيات في Windows 11 عبر برنامج تشغيل Avast
وصف فريق SAFA كيف حوّل ثغرة CVE-2025-13032، وهي قراءة مزدوجة في برنامج تشغيل kernel الخاص بـ Avast، إلى رفع كامل للصلاحيات المحلية حتى مستوى SYSTEM على نظام Windows 11 محدَّث. وقد رُقّعت الثغرة لاحقاً.
نشر فريق SAFA الجزء الثاني والأخير من بحثه حول CVE-2025-13032، وهي ثغرة قراءة مزدوجة اكتشفها في برنامج تشغيل kernel الخاص بـ Avast. ويشرح المقال الصادر في 18 سبتمبر 2026 سلسلة استغلال كاملة تنتهي بالحصول على صلاحيات SYSTEM على نظام Windows 11 محدَّث بالكامل.
من القراءة المزدوجة إلى تجاوز سعة الـ pool
يستقبل برنامج التشغيل بنية _UNICODE_STRING المقدَّمة من المستخدم لكنه يقرأ حقل Length مرتين: الأولى لتحديد حجم المخزن عبر ExAllocatePoolWithTag، والثانية لتشغيل عملية memmove التي تنسخ النص إليه. بين القراءتين يمكن لخيط ثانٍ أن يرفع قيمة Length إلى قيمة كبيرة مثل 0x1000، بينما يواصل الخيط الرئيسي استدعاء IOCTL المصاب في حلقة. وعندما يتوافق التوقيت ينسخ kernel بايتات أكثر مما خصص فتنتقل الزيادة إلى الكتلة المجاورة في paged pool. ويقول فريق SAFA إن نافذة السباق ضيقة لكن يمكن كسبها بثقة.
الهدف: مصفوفة RegBuffers في كائن IORing
كان الهدف كائن I/O Ring الذي يجمّع عمليات الملفات غير المتزامنة عبر IoRingReadFile وIoRingWriteFile. وتقع مصفوفة المؤشرات RegBuffers الخاصة به في الـ paged pool نفسه الذي تصل إليه الزيادة، وحجمها خاضع لتحكم المستخدم، كما أن إفساد مؤشر واحد يكفي للحصول على قدرة قراءة وكتابة كاملة. وقد خصص الباحثون عدداً كبيراً من هذه المصفوفات، ثم حرّروا جزءاً منها وأطلقوا الثغرة لتسقط الكتلة المفسدة بجوار مصفوفة حيّة.

أُعيد توجيه RegBuffers[0] إلى بنية مزيفة _IOP_MC_BUFFER_ENTRY في ذاكرة المهاجم، فيصل kernel إلى عنوان يتحكم به الأخير. وهذا ممكن لأن Windows لا تطبّق SMAP. وهكذا تحوّل IoRingReadFile إلى كتابة عشوائية في kernel، وIoRingWriteFile إلى قراءة عشوائية.
تسريب عنوان kernel عبر MDL
عناوين kernel عشوائية، لذا كان الاستغلال بحاجة إلى عنوان معروف واحد: بنية _EPROCESS الخاصة بالعملية نفسها. يُحوَّل المخزن المسجَّل عبر Memory Descriptor List، ويخزّن kernel مؤشره في سجل المخزن. ولأن السجل أصبح الآن في userland، قرأ الباحثون حقل Mdl، ووجّهوا Address إلى MDL، وقرأوا حقل Process الذي يحمل مؤشراً إلى _EPROCESS المالك.
الإصلاحات ثم صلاحيات SYSTEM
أضرّت الزيادة أيضاً بحقل ProcessBilled في ترويسة كتلة الـ pool، وهو مؤشر مُموَّه يُحسب بالصيغة EPROCESS ^ ChunkAddress ^ ExpPoolQuotaCookie، ويؤدي تركه دون تصحيح إلى شاشة زرقاء عند تحرير الكتلة. واستخرج فريق SAFA قيمة cookie من كائن IORing ثانٍ سليم ثم أعاد كتابة القيمة الصحيحة. وتتمثل الخطوة الأخيرة في سرقة token عملية SYSTEM: إذ يتنقل الاستغلال في قائمة EPROCESS، ويقرأ token الخاص بـ SYSTEM، ثم يكتبه فوق своего الحقل. وقد رُقّعت الثغرة، وإن نوى Windows الأحدث تستخدم user-mode accessors كان سيمنع هذه التقنية.
SiTech — تطوير ويب مدعوم بالذكاء الاصطناعي
نبني مواقع سريعة وعصرية وندمج الذكاء الاصطناعي في سير عمل الشركات. لديك مشروع أو سؤال؟ يسعدنا مساعدتك.