تحليل ثغرات خطيرة في نواة ويندوز: مخاطر تصعيد الامتيازات أو تهديد أمان الأصول

robot
إنشاء الملخص قيد التقدم

تحليل الثغرات الخطيرة في نظام مايكروسوفت ويندوز

مؤخراً، أصدرت مايكروسوفت تصحيح أمني يعالج ثغرة تصعيد الامتيازات في نواة Windows التي كانت تستغل من قبل القراصنة. تؤثر هذه الثغرة بشكل أساسي على إصدارات Windows القديمة، ولا يمكن تفعيلها على Windows 11. هذه الأنواع من الثغرات موجودة منذ فترة طويلة، وسيتناول هذا المقال كيف يستمر المهاجمون في استغلال مثل هذه الثغرات في ظل تعزيز الأمن الحالي.

تم إكمال هذا التحليل استنادًا إلى بيئة Windows Server 2016.

خلفية الثغرات

هذه ثغرة يوم الصفر، تشير إلى ثغرة نظام لم يتم الكشف عنها ولم يتم إصلاحها بعد. يمكن للقراصنة استغلال ثغرة يوم الصفر لشن هجمات دون أن يدرك المستخدم، مما يجعلها مدمرة للغاية.

تم اكتشاف ثغرة يوم الصفر هذه في مستوى نواة نظام Windows، حيث يمكن للهاكرز من خلال هذه الثغرة الحصول على السيطرة الكاملة على Windows. قد يؤدي ذلك إلى تسرب خصوصية المستخدم، وتعطل النظام، وفقدان البيانات، والخسائر المالية وغيرها من العواقب الخطيرة. من منظور Web3، قد يتم سرقة مفاتيح المستخدم الخاصة، مما يعرض الأصول الرقمية لخطر النقل. بشكل أوسع، قد تؤثر هذه الثغرة حتى على النظام البيئي Web3 بأكمله الذي يعمل على بنية تحتية Web2.

Numen الحصرية: ثغرة 0day من مايكروسوفت يمكن أن تكشف عن نظام+الطبقة الفيزيائية في لعبة Web3

تحليل الثغرات

عند تحليل كود التصحيح، اكتشفنا أن المشكلة تكمن في أن عدد مرات الإشارة إلى كائن ما قد تم معالجته عدة مرات. من خلال مراجعة التعليقات في شفرة win32k السابقة، يمكننا أن نفهم أن الكود القديم كان يقوم فقط بقفل كائن النافذة، دون قفل كائن القائمة الموجود داخل كائن النافذة، مما قد يؤدي إلى الإشارة الخاطئة إلى كائن القائمة.

بعد مزيد من التحليل، تبين أن القائمة المُدخلة إلى دالة xxxEnableMenuItem() عادةً ما تكون مُقفلة في دوال المستوى الأعلى، فما هو الكائن الذي يجب حمايته هنا؟ بعد الدراسة، هناك احتمالان للقائمة التي تُرجعها دالة MenuItemState في xxxEnableMenuItem: القائمة الرئيسية للنافذة، أو القائمة الفرعية( أو حتى القائمة الفرعية الفرعية).

Numen حصري: ثغرة 0day من مايكروسوفت يمكنها أن تكشف عن نظام + المستوى الفيزيائي في لعبة Web3

استغلال الثغرات

للتحقق من الثغرة، قمنا بإنشاء هيكل قائمة خاص مكون من أربع طبقات، وقمنا بتعيين بعض الشروط المحددة:

  1. يجب أن تكون ID القائمة الأساسية D من نوع قائمة النظام، مثل إغلاق القائمة (0xf060)
  2. يجب أن تكون القائمة العلوية A أيضًا قائمة نظام، لكن يجب حذف عنصر القائمة 0xf060 منها.
  3. حذف الإشارة إلى القائمة C في القائمة B
  4. يبدو أن وجود القائمة B يؤثر على إطلاق القائمة C

عند حدوث ثغرة، يتم حذف ارتباط القائمة C و B عند عودة xxxRedrawTitle إلى طبقة المستخدم، مما يحرر القائمة C بنجاح. وعندما تعود دالة xxxEnableMenuItem إلى xxxRedrawTitle في النواة، يكون كائن القائمة C الذي سيتم الإشارة إليه قد أصبح غير صالح.

Numen الحصرية: ثغرة 0day من مايكروسوفت يمكن أن تكشف عن Web3 على مستوى النظام+المستوى الفيزيائي

تحليل استغلال الثغرات

عند تصميم خطة استغلال الثغرات، نحن نفكر بشكل رئيسي في اتجاهين:

  1. تنفيذ الشيل كود: راجع الطرق المستخدمة في CVE-2017-0263 وCVE-2016-0167. ولكن في إصدارات Windows الأعلى، قد توجد عقبات في نقطة دخول تنفيذ الشيل كود والآليات الأمنية مثل SMEP.

  2. استخدام عمليات القراءة والكتابة لتعديل عنوان التوكن: تتمتع هذه الطريقة بعمومية جيدة. المفتاح هو تحليل كيفية التحكم لأول مرة في cbwndextra كقيمة كبيرة أثناء إعادة استخدام ذاكرة UAF.

نحن نقسم استغلال الثغرات إلى خطوتين: التحكم في قيمة cbwndextra، وتنفيذ بدائل القراءة والكتابة المستقرة.

Numen حصري: ثغرة 0day من مايكروسوفت يمكن أن تكشف عن نظام + طبقة مادية في لعبة Web3

