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

تحليل قيمة Sentinel في محرك جوجل كروم V8 وعيوبه الأمنية

قيمة Sentinel هي قيمة خاصة في الخوارزميات، وغالبًا ما تستخدم كشرط إنهاء للحلقات أو الاستدعاءات التكرارية. يحتوي مصدر Chrome على عدة قيم Sentinel، وبعضها إذا تسرب إلى بيئة JavaScript قد يؤدي إلى مشاكل أمنية. ستتناول هذه المقالة الطرق التي يمكن من خلالها استغلال كائن Uninitialized Oddball المسرب لتجاوز آلية HardenProtect في Chrome V8.

قيمة السنتينل في V8

يحدد ملف roots.h في كود V8 المصدر العديد من الكائنات الأصلية، والتي يتم ترتيبها في الذاكرة بالتتابع. إذا تم تسرب هذه الكائنات الأصلية التي لا ينبغي أن تُعرض لJavaScript، فقد يؤدي ذلك إلى هروب من الصندوق الرملي. كانت حادثة تسرب كائن TheHole في السابق مثالًا نموذجيًا.

للتحقق من المشكلة في الإصدار الأخير V8، يمكن تعديل دالة %TheHole() لجعلها تعيد كائن Uninitialized Oddball:

جافا سكريبت print(٪DebugPrint(٪TheHole())); // الإخراج: قيمة غير مهيأة

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

تجاوز حماية HardenType

يمكن استخدام Uninitialized Oddball لبناء كود PoC كما يلي لتحقيق القراءة العشوائية:

جافا سكريبت الدالة read)obj ، idx( { عودة obj) }

دع غير مهيأ = ٪ TheHole[idx]( ؛ دع arr = [1.1]; %تحضير_الدالة_للتعزيز)قراءة(; read)arr ، 0( ؛ اقرأ)arr، 0(؛ ٪ OptimizeFunctionOnNextCall)read( ؛ read)arr ، 0( ؛

print)read(غير مُهيأ، 0x1234n();

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

يمكن رؤية وظيفة read التي تم تحسينها من خلال التفكيك، حيث إنها لا تتحقق بدقة من نوع القيمة obj.prop، بل تحسب الإزاحة وتعيد عناصر المصفوفة مباشرة وفقًا لدلالة JavaScript، مما يتسبب في ارتباك نوعي يمكن من القراءة العشوائية.

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

الاقتراح هو أن يتم إضافة فحص لخريطة المصفوفة عند إرجاع عناصر المصفوفة من الدالة المحسنة، لتجنب حساب إزاحة قيمة الإرجاع مباشرة.

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

تحذير من مخاطر PatchGap

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

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

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

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

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

ملخص

توجد العديد من قيم Sentinel الأخرى في V8 تستحق المزيد من الدراسة. يُقترح النظر في إضافة %TheHole/Uninitialized_Oddball كمتغير إلى Fuzzer، لاستكشاف آليات استغلال جديدة. بغض النظر عما إذا كانت هذه المسألة مدرجة رسميًا كقضية أمنية أم لا، فقد تؤدي إلى تقصير دورة الاستغلال الكاملة للهاكرز بشكل كبير.

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

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

SENC10.61%
شاهد النسخة الأصلية
قد تحتوي هذه الصفحة على محتوى من جهات خارجية، يتم تقديمه لأغراض إعلامية فقط (وليس كإقرارات/ضمانات)، ولا ينبغي اعتباره موافقة على آرائه من قبل Gate، ولا بمثابة نصيحة مالية أو مهنية. انظر إلى إخلاء المسؤولية للحصول على التفاصيل.
  • أعجبني
  • 5
  • إعادة النشر
  • مشاركة
تعليق
0/400
ParanoiaKingvip
· منذ 11 س
إنها نقطة خطر أخرى
شاهد النسخة الأصليةرد0
WenMoon42vip
· منذ 11 س
又是العمق研究啊
شاهد النسخة الأصليةرد0
CryptoSourGrapevip
· منذ 11 س
يبدو أن هناك أيضًا فخ هنا
شاهد النسخة الأصليةرد0
ForkItAllDayvip
· منذ 11 س
أفكار جديدة حول تجاوز سعة المكدس
شاهد النسخة الأصليةرد0
Fren_Not_Foodvip
· منذ 11 س
تجاوز الثغرات كان مثيرًا جدًا
شاهد النسخة الأصليةرد0
  • تثبيت