تحليل ثغرة 0day من مايكروسوفت: قد تشكل تهديدًا كبيرًا للبنية التحتية لـ Web3
في تصحيح أمان مايكروسوفت الشهر الماضي، تم تضمين ثغرة تصعيد امتياز win32k التي تم استغلالها في البرية. يبدو أن هذه الثغرة موجودة فقط في أنظمة ويندوز القديمة، ولا يمكن استغلالها في ويندوز 11.
لقد استُغلت هذه الثغرات لفترة طويلة. ستقوم هذه المقالة بتحليل كيف يمكن للمهاجمين الاستمرار في استغلال هذه الثغرة في ظل التحسينات المستمرة في التدابير الجديدة للتخفيف. لقد أكملنا عملية التحليل بالكامل في بيئة Windows Server 2016.
ثغرات 0day تشير إلى الثغرات التي لم يتم الكشف عنها وإصلاحها، ويمكن استغلالها بصورة خبيثة دون أن يتم ملاحظتها، مما يجعلها ذات تدمير كبير. الثغرة 0day المكتشفة حديثًا تقع على مستوى نظام Windows، حيث يمكن للهاكرز من خلال هذه الثغرة الحصول على السيطرة الكاملة على Windows.
يمكن أن تؤدي الأنظمة التي يسيطر عليها الهاكرز إلى تسرب المعلومات الشخصية وفقدان البيانات بسبب تعطل النظام والخسائر المالية وزرع البرمجيات الخبيثة وغيرها من العواقب. بالنسبة لمستخدمي Web3، يمكن أن تُسرق المفاتيح الخاصة وتُحوّل الأصول الرقمية. من منظور أوسع، قد تؤثر هذه الثغرة حتى على نظام Web3 البيئي بأكمله الذي يعمل على بنية تحتية قائمة على Web2.
تحليل التصحيح
بعد تحليل التصحيح، يبدو أن المشكلة تتعلق ببساطة بإعادة معالجة عدد المراجع لكائن واحد. نظرًا لأن كود win32k قديم نسبيًا، يمكننا العثور على بعض التعليقات على الشيفرة المصدرية المبكرة التي توضح أن الكود السابق كان يقوم فقط بقفل كائن النافذة، دون قفل كائن القائمة داخل كائن النافذة، حيث قد يتم الإشارة إلى كائن القائمة بشكل خاطئ.
إثبات مفهوم استغلال الثغرات ( PoC )
لقد اكتشفنا أن القائمة التي تم تمريرها إلى xxxEnableMenuItem() تكون عادةً مقفلة في الدالة العليا. وأظهرت التحليلات الإضافية أن الدالة MenuItemState في xxxEnableMenuItem ترجع قائمتين محتملتين: القائمة الرئيسية لنافذة، أو قائمة فرعية ضمن القائمة( أو حتى قائمة فرعية أخرى).
في PoC، قمنا بإنشاء هيكل قائمة خاص مكون من أربع طبقات، وقمنا بتعيين خصائص محددة لكل مستوى من القائمة، من خلال الكشف والحكم في دالة xxxEnableMenuItem. تشمل الخطوات الرئيسية حذف بعض علاقات الإشارة إلى القوائم، وإطلاق كائن قائمة محدد عند عودة xxxRedrawTitle إلى طبقة المستخدم، وما إلى ذلك.
استغلال الثغرات ( Exp ) التنفيذ
الفكرة العامة
نحن نعتبر بشكل رئيسي اتجاهين للاستخدام: تنفيذ كود shellcode ، واستخدام العمليات الأساسية للقراءة والكتابة لتعديل عنوان الرمز المميز. بالنظر إلى مختلف العوامل، اخترنا الخيار الثاني.
تتكون الاستفادة الكاملة من exp من مشكلتين رئيسيتين: كيفية استغلال ثغرة UAF للتحكم في قيمة cbwndextra، وكيفية تحقيق عمليات القراءة والكتابة المستقرة بعد التحكم في قيمة cbwndextra.
تنفيذ أول كتابة بيانات
نستخدم كائن اسم نافذة من فئة WNDClass لاحتلال كائن القائمة المحررة. المفتاح هو العثور على موقع في هيكل العنوان الذي يمكننا بناؤه حيث يمكن كتابة البيانات بشكل عشوائي.
في النهاية اخترنا تنفيذ الكتابة من خلال علامة AND 2 في دالة xxxRedrawWindow. كتبنا cb-extra لـ HWNDClass بدلاً من cb-extra لكائن النافذة، من أجل تحسين التحكم في تخطيط الذاكرة.
 تخطيط الذاكرة المستقر
