مخاطر الأمان الناجمة عن تسرب قيمة Sentinel في محرك Chrome V8
قيمة الحارس هي قيمة خاصة في الخوارزميات، وغالبًا ما تستخدم كشرط لإنهاء حلقات أو خوارزميات متكررة. يوجد في شفرة Chrome المصدرية عدة قيم حارس، وبعض الكائنات لا ينبغي أن تتسرب إلى بيئة JavaScript. ستستكشف هذه المقالة كيفية استخدام تسرب كائن Oddball غير initialized للتغلب على آلية HardenProtect لمحرك Chrome V8.
قيمة Sentinel في V8
معظم الكائنات الأصلية لـ V8 مُعرفة في ملف v8/src/roots/roots.h، وهذه الكائنات مرتبة بجوار بعضها في الذاكرة. بمجرد تسرب هذه الكائنات الأصلية التي لا ينبغي الكشف عنها لجافا سكريبت، قد يؤدي ذلك إلى تنفيذ أي تعليمات برمجية داخل الصندوق الرملي.
يمكننا تسريب Uninitialized Oddball إلى JavaScript عن طريق تعديل الدالة الأصلية V8. على سبيل المثال، تعديل إزاحة دالة %TheHole() لجعلها ترجع كائن Uninitialized Oddball.
! [الكشف الحصري عن تجاوز Chrome v8 HardenProtect عن طريق تسريب قيمة Sentinel](https://img-cdn.gateio.im/webp-social/moments-263e5651876fc00c4e0af0cfcd350210.webp019283746574839201
تجاوز حماية HardenType
يمكن استخدام كائن Uninitialized Oddball المسرب لبناء الكود التالي لتحقيق قراءة شبه عشوائية:
ل )let أنا = 0 ؛ أنا < 100000 ؛ i++( {
اقرأ)arr, 0(;
}
٪ OptimizeFunctionOnNextCall)read( ؛
دع النتيجة = قراءة ) غير مهيأة ، 0x12345(؛
٪ DebugPrint)result( ؛
تظهر شيفرة التجميع المحسّنة لدالة read أنه عند حساب إزاحة المصفوفة لم يتم التحقق من نوع قيمة obj.prop، وتم حسابها مباشرة وفقًا لمدلول JavaScript، مما أدى إلى لبس في النوع، مما يتيح القراءة العشوائية.
! [الكشف الحصري عن تجاوز Chrome v8 HardenProtect عن طريق تسريب قيمة Sentinel])https://img-cdn.gateio.im/webp-social/moments-26c26345e3ec4effeea2e3e6b7cd8772.webp019283746574839201
تقترح الإصلاحات إضافة فحص لخريطة المصفوفة عند إرجاع عناصر المصفوفة من الدالة المحسّنة، لتجنب حساب الإزاحة مباشرةً لإرجاع القيمة.
لا يزال هذا الثغرة غير مُعالجة في بعض البرمجيات التي تستخدم محرك V8 القديم مثل Skype(. على منصة x86، نظرًا لعدم وجود ضغط عناوين، يمكن القراءة والكتابة بشكل عشوائي مباشرة بالنسبة للعملية بأكملها.
إن الكشف عن هذه الطريقة الجديدة للتجاوز قد خفض من صعوبة استغلال الثغرات ذات الصلة. لم يعد من الضروري أن يقوم القراصنة بإجراء أبحاث إضافية لإكمال استغلال ثغرة Uninitialized Oddball.
![كشف حصري عن كيفية تجاوز حماية Chrome v8 باستخدام قيمة Sentinel المسربة])https://img-cdn.gateio.im/webp-social/moments-1e3fda77c04bceafdcc40413824a5d37.webp(
ملخص
يوجد أيضًا قيم Sentinel أخرى في V8، مما قد يؤدي إلى مشاكل أمان مشابهة. يُنصح بمزيد من البحث:
هل يمكن أن يؤدي تسرب Uninitialized Oddball الآخر أيضًا إلى تنفيذ التعليمات البرمجية عن بُعد في V8
هل يجب اعتبار هذه الأنواع من المشكلات ثغرات أمنية رسمية
هل يجب إضافة قيمة Sentinel كمتغير في اختبار Fuzzer؟
بغض النظر عن أي شيء، ستؤدي هذه الأنواع من المشكلات إلى تقصير دورة الاستغلال الكامل من قبل القراصنة بشكل كبير، مما يستحق اهتمامًا كبيرًا.
![كشف حصري عن كيفية تجاوز حماية Chrome v8 باستخدام تسرب قيمة Sentinel])https://img-cdn.gateio.im/webp-social/moments-ed89289bebf59d4b27f5bffb5511a8c5.webp(
! [الكشف الحصري عن تجاوز Chrome v8 HardenProtect عن طريق تسريب قيمة Sentinel])https://img-cdn.gateio.im/webp-social/moments-0e52075003a8ee2ca492a5fc9f35c36b.webp019283746574839201
قد تحتوي هذه الصفحة على محتوى من جهات خارجية، يتم تقديمه لأغراض إعلامية فقط (وليس كإقرارات/ضمانات)، ولا ينبغي اعتباره موافقة على آرائه من قبل Gate، ولا بمثابة نصيحة مالية أو مهنية. انظر إلى إخلاء المسؤولية للحصول على التفاصيل.
تسجيلات الإعجاب 18
أعجبني
18
6
مشاركة
تعليق
0/400
GateUser-bd883c58
· 08-04 04:05
هذه الثغرة ، صلبة لدرجة أنها تجعلني أشعر بالقلق قليلاً
شاهد النسخة الأصليةرد0
SerumDegen
· 08-02 17:19
صباح الخير أصدقائي... تم رصد تسريب آخر للمعلومات في الإصدار 8، نحن جميعًا في ورطة
شاهد النسخة الأصليةرد0
ThatsNotARugPull
· 08-02 17:19
هذه المقلاة من كروم تحملها، لقد أظهروا لك الثقب.
شاهد النسخة الأصليةرد0
RektButStillHere
· 08-02 17:09
لماذا حماية الصندوق الرمل ضعيفة للغاية؟
شاهد النسخة الأصليةرد0
CryptoNomics
· 08-02 17:01
*آه* استغلال آخر يثبت أن تحليلي الانحداري على نموذج أمان كروم كان له دلالة إحصائية... ومع ذلك لم يستمع أحد
مخاطر الأمان الناتجة عن تسرب قيمة Sentinel في محرك V8 وتجاوز HardenProtect
مخاطر الأمان الناجمة عن تسرب قيمة Sentinel في محرك Chrome V8
قيمة الحارس هي قيمة خاصة في الخوارزميات، وغالبًا ما تستخدم كشرط لإنهاء حلقات أو خوارزميات متكررة. يوجد في شفرة Chrome المصدرية عدة قيم حارس، وبعض الكائنات لا ينبغي أن تتسرب إلى بيئة JavaScript. ستستكشف هذه المقالة كيفية استخدام تسرب كائن Oddball غير initialized للتغلب على آلية HardenProtect لمحرك Chrome V8.
قيمة Sentinel في V8
معظم الكائنات الأصلية لـ V8 مُعرفة في ملف v8/src/roots/roots.h، وهذه الكائنات مرتبة بجوار بعضها في الذاكرة. بمجرد تسرب هذه الكائنات الأصلية التي لا ينبغي الكشف عنها لجافا سكريبت، قد يؤدي ذلك إلى تنفيذ أي تعليمات برمجية داخل الصندوق الرملي.
يمكننا تسريب Uninitialized Oddball إلى JavaScript عن طريق تعديل الدالة الأصلية V8. على سبيل المثال، تعديل إزاحة دالة %TheHole() لجعلها ترجع كائن Uninitialized Oddball.
! [الكشف الحصري عن تجاوز Chrome v8 HardenProtect عن طريق تسريب قيمة Sentinel](https://img-cdn.gateio.im/webp-social/moments-263e5651876fc00c4e0af0cfcd350210.webp019283746574839201
تجاوز حماية HardenType
يمكن استخدام كائن Uninitialized Oddball المسرب لبناء الكود التالي لتحقيق قراءة شبه عشوائية:
جافا سكريبت الدالة read)obj ، idx( { عودة obj) }
دع arr = [1.1 ، 2.2 ، 3.3] ؛ دع uninitialized_oddball = ٪ TheHole[idx]( ؛
ل )let أنا = 0 ؛ أنا < 100000 ؛ i++( { اقرأ)arr, 0(;
}
٪ OptimizeFunctionOnNextCall)read( ؛
دع النتيجة = قراءة ) غير مهيأة ، 0x12345(؛ ٪ DebugPrint)result( ؛
تظهر شيفرة التجميع المحسّنة لدالة read أنه عند حساب إزاحة المصفوفة لم يتم التحقق من نوع قيمة obj.prop، وتم حسابها مباشرة وفقًا لمدلول JavaScript، مما أدى إلى لبس في النوع، مما يتيح القراءة العشوائية.
! [الكشف الحصري عن تجاوز Chrome v8 HardenProtect عن طريق تسريب قيمة Sentinel])https://img-cdn.gateio.im/webp-social/moments-26c26345e3ec4effeea2e3e6b7cd8772.webp019283746574839201
تقترح الإصلاحات إضافة فحص لخريطة المصفوفة عند إرجاع عناصر المصفوفة من الدالة المحسّنة، لتجنب حساب الإزاحة مباشرةً لإرجاع القيمة.
! الكشف الحصري عن تجاوز Chrome v8 HardenProtect عن طريق تسريب قيمة Sentinel
تنبيه مخاطر PatchGap
لا يزال هذا الثغرة غير مُعالجة في بعض البرمجيات التي تستخدم محرك V8 القديم مثل Skype(. على منصة x86، نظرًا لعدم وجود ضغط عناوين، يمكن القراءة والكتابة بشكل عشوائي مباشرة بالنسبة للعملية بأكملها.
إن الكشف عن هذه الطريقة الجديدة للتجاوز قد خفض من صعوبة استغلال الثغرات ذات الصلة. لم يعد من الضروري أن يقوم القراصنة بإجراء أبحاث إضافية لإكمال استغلال ثغرة Uninitialized Oddball.
![كشف حصري عن كيفية تجاوز حماية Chrome v8 باستخدام قيمة Sentinel المسربة])https://img-cdn.gateio.im/webp-social/moments-1e3fda77c04bceafdcc40413824a5d37.webp(
ملخص
يوجد أيضًا قيم Sentinel أخرى في V8، مما قد يؤدي إلى مشاكل أمان مشابهة. يُنصح بمزيد من البحث:
بغض النظر عن أي شيء، ستؤدي هذه الأنواع من المشكلات إلى تقصير دورة الاستغلال الكامل من قبل القراصنة بشكل كبير، مما يستحق اهتمامًا كبيرًا.
![كشف حصري عن كيفية تجاوز حماية Chrome v8 باستخدام تسرب قيمة Sentinel])https://img-cdn.gateio.im/webp-social/moments-ed89289bebf59d4b27f5bffb5511a8c5.webp(
! [الكشف الحصري عن تجاوز Chrome v8 HardenProtect عن طريق تسريب قيمة Sentinel])https://img-cdn.gateio.im/webp-social/moments-0e52075003a8ee2ca492a5fc9f35c36b.webp019283746574839201
! الكشف الحصري عن تجاوز Chrome v8 HardenProtect عن طريق تسريب قيمة Sentinel