Menyelidiki cara melewati mekanisme HardenProtect Chrome v8 melalui kebocoran Nilai Sentinel
Pendahuluan
Nilai sentinel adalah jenis nilai khusus dalam algoritma, sering digunakan sebagai kondisi penghentian untuk algoritma loop atau rekursif. Nilai khusus ini banyak digunakan dalam kode sumber Chrome. Penelitian terbaru menunjukkan bahwa dengan membocorkan objek TheHole, beberapa kerentanan eksekusi kode arbitrer dalam sandbox Chrome dapat dicapai. Artikel ini akan membahas objek terkait lainnya - Uninitialized Oddball, serta bagaimana objek ini digunakan untuk menghindari mekanisme keamanan Chrome.
Perlu dicatat bahwa versi terbaru dari mesin V8 masih memiliki masalah ini. Metode ini memiliki kegunaan yang cukup umum, dan mungkin mempengaruhi tingkat kesulitan dalam mengeksploitasi berbagai kerentanan sejarah.
Nilai Sentinel di V8
Dalam kode sumber V8, banyak objek bawaan didefinisikan, dan mereka diatur bersebelahan dalam memori. Jika objek-objek ini secara keliru diekspos ke lingkungan JavaScript, itu dapat menyebabkan pelarian dari sandbox. Kebocoran objek TheHole yang disebutkan sebelumnya adalah contoh klasik.
Kita dapat memverifikasi hal ini dengan memodifikasi fungsi bawaan V8. Misalnya, dengan mengubah offset fungsi %TheHole() agar mengembalikan objek Uninitialized Oddball.
Menghindari perlindungan HardenType
Menggunakan objek Uninitialized Oddball dapat mewujudkan pembacaan memori yang relatif sewenang-wenang. Kuncinya adalah bahwa kode JavaScript yang dioptimalkan tidak memeriksa atribut objek dengan benar, langsung menghitung offset dan mengakses elemen array sesuai dengan semantik JavaScript, sehingga menyebabkan kebingungan tipe.
Solusi perbaikan yang disarankan adalah dengan menambahkan pemeriksaan terhadap array map saat mengoptimalkan fungsi yang mengembalikan elemen array, untuk menghindari perhitungan offset secara langsung.
Peringatan Risiko PatchGap
Analisis menemukan bahwa beberapa perangkat lunak mungkin memiliki masalah PatchGap, yang belum diperbaiki. Sebagai contoh, Skype, karena file-nya yang besar dan dimuat langsung ke memori, penyerang mungkin dapat memanfaatkan dengan membaca dan menulis di alamat tetap.
Pemaparan metode bypass baru ini dapat mengurangi kesulitan dalam memanfaatkan beberapa kerentanan sejarah. Disarankan agar pihak terkait mengevaluasi kembali perangkat lunak dan kerentanan yang terpengaruh.
Ringkasan
Artikel ini secara singkat membahas kemungkinan pembacaan arbitrer melalui kebocoran nilai Sentinel seperti Uninitialized Oddball. Di V8 juga terdapat nilai Sentinel lain yang mungkin memiliki risiko keamanan serupa. Ini mengingatkan kita:
Kebocoran Uninitialized Oddball lainnya dapat menyebabkan pelarian sandbox V8
Penentuan keamanan untuk masalah semacam ini masih tidak jelas.
Dapat mempertimbangkan untuk menambahkan nilai Sentinel sebagai variabel dalam pengujian fuzzer
Bagaimanapun juga, jenis masalah ini dapat secara signifikan memperpendek siklus pemanfaatan lengkap oleh penyerang, dan harus diperhatikan dengan serius.
Halaman ini mungkin berisi konten pihak ketiga, yang disediakan untuk tujuan informasi saja (bukan pernyataan/jaminan) dan tidak boleh dianggap sebagai dukungan terhadap pandangannya oleh Gate, atau sebagai nasihat keuangan atau profesional. Lihat Penafian untuk detailnya.
Kerentanan kebocoran Nilai Sentinel pada mesin Chrome V8 dapat memungkinkan pelarian dari kotak pasir.
Menyelidiki cara melewati mekanisme HardenProtect Chrome v8 melalui kebocoran Nilai Sentinel
Pendahuluan
Nilai sentinel adalah jenis nilai khusus dalam algoritma, sering digunakan sebagai kondisi penghentian untuk algoritma loop atau rekursif. Nilai khusus ini banyak digunakan dalam kode sumber Chrome. Penelitian terbaru menunjukkan bahwa dengan membocorkan objek TheHole, beberapa kerentanan eksekusi kode arbitrer dalam sandbox Chrome dapat dicapai. Artikel ini akan membahas objek terkait lainnya - Uninitialized Oddball, serta bagaimana objek ini digunakan untuk menghindari mekanisme keamanan Chrome.
Perlu dicatat bahwa versi terbaru dari mesin V8 masih memiliki masalah ini. Metode ini memiliki kegunaan yang cukup umum, dan mungkin mempengaruhi tingkat kesulitan dalam mengeksploitasi berbagai kerentanan sejarah.
Nilai Sentinel di V8
Dalam kode sumber V8, banyak objek bawaan didefinisikan, dan mereka diatur bersebelahan dalam memori. Jika objek-objek ini secara keliru diekspos ke lingkungan JavaScript, itu dapat menyebabkan pelarian dari sandbox. Kebocoran objek TheHole yang disebutkan sebelumnya adalah contoh klasik.
Kita dapat memverifikasi hal ini dengan memodifikasi fungsi bawaan V8. Misalnya, dengan mengubah offset fungsi %TheHole() agar mengembalikan objek Uninitialized Oddball.
Menghindari perlindungan HardenType
Menggunakan objek Uninitialized Oddball dapat mewujudkan pembacaan memori yang relatif sewenang-wenang. Kuncinya adalah bahwa kode JavaScript yang dioptimalkan tidak memeriksa atribut objek dengan benar, langsung menghitung offset dan mengakses elemen array sesuai dengan semantik JavaScript, sehingga menyebabkan kebingungan tipe.
Solusi perbaikan yang disarankan adalah dengan menambahkan pemeriksaan terhadap array map saat mengoptimalkan fungsi yang mengembalikan elemen array, untuk menghindari perhitungan offset secara langsung.
Peringatan Risiko PatchGap
Analisis menemukan bahwa beberapa perangkat lunak mungkin memiliki masalah PatchGap, yang belum diperbaiki. Sebagai contoh, Skype, karena file-nya yang besar dan dimuat langsung ke memori, penyerang mungkin dapat memanfaatkan dengan membaca dan menulis di alamat tetap.
Pemaparan metode bypass baru ini dapat mengurangi kesulitan dalam memanfaatkan beberapa kerentanan sejarah. Disarankan agar pihak terkait mengevaluasi kembali perangkat lunak dan kerentanan yang terpengaruh.
Ringkasan
Artikel ini secara singkat membahas kemungkinan pembacaan arbitrer melalui kebocoran nilai Sentinel seperti Uninitialized Oddball. Di V8 juga terdapat nilai Sentinel lain yang mungkin memiliki risiko keamanan serupa. Ini mengingatkan kita:
Bagaimanapun juga, jenis masalah ini dapat secara signifikan memperpendek siklus pemanfaatan lengkap oleh penyerang, dan harus diperhatikan dengan serius.