لقد صممنا تخطيط الذاكرة لعدد لا يقل عن ثلاثة كائنات HWND بحجم 0x250 بايت متتالية، مع تحرير الكائن الأوسط، واستخدام كائن HWNDClass بحجم 0x250 بايت. تُستخدم كائنات HWND الأمامية والخلفية للتحقق من المعلمات وكوسيط لعمليات القراءة والكتابة.
نقوم بتحديد بدقة ما إذا كانت كائنات النوافذ المطلوبة مرتبة كما هو متوقع من خلال عنوان مقبض النواة المسرب في الذاكرة.
![Numen الحصرية: ثغرة 0day من مايكروسوفت يمكنها قلب مشهد Web3 على المستوى النظامي والفيزيائي]###https://img-cdn.gateio.im/webp-social/moments-697c5814db02534f63b44c0d1d692f83.webp(
) تعديل قراءة وكتابة الأصل
نستخدم GetMenuBarInfo###( لتحقيق القراءة العشوائية، ونستخدم SetClassLongPtr)( لتحقيق الكتابة العشوائية. باستثناء عمليات الكتابة التي تستبدل TOKEN، تُستخدم جميع عمليات الكتابة الأخرى باستخدام كائن فئة النافذة الأولى مع استخدام الإزاحة.
![Numen حصرية: ثغرة 0day من مايكروسوفت يمكنها قلب لعبة Web3 على المستوى النظامي والفيزيائي])https://img-cdn.gateio.im/webp-social/moments-b0942592135ac96c6279544a62022329.webp(
ملخص
على الرغم من أن ثغرة win32k موجودة منذ فترة طويلة، إلا أن مايكروسوفت تحاول إعادة بناء الكود الأساسي ذي الصلة باستخدام Rust، ومن المحتمل أن تُمنع مثل هذه الثغرات في الأنظمة الجديدة في المستقبل.
عملية استغلال الثغرة هذه بسيطة نسبياً، والصعوبة الرئيسية تكمن في كيفية التحكم في عملية الكتابة الأولى. لا تزال الثغرة تعتمد بشكل كبير على تسرب عنوان مقبض كومة سطح المكتب، وهذا يمثل خطرًا أمنيًا للأنظمة القديمة.
قد يكون اكتشاف هذه الثغرة نتيجة لتحسين الكشف عن تغطية الشيفرة.
بالنسبة لاكتشاف استغلال الثغرات، بالإضافة إلى التركيز على النقاط الرئيسية لوظائف استغلال الثغرات، يجب أيضًا إجراء اختبارات مستهدفة على تخطيط الذاكرة غير الطبيعي وعمليات قراءة وكتابة بيانات النوافذ.
![Numen حصرية: ثغرة 0day من مايكروسوفت يمكن أن تزعزع نظام Web3 على المستوى النظامي والفيزيائي])https://img-cdn.gateio.im/webp-social/moments-b06b098af4f07260fdc03a75da160706.webp(
شاهد النسخة الأصلية
قد تحتوي هذه الصفحة على محتوى من جهات خارجية، يتم تقديمه لأغراض إعلامية فقط (وليس كإقرارات/ضمانات)، ولا ينبغي اعتباره موافقة على آرائه من قبل Gate، ولا بمثابة نصيحة مالية أو مهنية. انظر إلى إخلاء المسؤولية للحصول على التفاصيل.
تسجيلات الإعجاب 13
أعجبني
13
7
مشاركة
تعليق
0/400
CryptoPhoenix
· منذ 18 س
فرصة أخرى لإعادة بناء الإيمان! احرص على عمل نسخة احتياطية من المحفظة الباردة، ومن المهم الخروج في منطقة القاع للحفاظ على حياتك.
شاهد النسخة الأصليةرد0
SignatureVerifier
· منذ 22 س
*آه* بعد تحقق غير كافٍ تقنيًا مرة أخرى... متى سيتعلمون العد بشكل صحيح؟
شاهد النسخة الأصليةرد0
FlatTax
· منذ 22 س
قم بتحديث النظام أولاً ثم تحدث، احذر من فقدان الرقم.
شاهد النسخة الأصليةرد0
MysteriousZhang
· منذ 22 س
مرة أخرى على وين، أي سنة هذه وما زلت أعمل على عقدة على وين
شاهد النسخة الأصليةرد0
TooScaredToSell
· منذ 22 س
لا تعبث مع المحفظة القديمة للكمبيوتر، انتقل بسرعة.
شاهد النسخة الأصليةرد0
LootboxPhobia
· منذ 22 س
أخاف المفتاح الخاص المحفظة الباردة الشعور بالأمان++
شاهد النسخة الأصليةرد0
CryptoCross-TalkClub
· منذ 22 س
سوق الدببة يغني الكوميديا، السوق الصاعدة يتداول العملات الرقمية، حقاً جعلتني مايكروسوفت أخرج بسكين حمقى سريعة!
تهديد ثغرات 0day لنظام ويندوز قد يهدد أمان بنية Web3 التحتية
تحليل ثغرة 0day من مايكروسوفت: قد تشكل تهديدًا كبيرًا للبنية التحتية لـ Web3
في تصحيح أمان مايكروسوفت الشهر الماضي، تم تضمين ثغرة تصعيد امتياز win32k التي تم استغلالها في البرية. يبدو أن هذه الثغرة موجودة فقط في أنظمة ويندوز القديمة، ولا يمكن استغلالها في ويندوز 11.
لقد استُغلت هذه الثغرات لفترة طويلة. ستقوم هذه المقالة بتحليل كيف يمكن للمهاجمين الاستمرار في استغلال هذه الثغرة في ظل التحسينات المستمرة في التدابير الجديدة للتخفيف. لقد أكملنا عملية التحليل بالكامل في بيئة Windows Server 2016.
ثغرات 0day تشير إلى الثغرات التي لم يتم الكشف عنها وإصلاحها، ويمكن استغلالها بصورة خبيثة دون أن يتم ملاحظتها، مما يجعلها ذات تدمير كبير. الثغرة 0day المكتشفة حديثًا تقع على مستوى نظام Windows، حيث يمكن للهاكرز من خلال هذه الثغرة الحصول على السيطرة الكاملة على Windows.
يمكن أن تؤدي الأنظمة التي يسيطر عليها الهاكرز إلى تسرب المعلومات الشخصية وفقدان البيانات بسبب تعطل النظام والخسائر المالية وزرع البرمجيات الخبيثة وغيرها من العواقب. بالنسبة لمستخدمي Web3، يمكن أن تُسرق المفاتيح الخاصة وتُحوّل الأصول الرقمية. من منظور أوسع، قد تؤثر هذه الثغرة حتى على نظام Web3 البيئي بأكمله الذي يعمل على بنية تحتية قائمة على Web2.
تحليل التصحيح
بعد تحليل التصحيح، يبدو أن المشكلة تتعلق ببساطة بإعادة معالجة عدد المراجع لكائن واحد. نظرًا لأن كود win32k قديم نسبيًا، يمكننا العثور على بعض التعليقات على الشيفرة المصدرية المبكرة التي توضح أن الكود السابق كان يقوم فقط بقفل كائن النافذة، دون قفل كائن القائمة داخل كائن النافذة، حيث قد يتم الإشارة إلى كائن القائمة بشكل خاطئ.
إثبات مفهوم استغلال الثغرات ( PoC )
لقد اكتشفنا أن القائمة التي تم تمريرها إلى xxxEnableMenuItem() تكون عادةً مقفلة في الدالة العليا. وأظهرت التحليلات الإضافية أن الدالة MenuItemState في xxxEnableMenuItem ترجع قائمتين محتملتين: القائمة الرئيسية لنافذة، أو قائمة فرعية ضمن القائمة( أو حتى قائمة فرعية أخرى).
في PoC، قمنا بإنشاء هيكل قائمة خاص مكون من أربع طبقات، وقمنا بتعيين خصائص محددة لكل مستوى من القائمة، من خلال الكشف والحكم في دالة xxxEnableMenuItem. تشمل الخطوات الرئيسية حذف بعض علاقات الإشارة إلى القوائم، وإطلاق كائن قائمة محدد عند عودة xxxRedrawTitle إلى طبقة المستخدم، وما إلى ذلك.
استغلال الثغرات ( Exp ) التنفيذ
الفكرة العامة
نحن نعتبر بشكل رئيسي اتجاهين للاستخدام: تنفيذ كود shellcode ، واستخدام العمليات الأساسية للقراءة والكتابة لتعديل عنوان الرمز المميز. بالنظر إلى مختلف العوامل، اخترنا الخيار الثاني.
تتكون الاستفادة الكاملة من exp من مشكلتين رئيسيتين: كيفية استغلال ثغرة UAF للتحكم في قيمة cbwndextra، وكيفية تحقيق عمليات القراءة والكتابة المستقرة بعد التحكم في قيمة cbwndextra.
تنفيذ أول كتابة بيانات
نستخدم كائن اسم نافذة من فئة WNDClass لاحتلال كائن القائمة المحررة. المفتاح هو العثور على موقع في هيكل العنوان الذي يمكننا بناؤه حيث يمكن كتابة البيانات بشكل عشوائي.
في النهاية اخترنا تنفيذ الكتابة من خلال علامة AND 2 في دالة xxxRedrawWindow. كتبنا cb-extra لـ HWNDClass بدلاً من cb-extra لكائن النافذة، من أجل تحسين التحكم في تخطيط الذاكرة.
 تخطيط الذاكرة المستقر
