قيمة السنتينل هي قيمة خاصة في الخوارزميات، وغالبًا ما تستخدم كشرط لإنهاء الحلقات أو الخوارزميات التكرارية. في كود مصدر Chrome، توجد أنواع متعددة من قيمة السنتينل، وبعضها إذا تسربت إلى بيئة JavaScript قد تؤدي إلى مشكلات أمنية.
أظهرت الأبحاث السابقة أن تسرب كائن TheHole يمكن أن يحقق تنفيذ أي كود داخل الصندوق الرملي. قامت فريق جوجل بإصلاح ذلك. لكن في الواقع، لا يزال هناك كائنات أصلية أخرى في V8 لا ينبغي تسريبها إلى JS، مثل كائن Uninitialized Oddball.
قد يؤدي تسرب كائن Oddball غير المهيأ إلى هروب من الصندوق الرملي. ظهرت هذه المشكلة لأول مرة في Issue1352549 ولم يتم إصلاحها حتى الآن. تتمتع هذه الطريقة بعمومية معينة وقد ظهرت في عدة ثغرات.
تُعرَّف الكائنات الأصلية في V8 في ملف v8/src/roots/roots.h، وهي مرتبة بجوار بعضها في الذاكرة. بمجرد تسرب هذه الكائنات إلى بيئة JavaScript، قد يحدث هروب من الصندوق الرمل.
! [الكشف الحصري عن تجاوز Chrome v8 HardenProtect عن طريق تسريب قيمة Sentinel](https://img-cdn.gateio.im/webp-social/moments-263e5651876fc00c4e0af0cfcd350210.webp019283746574839201
للتحقق من هذه المشكلة، يمكن تعديل دالة V8 الأصلية لكشف Uninitialized Oddball داخل JavaScript. يمكن تعديل تنفيذ الدالة %TheHole)(.
![كشف حصري حول كيفية تجاوز حماية Chrome v8 من خلال تسريب قيمة Sentinel])https://img-cdn.gateio.im/webp-social/moments-26c26345e3ec4effeea2e3e6b7cd8772.webp(
يمكن استخدام كائن Uninitialized Oddball لتجاوز حماية HardenType. من خلال بناء رمز JavaScript محدد، يمكن تحقيق قراءة وكتابة الذاكرة بشكل نسبي. هذا بسبب أن الشيفرة المحسّنة لم تتحقق بشكل كافٍ من خصائص الكائن.
! [الكشف الحصري عن تجاوز Chrome v8 HardenProtect عن طريق تسريب قيمة Sentinel])https://img-cdn.gateio.im/webp-social/moments-4c091ca0e153e953eb168e99762ff7cc.webp(
! [الكشف الحصري عن تجاوز Chrome v8 HardenProtect عن طريق تسريب قيمة Sentinel])https://img-cdn.gateio.im/webp-social/moments-1e3fda77c04bceafdcc40413824a5d37.webp019283746574839201
! [الكشف الحصري عن تجاوز 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
بالنسبة للاقتراحات الخاصة بالإصلاح، يجب إضافة فحص لمصفوفة الخريطة عند إرجاع عناصر المصفوفة من الدالة المحسّنة، لتجنب حساب الإزاحة مباشرةً لإرجاع القيم.
تذكرنا هذه المشكلة أيضًا بـ PatchGap، أي أن بعض البرامج قد تستخدم إصدار V8 الذي لم يتم إصلاح الثغرة فيه. على سبيل المثال، لا يزال Skype لم يصلح هذه المشكلة. في بنية x86، نظرًا لعدم وجود ضغط للعناوين، يمكن تحقيق القراءة والكتابة العشوائية ضمن نطاق العمليات.
بشكل عام، من المحتمل أن توجد العديد من قيم Sentinel في V8 تحمل مخاطر أمان مشابهة. يُنصح بإجراء المزيد من الدراسات حول تأثير تسرب Uninitialized Oddball الأخرى، والنظر في إدراج هذه الأنواع من الكائنات في نطاق اختبار الضبابية، لاكتشاف المزيد من طرق الاستغلال المحتملة. على أي حال، قد تؤدي هذه الأنواع من المشكلات إلى تقصير دورة استغلال الثغرات بشكل كبير بالنسبة للمهاجمين.
قد تحتوي هذه الصفحة على محتوى من جهات خارجية، يتم تقديمه لأغراض إعلامية فقط (وليس كإقرارات/ضمانات)، ولا ينبغي اعتباره موافقة على آرائه من قبل Gate، ولا بمثابة نصيحة مالية أو مهنية. انظر إلى إخلاء المسؤولية للحصول على التفاصيل.
قيمة Sentinel في Chrome V8 - مخاطر الأمان: تسرب كائن Oddball غير مهيأ قد يؤدي إلى هروب من الصندوق الرمل
قيمة الحارس: المخاطر الأمنية في Chrome V8
قيمة السنتينل هي قيمة خاصة في الخوارزميات، وغالبًا ما تستخدم كشرط لإنهاء الحلقات أو الخوارزميات التكرارية. في كود مصدر Chrome، توجد أنواع متعددة من قيمة السنتينل، وبعضها إذا تسربت إلى بيئة JavaScript قد تؤدي إلى مشكلات أمنية.
أظهرت الأبحاث السابقة أن تسرب كائن TheHole يمكن أن يحقق تنفيذ أي كود داخل الصندوق الرملي. قامت فريق جوجل بإصلاح ذلك. لكن في الواقع، لا يزال هناك كائنات أصلية أخرى في V8 لا ينبغي تسريبها إلى JS، مثل كائن Uninitialized Oddball.
قد يؤدي تسرب كائن Oddball غير المهيأ إلى هروب من الصندوق الرملي. ظهرت هذه المشكلة لأول مرة في Issue1352549 ولم يتم إصلاحها حتى الآن. تتمتع هذه الطريقة بعمومية معينة وقد ظهرت في عدة ثغرات.
تُعرَّف الكائنات الأصلية في V8 في ملف v8/src/roots/roots.h، وهي مرتبة بجوار بعضها في الذاكرة. بمجرد تسرب هذه الكائنات إلى بيئة JavaScript، قد يحدث هروب من الصندوق الرمل.
! [الكشف الحصري عن تجاوز Chrome v8 HardenProtect عن طريق تسريب قيمة Sentinel](https://img-cdn.gateio.im/webp-social/moments-263e5651876fc00c4e0af0cfcd350210.webp019283746574839201
للتحقق من هذه المشكلة، يمكن تعديل دالة V8 الأصلية لكشف Uninitialized Oddball داخل JavaScript. يمكن تعديل تنفيذ الدالة %TheHole)(.
![كشف حصري حول كيفية تجاوز حماية Chrome v8 من خلال تسريب قيمة Sentinel])https://img-cdn.gateio.im/webp-social/moments-26c26345e3ec4effeea2e3e6b7cd8772.webp(
يمكن استخدام كائن Uninitialized Oddball لتجاوز حماية HardenType. من خلال بناء رمز JavaScript محدد، يمكن تحقيق قراءة وكتابة الذاكرة بشكل نسبي. هذا بسبب أن الشيفرة المحسّنة لم تتحقق بشكل كافٍ من خصائص الكائن.
! [الكشف الحصري عن تجاوز Chrome v8 HardenProtect عن طريق تسريب قيمة Sentinel])https://img-cdn.gateio.im/webp-social/moments-4c091ca0e153e953eb168e99762ff7cc.webp(
! [الكشف الحصري عن تجاوز Chrome v8 HardenProtect عن طريق تسريب قيمة Sentinel])https://img-cdn.gateio.im/webp-social/moments-1e3fda77c04bceafdcc40413824a5d37.webp019283746574839201
! [الكشف الحصري عن تجاوز 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
بالنسبة للاقتراحات الخاصة بالإصلاح، يجب إضافة فحص لمصفوفة الخريطة عند إرجاع عناصر المصفوفة من الدالة المحسّنة، لتجنب حساب الإزاحة مباشرةً لإرجاع القيم.
تذكرنا هذه المشكلة أيضًا بـ PatchGap، أي أن بعض البرامج قد تستخدم إصدار V8 الذي لم يتم إصلاح الثغرة فيه. على سبيل المثال، لا يزال Skype لم يصلح هذه المشكلة. في بنية x86، نظرًا لعدم وجود ضغط للعناوين، يمكن تحقيق القراءة والكتابة العشوائية ضمن نطاق العمليات.
! الكشف الحصري عن تجاوز Chrome v8 HardenProtect عن طريق تسريب قيمة Sentinel
بشكل عام، من المحتمل أن توجد العديد من قيم Sentinel في V8 تحمل مخاطر أمان مشابهة. يُنصح بإجراء المزيد من الدراسات حول تأثير تسرب Uninitialized Oddball الأخرى، والنظر في إدراج هذه الأنواع من الكائنات في نطاق اختبار الضبابية، لاكتشاف المزيد من طرق الاستغلال المحتملة. على أي حال، قد تؤدي هذه الأنواع من المشكلات إلى تقصير دورة استغلال الثغرات بشكل كبير بالنسبة للمهاجمين.