تجاوز حماية Chrome v8 HardenProtect من خلال تسريب قيمة Sentinel
المقدمة
قيمة Sentinel هي قيمة خاصة في الخوارزميات، وعادةً ما توجد كشرط إنهاء في الخوارزميات التكرارية أو العودية. هناك الكثير من قيم Sentinel في شفرة مصدر Chrome. وقد تم تقديم دراسات سابقة تشرح كيفية تنفيذ تنفيذ أي كود داخل الصندوق الرمل من خلال تسريب كائن TheHole. بعد ذلك، قامت فريق جوجل بسرعة بتحديث الإصلاحات ذات الصلة.
بجانب كائن TheHole، هناك العديد من الكائنات الأصلية الأخرى في V8 التي لا ينبغي تسريبها إلى JS. ستتناول هذه المقالة كائن Uninitialized Oddball، والذي لا يزال بإمكان استخدامه في أحدث إصدار من V8. من الجدير بالذكر أن هذه الطريقة تتمتع بقدر من العمومية، حيث ظهرت في عدة ثغرات.
! [الكشف الحصري عن تجاوز Chrome v8 HardenProtect عن طريق تسريب قيمة Sentinel](https://img-cdn.gateio.im/webp-social/moments-263e5651876fc00c4e0af0cfcd350210.webp019283746574839201
قيمة السنتينيل في V8
تُعرف معظم الكائنات الأصلية في v8 في ملف v8/src/roots/roots.h، وتكون هذه الكائنات مرتبة بشكل متجاور في الذاكرة. بمجرد تسريب كائن أصلي لا ينبغي تسريبه إلى Javascript، يمكن تنفيذ أي كود داخل الصندوق الرمل.
للتحقق من هذه الطريقة، يمكننا تعديل الدالة الأصلية v8، لإسقاط Uninitialized Oddball في JavaScript. يمكن تعديل نسبة الإزاحة بالنسبة للعزلة في دالة %TheHole)(.
![كشف حصري عن كيفية تجاوز حماية Chrome v8 من خلال تسريب قيمة Sentinel])https://img-cdn.gateio.im/webp-social/moments-26c26345e3ec4effeea2e3e6b7cd8772.webp(
تجاوز HardenType
يمكن تحقيق القراءة والكتابة النسبية العشوائية باستخدام Uninitialized Oddball. المفتاح هو أنه في دالة القراءة المحسّنة في JavaScript، تم فحص ما إذا كانت خاصية obj.prop صحيحة فقط، لكن لم يتم فحص القيمة التي تستخدم obj.prop كمفتاح، بل تم حساب الإزاحة مباشرة وفقًا لدلالة JavaScript، للحصول على قيمة المصفوفة. هذا أدى إلى حدوث لبس في النوع أثناء الحساب، مما يتيح القراءة العشوائية.
نظرًا لأن Uninitialized Oddball يتم ترتيبه في الذاكرة v8 بشكل أعلى وأكثر بدائية، فإنه من الأسهل تزويره مقارنةً بكائن TheHole، مما يجعله الطريقة المفضلة للتخفيف من تجاوز الإصلاح.
الاقتراح هو أن يتم إضافة تحقق من مصفوفة الخريطة عند إرجاع عناصر المصفوفة من الدالة المحسّنة، لتجنب حساب الإزاحة وإرجاع القيمة مباشرة.
! [الكشف الحصري عن تجاوز Chrome v8 HardenProtect عن طريق تسريب قيمة Sentinel])https://img-cdn.gateio.im/webp-social/moments-4c091ca0e153e953eb168e99762ff7cc.webp(
![كشف حصري حول كيفية تجاوز حماية Chrome v8 من خلال تسريب قيمة Sentinel])https://img-cdn.gateio.im/webp-social/moments-1e3fda77c04bceafdcc40413824a5d37.webp(
! [الكشف الحصري عن تجاوز 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
بالإضافة إلى الانتباه للثغرات التاريخية، يجب أن نلاحظ الثغرات التي تقوم الشركات بإصلاحها بهدوء في المكونات الأساسية. لم تقم Skype حتى الآن بإصلاح هذه الثغرة. تختلف طرق الاستغلال قليلاً تحت x86 و x64، لكن كلاهما يمكن أن يحقق قراءة وكتابة عشوائية.
تتعلق هذه المرة PatchGap ليس فقط بالمسألة 1352549، بل إن الكشف عن الطريقة الجديدة قد خفض بشكل كبير من صعوبة استغلال الثغرات المماثلة. لم يعد يحتاج القراصنة تقريبًا إلى البحث لإكمال الاستغلال الكامل لأي تسرب لثغرة Uninitialized Oddball في الماضي.
![كشف حصري حول كيفية تجاوز حماية Chrome v8 من خلال تسريب قيمة Sentinel])https://img-cdn.gateio.im/webp-social/moments-230537e420d579aabd89bdd168b20878.webp(
![كشف حصري حول تجاوز حماية Chrome v8 باستخدام تسريب قيمة Sentinel])https://img-cdn.gateio.im/webp-social/moments-506159c94c9e0988552cbcbd13d971e1.webp(
ملخص
في v8 هناك العديد من القيم Sentinel الأخرى، وقد توجد مشاكل مشابهة. هذا يعطينا بعض الإلهام:
هل من السهل أيضًا تنفيذ RCE في v8 من خلال تسريبات Uninitialized Oddball الأخرى.
لا يزال هناك جدل حول ما إذا كان ينبغي اعتبار هذه النوعية من المشكلات مسائل أمان رسمية.
قد ينبغي أن تأخذ في اعتبارك إضافة قيم Sentinel مختلفة كمتغيرات أثناء اختبار fuzz.
بغض النظر عن ذلك، ستؤدي هذه الأنواع من المشاكل إلى تقصير دورة الاستغلال الكاملة للقراصنة بشكل كبير. يجب أن نكون يقظين حيال ذلك.
! [الكشف الحصري عن تجاوز Chrome v8 HardenProtect عن طريق تسريب قيمة Sentinel])https://img-cdn.gateio.im/webp-social/moments-e9e2000fd501b69ee3ee643a459a26dd.webp(
قد تحتوي هذه الصفحة على محتوى من جهات خارجية، يتم تقديمه لأغراض إعلامية فقط (وليس كإقرارات/ضمانات)، ولا ينبغي اعتباره موافقة على آرائه من قبل Gate، ولا بمثابة نصيحة مالية أو مهنية. انظر إلى إخلاء المسؤولية للحصول على التفاصيل.
تسجيلات الإعجاب 9
أعجبني
9
6
مشاركة
تعليق
0/400
MetaMaskVictim
· منذ 7 س
مرة أخرى وقعت في فخ v8
شاهد النسخة الأصليةرد0
gas_fee_therapist
· 08-05 17:35
v8 مرة أخرى فشلت الأمان أصبح في تدهور متزايد
شاهد النسخة الأصليةرد0
GreenCandleCollector
· 08-05 17:34
هذه الثغرة قوية للغاية، أليس كذلك؟
شاهد النسخة الأصليةرد0
LightningPacketLoss
· 08-05 17:32
تم إصلاح هذا الخطأ مرة أخرى، يجب علينا إصلاح غرفة الخوادم لدينا بسرعة.
أسلوب جديد لاستغلال ثغرة Chrome v8: تسريب تنفيذ Oddball غير المهيأ للهروب من الصندوق الرملي
تجاوز حماية Chrome v8 HardenProtect من خلال تسريب قيمة Sentinel
المقدمة
قيمة Sentinel هي قيمة خاصة في الخوارزميات، وعادةً ما توجد كشرط إنهاء في الخوارزميات التكرارية أو العودية. هناك الكثير من قيم Sentinel في شفرة مصدر Chrome. وقد تم تقديم دراسات سابقة تشرح كيفية تنفيذ تنفيذ أي كود داخل الصندوق الرمل من خلال تسريب كائن TheHole. بعد ذلك، قامت فريق جوجل بسرعة بتحديث الإصلاحات ذات الصلة.
بجانب كائن TheHole، هناك العديد من الكائنات الأصلية الأخرى في V8 التي لا ينبغي تسريبها إلى JS. ستتناول هذه المقالة كائن Uninitialized Oddball، والذي لا يزال بإمكان استخدامه في أحدث إصدار من V8. من الجدير بالذكر أن هذه الطريقة تتمتع بقدر من العمومية، حيث ظهرت في عدة ثغرات.
! [الكشف الحصري عن تجاوز Chrome v8 HardenProtect عن طريق تسريب قيمة Sentinel](https://img-cdn.gateio.im/webp-social/moments-263e5651876fc00c4e0af0cfcd350210.webp019283746574839201
قيمة السنتينيل في V8
تُعرف معظم الكائنات الأصلية في v8 في ملف v8/src/roots/roots.h، وتكون هذه الكائنات مرتبة بشكل متجاور في الذاكرة. بمجرد تسريب كائن أصلي لا ينبغي تسريبه إلى Javascript، يمكن تنفيذ أي كود داخل الصندوق الرمل.
للتحقق من هذه الطريقة، يمكننا تعديل الدالة الأصلية v8، لإسقاط Uninitialized Oddball في JavaScript. يمكن تعديل نسبة الإزاحة بالنسبة للعزلة في دالة %TheHole)(.
![كشف حصري عن كيفية تجاوز حماية Chrome v8 من خلال تسريب قيمة Sentinel])https://img-cdn.gateio.im/webp-social/moments-26c26345e3ec4effeea2e3e6b7cd8772.webp(
تجاوز HardenType
يمكن تحقيق القراءة والكتابة النسبية العشوائية باستخدام Uninitialized Oddball. المفتاح هو أنه في دالة القراءة المحسّنة في JavaScript، تم فحص ما إذا كانت خاصية obj.prop صحيحة فقط، لكن لم يتم فحص القيمة التي تستخدم obj.prop كمفتاح، بل تم حساب الإزاحة مباشرة وفقًا لدلالة JavaScript، للحصول على قيمة المصفوفة. هذا أدى إلى حدوث لبس في النوع أثناء الحساب، مما يتيح القراءة العشوائية.
نظرًا لأن Uninitialized Oddball يتم ترتيبه في الذاكرة v8 بشكل أعلى وأكثر بدائية، فإنه من الأسهل تزويره مقارنةً بكائن TheHole، مما يجعله الطريقة المفضلة للتخفيف من تجاوز الإصلاح.
الاقتراح هو أن يتم إضافة تحقق من مصفوفة الخريطة عند إرجاع عناصر المصفوفة من الدالة المحسّنة، لتجنب حساب الإزاحة وإرجاع القيمة مباشرة.
! [الكشف الحصري عن تجاوز Chrome v8 HardenProtect عن طريق تسريب قيمة Sentinel])https://img-cdn.gateio.im/webp-social/moments-4c091ca0e153e953eb168e99762ff7cc.webp(
![كشف حصري حول كيفية تجاوز حماية Chrome v8 من خلال تسريب قيمة Sentinel])https://img-cdn.gateio.im/webp-social/moments-1e3fda77c04bceafdcc40413824a5d37.webp(
! [الكشف الحصري عن تجاوز 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
بالإضافة إلى الانتباه للثغرات التاريخية، يجب أن نلاحظ الثغرات التي تقوم الشركات بإصلاحها بهدوء في المكونات الأساسية. لم تقم Skype حتى الآن بإصلاح هذه الثغرة. تختلف طرق الاستغلال قليلاً تحت x86 و x64، لكن كلاهما يمكن أن يحقق قراءة وكتابة عشوائية.
تتعلق هذه المرة PatchGap ليس فقط بالمسألة 1352549، بل إن الكشف عن الطريقة الجديدة قد خفض بشكل كبير من صعوبة استغلال الثغرات المماثلة. لم يعد يحتاج القراصنة تقريبًا إلى البحث لإكمال الاستغلال الكامل لأي تسرب لثغرة Uninitialized Oddball في الماضي.
![كشف حصري حول كيفية تجاوز حماية Chrome v8 من خلال تسريب قيمة Sentinel])https://img-cdn.gateio.im/webp-social/moments-230537e420d579aabd89bdd168b20878.webp(
![كشف حصري حول تجاوز حماية Chrome v8 باستخدام تسريب قيمة Sentinel])https://img-cdn.gateio.im/webp-social/moments-506159c94c9e0988552cbcbd13d971e1.webp(
ملخص
في v8 هناك العديد من القيم Sentinel الأخرى، وقد توجد مشاكل مشابهة. هذا يعطينا بعض الإلهام:
هل من السهل أيضًا تنفيذ RCE في v8 من خلال تسريبات Uninitialized Oddball الأخرى.
لا يزال هناك جدل حول ما إذا كان ينبغي اعتبار هذه النوعية من المشكلات مسائل أمان رسمية.
قد ينبغي أن تأخذ في اعتبارك إضافة قيم Sentinel مختلفة كمتغيرات أثناء اختبار fuzz.
بغض النظر عن ذلك، ستؤدي هذه الأنواع من المشاكل إلى تقصير دورة الاستغلال الكاملة للقراصنة بشكل كبير. يجب أن نكون يقظين حيال ذلك.
! [الكشف الحصري عن تجاوز Chrome v8 HardenProtect عن طريق تسريب قيمة Sentinel])https://img-cdn.gateio.im/webp-social/moments-e9e2000fd501b69ee3ee643a459a26dd.webp(