تحليل ثغرة 0day في نظام ويندوز من مايكروسوفت: قد تؤثر بشكل كبير على بيئة Web3
في الشهر الماضي، تضمنت تصحيحات الأمان من مايكروسوفت ثغرة تصعيد الامتياز في win32k تم استغلالها. يبدو أن هذه الثغرة لا يمكن تفعيلها على إصدار نظام Windows 11، بل توجد فقط في الأنظمة السابقة. ستقوم هذه المقالة بتحليل كيف يمكن للمهاجمين الاستمرار في استغلال هذه الثغرة في سياق تحسين تدابير التخفيف الجديدة الحالية. تم إجراء عملية التحليل في بيئة Windows Server 2016.
ثغرة 0day تشير إلى الثغرات التي لم يتم الكشف عنها أو إصلاحها، والتي يمكن أن يستغلها المهاجمون بشكل خبيث دون أن يتم الكشف عنها، وغالبًا ما تكون لها تأثيرات مدمرة كبيرة. الثغرة 0day التي تم اكتشافها مؤخرًا موجودة على مستوى نظام Windows، حيث يمكن للقراصنة من خلال هذه الثغرة الحصول على السيطرة الكاملة على Windows. هذا قد يؤدي إلى سرقة المعلومات الشخصية، انهيار النظام وفقدان البيانات، خسائر مالية، وزرع البرمجيات الخبيثة. من منظور Web3، قد يتم سرقة المفاتيح الخاصة للمستخدم، مما يؤدي إلى تحويل الأصول الرقمية. على نطاق أوسع، قد تؤثر هذه الثغرة حتى على النظام البيئي Web3 بأكمله الذي يعمل على بنية تحتية Web2.
تحليل التحديث كشف أن المشكلة تكمن في أن عدد المراجع لكائن ما تم معالجته بشكل زائد مرة واحدة. من خلال التعليقات في الشيفرة المصدرية السابقة، يمكن أن نرى أن الشيفرة القديمة كانت تقفل فقط كائن النافذة، دون قفل كائن القائمة داخل كائن النافذة، حيث قد يتم الإشارة إلى كائن القائمة بشكل خاطئ.
للتحقق من الثغرة، قمنا بتنفيذ إثبات مفهوم ( PoC ). من خلال بناء قوائم متداخلة متعددة الطبقات خاصة، يمكن تحفيز الثغرة في وظيفة xxxEnableMenuItem. المفتاح هو حذف علاقة المرجع بين القائمة C والقائمة B في الوقت المناسب، مما يؤدي إلى تحرير كائن القائمة C بنجاح. بهذه الطريقة، عند عودة وظيفة xxxEnableMenuItem، يصبح كائن القائمة C الذي سيتم الإشارة إليه غير صالح.
عند تنفيذ استغلال الثغرة (Exp)، أخذنا في الاعتبار بشكل رئيسي خيارين: تنفيذ كود shellcode واستخدام عمليات القراءة والكتابة لتعديل عنوان token. في النهاية، اخترنا الخيار الثاني، لأن هذه الطريقة لا تزال تحتوي على استغلالات عامة يمكن الإشارة إليها في العامين الماضيين. تتكون عملية الاستغلال بالكامل من خطوتين: أولاً، استغلال ثغرة UAF للتحكم في قيمة cbwndextra، ثم إنشاء عمليات قراءة وكتابة مستقرة.
من خلال تصميم تخطيط الذاكرة بعناية، يمكننا تحقيق السيطرة الدقيقة على الكائن المستهدف. باستخدام دالة GetMenuBarInfo() وSetClassLongPtr()، يمكن تنفيذ عمليات القراءة والكتابة العشوائية على التوالي. باستثناء عمليات الكتابة المتعلقة بكتابة TOKEN التي تعتمد على كائن فئة النافذة الثانية، يتم استخدام كائن فئة النافذة الأولى للقيام بعمليات الكتابة باستخدام الإزاحة.
https://img-cdn.gateio.im/webp-social/moments-697c5814db02534f63b44c0d1d692f83.webp(
بشكل عام، على الرغم من أن ثغرة win32k موجودة منذ فترة طويلة، إلا أن مايكروسوفت تحاول إعادة بناء هذا الجزء من كود النواة باستخدام Rust، وقد يتم القضاء على مثل هذه الثغرات في الأنظمة الجديدة في المستقبل. في الوقت الحالي، إن استغلال هذه الثغرات ليس بالأمر الصعب، ويعتمد بشكل أساسي على تسرب عنوان مقبض كومة سطح المكتب. بالنسبة للأنظمة القديمة، لا تزال هذه مشكلة أمان.
![Numen حصرية: ثغرة 0day من مايكروسوفت يمكن أن تكشف عن نظام + الطبقة الفيزيائية في Web3])https://img-cdn.gateio.im/webp-social/moments-b0942592135ac96c6279544a62022329.webp(
من منظور اكتشاف الثغرات، قد يساعد الكشف الأكثر اكتمالاً عن تغطية الشيفرة في اكتشاف مثل هذه الثغرات. بالنسبة لاكتشاف استغلال الثغرات، بالإضافة إلى التركيز على النقاط الرئيسية في دوال تفعيل الثغرات، يجب أيضًا إجراء كشف مستهدف على الشذوذ في تخطيط الذاكرة والقراءة والكتابة على الانحرافات غير العادية للبيانات الإضافية من نوع النوافذ، فقد تكون هذه واحدة من الطرق الفعالة لاكتشاف ثغرات من نفس النوع.
![Numen حصرية: ثغرة 0day من مايكروسوفت يمكنها أن تكشف عن نظام + مستوى مادي للعبة Web3])https://img-cdn.gateio.im/webp-social/moments-b06b098af4f07260fdc03a75da160706.webp(
شاهد النسخة الأصلية
This page may contain third-party content, which is provided for information purposes only (not representations/warranties) and should not be considered as an endorsement of its views by Gate, nor as financial or professional advice. See Disclaimer for details.
تهديد ثغرات Windows 0day لأمان Web3 ارتفاع مخاطر سرقة المفتاح الخاص
تحليل ثغرة 0day في نظام ويندوز من مايكروسوفت: قد تؤثر بشكل كبير على بيئة Web3
في الشهر الماضي، تضمنت تصحيحات الأمان من مايكروسوفت ثغرة تصعيد الامتياز في win32k تم استغلالها. يبدو أن هذه الثغرة لا يمكن تفعيلها على إصدار نظام Windows 11، بل توجد فقط في الأنظمة السابقة. ستقوم هذه المقالة بتحليل كيف يمكن للمهاجمين الاستمرار في استغلال هذه الثغرة في سياق تحسين تدابير التخفيف الجديدة الحالية. تم إجراء عملية التحليل في بيئة Windows Server 2016.
ثغرة 0day تشير إلى الثغرات التي لم يتم الكشف عنها أو إصلاحها، والتي يمكن أن يستغلها المهاجمون بشكل خبيث دون أن يتم الكشف عنها، وغالبًا ما تكون لها تأثيرات مدمرة كبيرة. الثغرة 0day التي تم اكتشافها مؤخرًا موجودة على مستوى نظام Windows، حيث يمكن للقراصنة من خلال هذه الثغرة الحصول على السيطرة الكاملة على Windows. هذا قد يؤدي إلى سرقة المعلومات الشخصية، انهيار النظام وفقدان البيانات، خسائر مالية، وزرع البرمجيات الخبيثة. من منظور Web3، قد يتم سرقة المفاتيح الخاصة للمستخدم، مما يؤدي إلى تحويل الأصول الرقمية. على نطاق أوسع، قد تؤثر هذه الثغرة حتى على النظام البيئي Web3 بأكمله الذي يعمل على بنية تحتية Web2.
تحليل التحديث كشف أن المشكلة تكمن في أن عدد المراجع لكائن ما تم معالجته بشكل زائد مرة واحدة. من خلال التعليقات في الشيفرة المصدرية السابقة، يمكن أن نرى أن الشيفرة القديمة كانت تقفل فقط كائن النافذة، دون قفل كائن القائمة داخل كائن النافذة، حيث قد يتم الإشارة إلى كائن القائمة بشكل خاطئ.
للتحقق من الثغرة، قمنا بتنفيذ إثبات مفهوم ( PoC ). من خلال بناء قوائم متداخلة متعددة الطبقات خاصة، يمكن تحفيز الثغرة في وظيفة xxxEnableMenuItem. المفتاح هو حذف علاقة المرجع بين القائمة C والقائمة B في الوقت المناسب، مما يؤدي إلى تحرير كائن القائمة C بنجاح. بهذه الطريقة، عند عودة وظيفة xxxEnableMenuItem، يصبح كائن القائمة C الذي سيتم الإشارة إليه غير صالح.
عند تنفيذ استغلال الثغرة (Exp)، أخذنا في الاعتبار بشكل رئيسي خيارين: تنفيذ كود shellcode واستخدام عمليات القراءة والكتابة لتعديل عنوان token. في النهاية، اخترنا الخيار الثاني، لأن هذه الطريقة لا تزال تحتوي على استغلالات عامة يمكن الإشارة إليها في العامين الماضيين. تتكون عملية الاستغلال بالكامل من خطوتين: أولاً، استغلال ثغرة UAF للتحكم في قيمة cbwndextra، ثم إنشاء عمليات قراءة وكتابة مستقرة.
من خلال تصميم تخطيط الذاكرة بعناية، يمكننا تحقيق السيطرة الدقيقة على الكائن المستهدف. باستخدام دالة GetMenuBarInfo() وSetClassLongPtr()، يمكن تنفيذ عمليات القراءة والكتابة العشوائية على التوالي. باستثناء عمليات الكتابة المتعلقة بكتابة TOKEN التي تعتمد على كائن فئة النافذة الثانية، يتم استخدام كائن فئة النافذة الأولى للقيام بعمليات الكتابة باستخدام الإزاحة.
https://img-cdn.gateio.im/webp-social/moments-697c5814db02534f63b44c0d1d692f83.webp(
بشكل عام، على الرغم من أن ثغرة win32k موجودة منذ فترة طويلة، إلا أن مايكروسوفت تحاول إعادة بناء هذا الجزء من كود النواة باستخدام Rust، وقد يتم القضاء على مثل هذه الثغرات في الأنظمة الجديدة في المستقبل. في الوقت الحالي، إن استغلال هذه الثغرات ليس بالأمر الصعب، ويعتمد بشكل أساسي على تسرب عنوان مقبض كومة سطح المكتب. بالنسبة للأنظمة القديمة، لا تزال هذه مشكلة أمان.
![Numen حصرية: ثغرة 0day من مايكروسوفت يمكن أن تكشف عن نظام + الطبقة الفيزيائية في Web3])https://img-cdn.gateio.im/webp-social/moments-b0942592135ac96c6279544a62022329.webp(
من منظور اكتشاف الثغرات، قد يساعد الكشف الأكثر اكتمالاً عن تغطية الشيفرة في اكتشاف مثل هذه الثغرات. بالنسبة لاكتشاف استغلال الثغرات، بالإضافة إلى التركيز على النقاط الرئيسية في دوال تفعيل الثغرات، يجب أيضًا إجراء كشف مستهدف على الشذوذ في تخطيط الذاكرة والقراءة والكتابة على الانحرافات غير العادية للبيانات الإضافية من نوع النوافذ، فقد تكون هذه واحدة من الطرق الفعالة لاكتشاف ثغرات من نفس النوع.
![Numen حصرية: ثغرة 0day من مايكروسوفت يمكنها أن تكشف عن نظام + مستوى مادي للعبة Web3])https://img-cdn.gateio.im/webp-social/moments-b06b098af4f07260fdc03a75da160706.webp(