تحليل عميق لمخاطر الأمان لقيمة سنتينيل لمحرك كروم V8

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

دراسة متعمقة حول التأثيرات الأمنية لقيمة Sentinel في محرك Chrome V8

قيمة Sentinel هي قيمة خاصة في الخوارزميات، تُستخدم عادة كشرط لإنهاء الحلقات أو الخوارزميات التكرارية. يوجد العديد من قيم Sentinel في كود مصدر Chrome. وقد أظهرت الأبحاث السابقة أنه يمكن تحقيق تنفيذ أي كود داخل صندوق الرمل الخاص بـ Chrome من خلال تسريب كائن TheHole. قامت فريق Google بعد ذلك بإصلاح الثغرات ذات الصلة.

ومع ذلك، لا تزال هناك كائنات أصلية أخرى في V8 لا ينبغي تسريبها إلى JavaScript. ستتناول هذه المقالة كائن Oddball غير مُهيأ، الذي ظهرت طريقة الالتفاف هذه لأول مرة في Issue1352549. من الجدير بالذكر أن هذه الطريقة لا تزال قابلة للاستخدام في أحدث إصدار من V8 ولم يتم إصلاحها بعد.

هذه الطريقة تتمتع بقدر معين من العمومية:

  1. تم إعطاء poc للكرة الغريبة الداخلية غير المهيأة المسربة لأول مرة في العدد1216437(CVE-2021-30551).

  2. تم تسريب UninitializedOddball أيضا مباشرة في Issue1314616(CVE-2022-1486).

  3. Issue1352549(NoCVE) التأثير يستحق الاهتمام.

تشير هذه الحالات إلى أننا بحاجة إلى إعادة النظر في البرامج التي قد تتأثر بـ PatchGap. لا يزال Skype غير قادر على إصلاح هذه الثغرة.

تُعرَّف معظم الكائنات الأصلية في V8 في ملف v8/src/roots/roots.h، وهي مرتبة بشكل متجاور في الذاكرة. بمجرد تسريب هذه الكائنات الأصلية التي لا ينبغي أن تُسرب إلى JavaScript، قد يصبح من الممكن تنفيذ أي كود داخل الصندوق الرملي.

للتحقق من هذه الطريقة، يمكننا تعديل الدالة الأصلية V8، لتسريب Uninitialized Oddball إلى JavaScript. يمكننا تعديل الإزاحة بالنسبة لـ isolate في دالة %TheHole() لجعلها ترجع Uninitialized Oddball.

كشف حصري حول تجاوز حماية Chrome v8 عبر تسريب قيمة Sentinel

يمكن استخدام هذه الطريقة لتجاوز حماية HardenType، مما يتيح القراءة والكتابة بشكل شبه عشوائي. من خلال تحليل كود JavaScript المحسن، يمكن ملاحظة أنه عند التحقق من obj.prop، لم يتم التحقق من القيمة التي تستخدم obj.prop كمفتاح، بل تم حساب الإزاحة مباشرة وفقًا لمعاني JavaScript واسترداد قيمة المصفوفة، مما أدى إلى ارتباك في النوع.

كشف حصري حول تجاوز حماية Chrome v8 من خلال تسريب قيمة Sentinel

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

! الكشف الحصري عن تجاوز Chrome v8 HardenProtect عن طريق تسريب قيمة Sentinel

يوصى عند إرجاع عناصر المصفوفة من الدالة المحسّنة، بزيادة فحص المصفوفة map، لتجنب حساب الإزاحة مباشرة لإرجاع القيم.

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

كشف حصري عن كيفية تجاوز حماية Chrome v8 باستخدام تسرب قيمة Sentinel

تتعلق PatchGap هذه المرة ليس فقط بـ Issue1352549، بل إن الكشف عن طريقة الالتفاف الجديدة قد خفض بشكل كبير من صعوبة استغلال ثغرات مثل Issue1314616 وIssue1216437. لم يعد لدى القراصنة حاجة للدراسة الإضافية ليتمكنوا بالكامل من استغلال أي ثغرة سابقة تتعلق بـ uninitialized_oddball.

! [الكشف الحصري عن تجاوز Chrome v8 HardenProtect عن طريق تسريب قيمة Sentinel](https://img-cdn.gateio.im/webp-social/moments-ed89289bebf59d4b27f5bffb5511a8c5.webp019283746574839201

توجد أيضًا قيم Sentinel أخرى متعددة في V8، والتي قد تحتوي على مخاطر أمان مشابهة. يُنصح في اختبار fuzz بالنظر في إضافة قيم Sentinel مثل %TheHole/uninitialized_Oddball كمتغيرات، لاكتشاف استخدامات أصلية محتملة أخرى.

! [الكشف الحصري عن تجاوز Chrome v8 HardenProtect عن طريق تسريب قيمة Sentinel])https://img-cdn.gateio.im/webp-social/moments-0e52075003a8ee2ca492a5fc9f35c36b.webp019283746574839201

سواء كانت هذه الأنواع من المشكلات تُعتبر رسمياً مشكلات أمنية أم لا، فإنها ستقلل بشكل كبير من الفترة الزمنية التي يحتاجها القراصنة للاستفادة الكاملة. نحتاج إلى الاستمرار في التركيز والبحث في هذا المجال لتحسين أمان البرامج مثل Chrome.

! الكشف الحصري عن تجاوز Chrome v8 HardenProtect عن طريق تسريب قيمة Sentinel

! الكشف الحصري عن تجاوز Chrome v8 HardenProtect عن طريق تسريب قيمة Sentinel

! الكشف الحصري عن تجاوز Chrome v8 HardenProtect عن طريق تسريب قيمة Sentinel

SENC2.69%
شاهد النسخة الأصلية
قد تحتوي هذه الصفحة على محتوى من جهات خارجية، يتم تقديمه لأغراض إعلامية فقط (وليس كإقرارات/ضمانات)، ولا ينبغي اعتباره موافقة على آرائه من قبل Gate، ولا بمثابة نصيحة مالية أو مهنية. انظر إلى إخلاء المسؤولية للحصول على التفاصيل.
  • أعجبني
  • 3
  • إعادة النشر
  • مشاركة
تعليق
0/400
GateUser-00be86fcvip
· 08-11 01:16
يا v8 قد كشفت عن ثغرة صغيرة مرة أخرى
شاهد النسخة الأصليةرد0
Blockblindvip
· 08-11 01:15
من الرائع أن يتم ترك هذا الخطأ دون إصلاح لفترة طويلة.
شاهد النسخة الأصليةرد0
ImpermanentSagevip
· 08-11 00:55
يا إلهي، إنها ثغرة تنفيذ الشيفرة مرة أخرى
شاهد النسخة الأصليةرد0
  • تثبيت