لقد صممنا تخطيط الذاكرة لعدد لا يقل عن ثلاثة كائنات HWND بحجم 0x250 بايت متتالية، مع تحرير الكائن الأوسط، واستخدام كائن HWNDClass بحجم 0x250 بايت. تُستخدم كائنات HWND الأمامية والخلفية للتحقق من المعلمات وكوسيط لعمليات القراءة والكتابة.
نقوم بتحديد بدقة ما إذا كانت كائنات النوافذ المطلوبة مرتبة كما هو متوقع من خلال عنوان مقبض النواة المسرب في الذاكرة.
![Numen الحصرية: ثغرة 0day من مايكروسوفت يمكنها قلب مشهد Web3 على المستوى النظامي والفيزيائي]###https://img-cdn.gateio.im/webp-social/moments-697c5814db02534f63b44c0d1d692f83.webp(
) تعديل قراءة وكتابة الأصل
نستخدم GetMenuBarInfo###( لتحقيق القراءة العشوائية، ونستخدم SetClassLongPtr)( لتحقيق الكتابة العشوائية. باستثناء عمليات الكتابة التي تستبدل TOKEN، تُستخدم جميع عمليات الكتابة الأخرى باستخدام كائن فئة النافذة الأولى مع استخدام الإزاحة.
![Numen حصرية: ثغرة 0day من مايكروسوفت يمكنها قلب لعبة Web3 على المستوى النظامي والفيزيائي])https://img-cdn.gateio.im/webp-social/moments-b0942592135ac96c6279544a62022329.webp(
ملخص
على الرغم من أن ثغرة win32k موجودة منذ فترة طويلة، إلا أن مايكروسوفت تحاول إعادة بناء الكود الأساسي ذي الصلة باستخدام Rust، ومن المحتمل أن تُمنع مثل هذه الثغرات في الأنظمة الجديدة في المستقبل.
عملية استغلال الثغرة هذه بسيطة نسبياً، والصعوبة الرئيسية تكمن في كيفية التحكم في عملية الكتابة الأولى. لا تزال الثغرة تعتمد بشكل كبير على تسرب عنوان مقبض كومة سطح المكتب، وهذا يمثل خطرًا أمنيًا للأنظمة القديمة.
قد يكون اكتشاف هذه الثغرة نتيجة لتحسين الكشف عن تغطية الشيفرة.
بالنسبة لاكتشاف استغلال الثغرات، بالإضافة إلى التركيز على النقاط الرئيسية لوظائف استغلال الثغرات، يجب أيضًا إجراء اختبارات مستهدفة على تخطيط الذاكرة غير الطبيعي وعمليات قراءة وكتابة بيانات النوافذ.
![Numen حصرية: ثغرة 0day من مايكروسوفت يمكن أن تزعزع نظام Web3 على المستوى النظامي والفيزيائي])https://img-cdn.gateio.im/webp-social/moments-b06b098af4f07260fdc03a75da160706.webp(