الكتابة الأولية للبيانات

أخطاء النظام الناتجة عن استخدام بيانات كائن نافذة الذاكرة المتحكم بها تحدث بشكل رئيسي في وظيفة xxxEnableMenuItem من MNGetPopupFromMenu() و xxxMNUpdateShownMenu(). نحن نستغل ذاكرة كائن اسم نافذة فئة WNDClass التي تم تحريرها من كائنات القائمة.

المفتاح هو العثور على هيكل عنوان يمكن الكتابة إليه بشكل عشوائي، حتى لو كان ببايت واحد فقط. في النهاية اخترنا الحل في دالة xxxRedrawWindow، من خلال كتابة عملية AND 2 في cb-extra لـ HWNDClass.

Numen حصرية: ثغرة 0day من مايكروسوفت يمكن أن تقلب نظام Web3 على المستوى النظامي والفيزيائي

تخطيط الذاكرة

قمنا بتصميم تخطيط الذاكرة لكائنات HWND بحجم 0x250 بايت متتالية، حيث تم تحرير الكائنات الوسيطة واستبدالها بكائن HWNDClass بحجم 0x250 بايت. تُستخدم بيانات نهاية الكائن HWND السابق للتحقق من خلال xxxRedrawWindow، بينما تُستخدم قائمة الكائن HWND والكائن HWNDClass التالي للعمليات النهائية للقراءة والكتابة.

نحن نحاول جعل حجم كائن نافذة وكائن HWNDClass متطابقين، ومن خلال تسريب عنوان مقبض النواة نحكم بدقة ما إذا كان ترتيب الكائنات يتوافق مع التوقعات.

Numen حصري: ثغرة 0day من مايكروسوفت يمكن أن تزعزع نظام Web3 على المستوى النظامي والفيزيائي

قراءة وكتابة البدائية

استخدم GetMenuBarInfo() للقراءة العشوائية من الأصل، واستخدم SetClassLongPtr() للكتابة العشوائية إلى الأصل. باستثناء كتابة TOKEN، يتم استخدام كائن الفئة من كائن النافذة الأول لكتابة الإزاحة.

Numen حصرية: ثغرة 0day من مايكروسوفت يمكنها خلع نظام Web3 على المستوى النظامي والفيزيائي

ملخص

  1. مايكروسوفت تعيد بناء كود النواة المتعلق بـ win32k باستخدام Rust، في المستقبل قد يتم القضاء على مثل هذه الثغرات في النظام الجديد.

  2. عملية استغلال هذه الثغرة بسيطة نسبيًا، وتعتمد بشكل رئيسي على تسرب عنوان مقبض كومة سطح المكتب. إذا لم يتم حل هذه المشكلة بشكل كامل، فإن الأنظمة القديمة لا تزال تعاني من مخاطر أمنية.

  3. قد يكون اكتشاف هذه الثغرة نتيجة لتحسين الكشف عن تغطية الشيفرة.

  4. بالنسبة لاكتشاف استغلال الثغرات، بالإضافة إلى التركيز على النقاط الرئيسية لوظائف استغلال الثغرات، يجب أيضًا الانتباه إلى الكشف عن قراءات وكتابات الانحرافات غير الطبيعية للبيانات الإضافية في تخطيط الذاكرة وفئات النوافذ.

Numen حصرية: ثغرة 0day من مايكروسوفت يمكنها قلب لعبة Web3 على المستوى النظامي والفيزيائي

TOKEN-8.11%
شاهد النسخة الأصلية
قد تحتوي هذه الصفحة على محتوى من جهات خارجية، يتم تقديمه لأغراض إعلامية فقط (وليس كإقرارات/ضمانات)، ولا ينبغي اعتباره موافقة على آرائه من قبل Gate، ولا بمثابة نصيحة مالية أو مهنية. انظر إلى إخلاء المسؤولية للحصول على التفاصيل.
  • أعجبني
  • 8
  • إعادة النشر
  • مشاركة
تعليق
0/400
UncleWhalevip
· منذ 21 س
هه، لماذا لا تجرب هذه الثغرة على وين 11؟
شاهد النسخة الأصليةرد0
MultiSigFailMastervip
· 08-17 01:02
لقد فاز وين 11 بشكل سهل
شاهد النسخة الأصليةرد0
RunWithRugsvip
· 08-17 00:58
لحسن الحظ، كل شيء مثبت في غرفة الخادم على نظام لينكس~
شاهد النسخة الأصليةرد0
MevShadowrangervip
· 08-17 00:52
لقد قضيت ثلاث سنوات في دراسة شفرة مصدر بروتوكول WalletConnect، وأنا متحمس لتطوير بوتات MEV، وأركز على تعدين النقاط الساخنة في التمويل اللامركزي

يرجى استخدام اللغة الصينية، بناءً على هذا التعريف بالهوية للحساب، إنشاء تعليق:

هل لا زلتم تستخدمون ويندوز؟ لقد قمت بتغيير العقدة إلى لينوكس منذ فترة.
شاهد النسخة الأصليةرد0
BearEatsAllvip
· 08-17 00:49
لقد كان يجب تغيير إلى ويندوز 11 منذ زمن طويل 233
شاهد النسخة الأصليةرد0
ArbitrageBotvip
· 08-17 00:47
أنظمة قديمة تعرضت للأذى
شاهد النسخة الأصليةرد0
  • تثبيت