قيمة السنتينل هي قيمة خاصة في الخوارزميات، وغالبًا ما تستخدم كشرط لإنهاء الحلقات أو الخوارزميات التكرارية. في كود مصدر 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 الأخرى، والنظر في إدراج هذه الأنواع من الكائنات في نطاق اختبار الضبابية، لاكتشاف المزيد من طرق الاستغلال المحتملة. على أي حال، قد تؤدي هذه الأنواع من المشكلات إلى تقصير دورة استغلال الثغرات بشكل كبير بالنسبة للمهاجمين.
This page may contain third-party content, which is provided for information purposes only (not representations/warranties) and should not be considered as an endorsement of its views by Gate, nor as financial or professional advice. See Disclaimer for details.
قيمة 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 الأخرى، والنظر في إدراج هذه الأنواع من الكائنات في نطاق اختبار الضبابية، لاكتشاف المزيد من طرق الاستغلال المحتملة. على أي حال، قد تؤدي هذه الأنواع من المشكلات إلى تقصير دورة استغلال الثغرات بشكل كبير بالنسبة للمهاجمين.