تحليل قيمة 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 كما يلي لتحقيق القراءة العشوائية:
! [الكشف الحصري عن تجاوز Chrome v8 HardenProtect عن طريق تسريب قيمة Sentinel])https://img-cdn.gateio.im/webp-social/moments-26c26345e3ec4effeea2e3e6b7cd8772.webp019283746574839201
يمكن رؤية وظيفة read التي تم تحسينها من خلال التفكيك، حيث إنها لا تتحقق بدقة من نوع القيمة obj.prop، بل تحسب الإزاحة وتعيد عناصر المصفوفة مباشرة وفقًا لدلالة JavaScript، مما يتسبب في ارتباك نوعي يمكن من القراءة العشوائية.
الاقتراح هو أن يتم إضافة فحص لخريطة المصفوفة عند إرجاع عناصر المصفوفة من الدالة المحسنة، لتجنب حساب إزاحة قيمة الإرجاع مباشرة.
تحذير من مخاطر 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
توجد العديد من قيم Sentinel الأخرى في V8 تستحق المزيد من الدراسة. يُقترح النظر في إضافة %TheHole/Uninitialized_Oddball كمتغير إلى Fuzzer، لاستكشاف آليات استغلال جديدة. بغض النظر عما إذا كانت هذه المسألة مدرجة رسميًا كقضية أمنية أم لا، فقد تؤدي إلى تقصير دورة الاستغلال الكاملة للهاكرز بشكل كبير.
قد تحتوي هذه الصفحة على محتوى من جهات خارجية، يتم تقديمه لأغراض إعلامية فقط (وليس كإقرارات/ضمانات)، ولا ينبغي اعتباره موافقة على آرائه من قبل Gate، ولا بمثابة نصيحة مالية أو مهنية. انظر إلى إخلاء المسؤولية للحصول على التفاصيل.
تحليل واستغلال ثغرات الأمان لقيمة الحارس في محرك 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
الاقتراح هو أن يتم إضافة فحص لخريطة المصفوفة عند إرجاع عناصر المصفوفة من الدالة المحسنة، لتجنب حساب إزاحة قيمة الإرجاع مباشرة.
تحذير من مخاطر 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 HardenProtect عن طريق تسريب قيمة Sentinel