تكشف تسرب قيمة Sentinel لمحرك V8 عن مخاطر أمنية. أصبح Oddball غير المهيأ ناقل الهجوم الجديد.

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

تحليل مشكلة الأمان الناتجة عن تسرب قيمة Sentinel في محرك Chrome v8

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

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

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

  1. في CVE-2021-30551، كانت POC الأولية هي تسرب internal uninitialized oddball.

  2. في CVE-2022-1486، تم تسريب UninitializedOddball مباشرة من خلال POC.

  3. Issue1352549( يحتوي على كود استغلال كامل لم يتم تخصيصه لـ CVE).

تشير هذه الحالات إلى أن تسرب Uninitialized Oddball قد يؤدي إلى مشاكل أمنية خطيرة.

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

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

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

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

تجاوز حماية HardenType

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

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

دع uninitialized_oddball = ٪ TheHole[idx]( ؛ دع ab = ArrayBuffer)8( جديد. دع fa = Float64Array)ab( جديد. دع ia = BigInt64Array)ab( جديد.

دع الشر = [1.1، 2.2، 3.3]؛ evil.prop = 1 ؛

%إعداد_الدالة_للت优化)قراءة(; اقرأ)شرير، 0(؛ اقرأ)شرير، 1(؛ ٪ OptimizeFunctionOnNextCall)read( ؛ اقرأ)شرير، 0(؛

دع فال = read)uninitialized_oddball ، "prop" ( ؛ fa) = فال. console.log[0]ia([0];

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

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

نظرًا لأن Uninitialized Oddball يحتل مرتبة أعلى في ذاكرة V8 وأصلي أكثر، فهو أسهل في التزوير من كائن TheHole، وهو الطريقة المفضلة لتجاوز HardenType.

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

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

تحذير PatchGap

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

على الرغم من أن Skype قد أطلق ASLR، إلا أن الملفات كبيرة جدًا، مما يسمح للقراصنة بقراءة أو كتابة إلى عنوان ثابت معين، مما يزيد من احتمالية الوصول إلى محتوى ملفات Skype. بال结合 مع طرق تقليدية مثل تحليل PE، يمكن إكمال سلسلة استغلال الثغرات بالكامل.

تتعلق هذه الفجوة في التصحيح (PatchGap) ليس فقط بالمشكلة 1352549، بل ستؤدي أيضًا إلى انخفاض كبير في صعوبة استغلال ثغرات مشابهة مثل CVE-2022-1486 وCVE-2021-30551. لم يعد لدى المتسللين الحاجة إلى دراسة إضافية لتحقيق الاستغلال الكامل.

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

ملخص

تتناول هذه المقالة بإيجاز طريقة تنفيذ قراءة عشوائية من خلال تسريب Uninitialized Oddball. هناك العديد من قيم Sentinel الأخرى في V8، والتي قد تحتوي على مخاطر أمان مماثلة. وهذا يوفر لنا الدروس التالية:

  1. هل يمكن أيضًا تحقيق تسريبات Uninitialized Oddball أخرى بسهولة لتشغيل التعليمات البرمجية عن بُعد V8.

  2. لا يزال هناك جدل حول ما إذا كان يجب اعتبار هذه الأنواع من المشاكل رسمياً على أنها مسائل أمنية.

  3. هل من الضروري إضافة %TheHole/Uninitialized Oddball كمتغير في Fuzzer لاكتشاف أوليات استغلال جديدة.

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

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

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

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

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

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

SENC0.55%
شاهد النسخة الأصلية
قد تحتوي هذه الصفحة على محتوى من جهات خارجية، يتم تقديمه لأغراض إعلامية فقط (وليس كإقرارات/ضمانات)، ولا ينبغي اعتباره موافقة على آرائه من قبل Gate، ولا بمثابة نصيحة مالية أو مهنية. انظر إلى إخلاء المسؤولية للحصول على التفاصيل.
  • أعجبني
  • 5
  • مشاركة
تعليق
0/400
HallucinationGrowervip
· منذ 12 س
ما هذا؟ كيف يمكن أن يتسرب الأمر؟
شاهد النسخة الأصليةرد0
CodeAuditQueenvip
· منذ 12 س
سطح الهجوم آخر من نوع CVE 啧啧
شاهد النسخة الأصليةرد0
WhaleWatchervip
· منذ 12 س
هل تلعب جوجل بالنار؟ عودة إلى الوراء في التاريخ
شاهد النسخة الأصليةرد0
BearMarketSurvivorvip
· منذ 12 س
حقا، أخطاء لا تنتهي
شاهد النسخة الأصليةرد0
CryptoAdventurervip
· منذ 12 س
هل حان الوقت لدفع ضريبة الذكاء مرة أخرى؟ الذين يعرفون يعرفون
شاهد النسخة الأصليةرد0
  • تثبيت