Meneliti Risiko Keamanan yang Dihasilkan oleh Kebocoran Sentinel Value dalam Mesin Chrome V8
Nilai Sentinel adalah nilai yang digunakan sebagai tanda khusus dalam algoritma, biasanya sebagai kondisi penghentian dalam loop atau rekursi. Dalam kode sumber mesin Chrome V8 terdapat beberapa nilai Sentinel, di mana beberapa di antaranya tidak boleh bocor ke lingkungan JavaScript. Artikel ini akan membahas metode untuk mengatasi mekanisme HardenProtect Chrome V8 dengan membocorkan objek Uninitialized Oddball.
Nilai Sentinel di V8
File roots.h dari sumber V8 mendefinisikan banyak objek bawaan yang disusun bersebelahan di memori. Begitu objek-objek ini bocor ke dalam JavaScript, bisa menyebabkan pelarian sandbox.
Kita dapat memverifikasi hal ini dengan memodifikasi fungsi native V8. Misalnya, mengubah offset fungsi %TheHole() untuk mengembalikan objek Uninitialized Oddball alih-alih objek TheHole.
Menghindari perlindungan HardenType
Menggunakan objek Uninitialized Oddball dapat mencapai pembacaan memori yang relatif sembarangan. Kuncinya terletak pada fungsi baca JavaScript yang dioptimalkan, yang hanya memeriksa apakah atribut prop objek sudah benar, tetapi tidak memeriksa nilai dengan kunci obj.prop. Ini menyebabkan kebingungan tipe selama proses perhitungan, sehingga memungkinkan pembacaan sembarangan.
Analisis kode rakitan yang dioptimalkan menunjukkan bahwa, ketika uninitialized_oddball diberikan, program akan langsung menghitung offset dan membaca data, tanpa melakukan pemeriksaan tipe. Metode ini lebih mudah untuk dibangun dan dimanfaatkan dibandingkan dengan objek TheHole.
Saran perbaikan adalah menambahkan pemeriksaan terhadap array map saat fungsi yang dioptimalkan mengembalikan elemen array, untuk menghindari pengembalian nilai array secara langsung melalui perhitungan offset.
Peringatan Keamanan PatchGap
Selain memperhatikan celah sejarah yang sudah diketahui, kita juga perlu memperhatikan masalah yang diam-diam diperbaiki oleh vendor dalam komponen dasar. Setelah dianalisis, ditemukan bahwa perangkat lunak Skype hingga kini belum memperbaiki celah tersebut. Di platform x86, karena kurangnya kompresi alamat, rentang baca/tulis sembarangan lebih besar, hampir dapat membaca dan menulis seluruh ruang proses.
PatchGap kali ini tidak hanya melibatkan Issue1352549, tetapi juga mencakup Issue1314616 dan Issue1216437 serta kerentanan serupa lainnya. Setelah metode bypass baru dipublikasikan, kesulitan dalam mengeksploitasi kerentanan ini menurun secara signifikan, sehingga penyerang hampir tidak perlu melakukan penelitian tambahan untuk menyelesaikan rantai eksploitasi secara penuh.
Ringkasan
Artikel ini secara singkat membahas metode untuk melakukan pembacaan sembarang melalui kebocoran Uninitialized Oddball. Di V8 juga terdapat beberapa nilai Sentinel lainnya, yang juga dapat menyebabkan masalah serupa. Ini mengingatkan kita:
Kebocoran uninitialized_Oddball lainnya mungkin juga menyebabkan pelarian sandbox V8.
Apakah masalah seperti ini harus dianggap sebagai kerentanan keamanan resmi masih menjadi perdebatan.
Pertimbangkan untuk menambahkan nilai Sentinel sebagai variabel dalam pengujian fuzzing, untuk menemukan metode eksploitasi baru.
Bagaimanapun, jenis masalah ini akan sangat memperpendek siklus bagi penyerang untuk mencapai pemanfaatan penuh, dan harus mendapat perhatian yang tinggi.
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.
12 Suka
Hadiah
12
4
Bagikan
Komentar
0/400
MoonBoi42
· 15jam yang lalu
Sedikit panik, terlalu banyak celah.
Lihat AsliBalas0
SleepyArbCat
· 08-02 05:40
Kucing yang terlalu mengantuk hanya bisa mengetik kode...zZz
Analisis Risiko Keamanan dan Pemanfaatan Kebocoran Nilai Sentinel pada Mesin Chrome V8
Meneliti Risiko Keamanan yang Dihasilkan oleh Kebocoran Sentinel Value dalam Mesin Chrome V8
Nilai Sentinel adalah nilai yang digunakan sebagai tanda khusus dalam algoritma, biasanya sebagai kondisi penghentian dalam loop atau rekursi. Dalam kode sumber mesin Chrome V8 terdapat beberapa nilai Sentinel, di mana beberapa di antaranya tidak boleh bocor ke lingkungan JavaScript. Artikel ini akan membahas metode untuk mengatasi mekanisme HardenProtect Chrome V8 dengan membocorkan objek Uninitialized Oddball.
Nilai Sentinel di V8
File roots.h dari sumber V8 mendefinisikan banyak objek bawaan yang disusun bersebelahan di memori. Begitu objek-objek ini bocor ke dalam JavaScript, bisa menyebabkan pelarian sandbox.
Kita dapat memverifikasi hal ini dengan memodifikasi fungsi native V8. Misalnya, mengubah offset fungsi %TheHole() untuk mengembalikan objek Uninitialized Oddball alih-alih objek TheHole.
Menghindari perlindungan HardenType
Menggunakan objek Uninitialized Oddball dapat mencapai pembacaan memori yang relatif sembarangan. Kuncinya terletak pada fungsi baca JavaScript yang dioptimalkan, yang hanya memeriksa apakah atribut prop objek sudah benar, tetapi tidak memeriksa nilai dengan kunci obj.prop. Ini menyebabkan kebingungan tipe selama proses perhitungan, sehingga memungkinkan pembacaan sembarangan.
Analisis kode rakitan yang dioptimalkan menunjukkan bahwa, ketika uninitialized_oddball diberikan, program akan langsung menghitung offset dan membaca data, tanpa melakukan pemeriksaan tipe. Metode ini lebih mudah untuk dibangun dan dimanfaatkan dibandingkan dengan objek TheHole.
Saran perbaikan adalah menambahkan pemeriksaan terhadap array map saat fungsi yang dioptimalkan mengembalikan elemen array, untuk menghindari pengembalian nilai array secara langsung melalui perhitungan offset.
Peringatan Keamanan PatchGap
Selain memperhatikan celah sejarah yang sudah diketahui, kita juga perlu memperhatikan masalah yang diam-diam diperbaiki oleh vendor dalam komponen dasar. Setelah dianalisis, ditemukan bahwa perangkat lunak Skype hingga kini belum memperbaiki celah tersebut. Di platform x86, karena kurangnya kompresi alamat, rentang baca/tulis sembarangan lebih besar, hampir dapat membaca dan menulis seluruh ruang proses.
PatchGap kali ini tidak hanya melibatkan Issue1352549, tetapi juga mencakup Issue1314616 dan Issue1216437 serta kerentanan serupa lainnya. Setelah metode bypass baru dipublikasikan, kesulitan dalam mengeksploitasi kerentanan ini menurun secara signifikan, sehingga penyerang hampir tidak perlu melakukan penelitian tambahan untuk menyelesaikan rantai eksploitasi secara penuh.
Ringkasan
Artikel ini secara singkat membahas metode untuk melakukan pembacaan sembarang melalui kebocoran Uninitialized Oddball. Di V8 juga terdapat beberapa nilai Sentinel lainnya, yang juga dapat menyebabkan masalah serupa. Ini mengingatkan kita:
Kebocoran uninitialized_Oddball lainnya mungkin juga menyebabkan pelarian sandbox V8.
Apakah masalah seperti ini harus dianggap sebagai kerentanan keamanan resmi masih menjadi perdebatan.
Pertimbangkan untuk menambahkan nilai Sentinel sebagai variabel dalam pengujian fuzzing, untuk menemukan metode eksploitasi baru.
Bagaimanapun, jenis masalah ini akan sangat memperpendek siklus bagi penyerang untuk mencapai pemanfaatan penuh, dan harus mendapat perhatian yang tinggi.