Menganalisis Kerentanan Nilai Sentinel dalam Mesin Chrome V8
Nilai Sentinel adalah nilai khusus dalam algoritma, biasanya digunakan sebagai kondisi penghentian untuk loop atau rekursi. Di dalam mesin Chrome V8 terdapat beberapa nilai Sentinel, yang jika bocor ke dalam lingkungan JavaScript dapat menyebabkan pelarian sandbox. Artikel ini akan membahas bagaimana cara melewati mekanisme perlindungan HardenProtect Chrome V8 dengan membocorkan objek Uninitialized Oddball.
Nilai Sentinel di V8
Sumber kode V8 mendefinisikan beberapa objek bawaan, yang disusun bersebelahan dalam memori. Jika objek-objek ini bocor ke dalam JavaScript, dapat menyebabkan eksekusi kode sembarangan di dalam sandbox. Penelitian sebelumnya telah menunjukkan bahwa kebocoran objek TheHole dapat mewujudkan hal ini, dan objek Uninitialized Oddball yang dibahas dalam artikel ini juga memiliki risiko yang sama.
Kita dapat memverifikasi Uninitialized Oddball di JavaScript dengan memodifikasi fungsi asli V8. Metode spesifiknya adalah dengan mengubah offset relatif isolate dalam fungsi %TheHole() sehingga ia mengembalikan objek Uninitialized Oddball.
Menghindari Perlindungan HardenType
Menggunakan objek Uninitialized Oddball dapat melewati perlindungan HardenType V8, memungkinkan pembacaan dan penulisan yang relatif sembarangan. Kuncinya adalah bahwa kode JavaScript yang dioptimalkan tidak memeriksa jenis elemen array, tetapi langsung menghitung offset dan membaca nilai berdasarkan semantik JavaScript, sehingga menyebabkan kebingungan jenis.
Di bawah arsitektur x86, karena tidak ada kompresi alamat, pembacaan dan penulisan sembarangan adalah relatif terhadap seluruh proses. Ini berarti dalam beberapa perangkat lunak seperti Skype, penyerang dapat memanfaatkan hal ini untuk membaca dan menulis ke area memori tertentu, sehingga menyelesaikan seluruh rantai eksploitasi.
Dampak Keamanan
Penyebaran metode eksploitasi kerentanan ini secara signifikan mengurangi kesulitan dalam memanfaatkan kerentanan serupa. Penyerang hampir tidak perlu melakukan penelitian tambahan untuk mencapai eksploitasi yang lengkap, yang merupakan ancaman bagi banyak perangkat lunak yang belum diperbaiki.
Selain itu, ada nilai Sentinel lain di V8 yang juga dapat menyebabkan masalah serupa. Ini mengingatkan kita:
Apakah kebocoran nilai Sentinel lainnya juga dapat dengan mudah mengimplementasikan eksekusi kode jarak jauh V8?
Apakah pertanyaan semacam ini harus secara resmi dicatat sebagai celah keamanan?
Apakah dalam pengujian fuzz perlu mempertimbangkan untuk memasukkan berbagai nilai Sentinel sebagai variabel dalam ruang lingkup pengujian?
Bagaimanapun, masalah semacam ini akan secara signifikan memperpendek periode bagi penyerang untuk mencapai pemanfaatan penuh, yang sangat penting untuk diperhatikan oleh peneliti keamanan dan pengembang.
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.
11 Suka
Hadiah
11
9
Posting ulang
Bagikan
Komentar
0/400
NeverPresent
· 20jam yang lalu
Terlalu kejam untuk kondisi loop.
Lihat AsliBalas0
MemeEchoer
· 08-12 21:40
Sekali lagi, Master Celah sedang beraksi
Lihat AsliBalas0
GateUser-afe07a92
· 08-12 13:57
Wah, v8 mengalami celah lagi
Lihat AsliBalas0
CryptoCross-TalkClub
· 08-10 04:39
Kelemahan ini sama tidak nyatanya dengan posisi stop loss saat pasar pertukaran besar jatuh.
Lihat AsliBalas0
PoetryOnChain
· 08-10 02:07
Ada celah lagi
Lihat AsliBalas0
FudVaccinator
· 08-10 02:06
Satu lagi lubang V8, teman-teman, ayo!
Lihat AsliBalas0
MelonField
· 08-10 01:58
Kekurangan ini cukup serius, kali ini Google sudah doomed.
Analisis Kerentanan Nilai Sentinel pada Mesin Chrome V8: Kebocoran Objek Oddball yang Tidak Diinisialisasi dan Pelarian Sandbox
Menganalisis Kerentanan Nilai Sentinel dalam Mesin Chrome V8
Nilai Sentinel adalah nilai khusus dalam algoritma, biasanya digunakan sebagai kondisi penghentian untuk loop atau rekursi. Di dalam mesin Chrome V8 terdapat beberapa nilai Sentinel, yang jika bocor ke dalam lingkungan JavaScript dapat menyebabkan pelarian sandbox. Artikel ini akan membahas bagaimana cara melewati mekanisme perlindungan HardenProtect Chrome V8 dengan membocorkan objek Uninitialized Oddball.
Nilai Sentinel di V8
Sumber kode V8 mendefinisikan beberapa objek bawaan, yang disusun bersebelahan dalam memori. Jika objek-objek ini bocor ke dalam JavaScript, dapat menyebabkan eksekusi kode sembarangan di dalam sandbox. Penelitian sebelumnya telah menunjukkan bahwa kebocoran objek TheHole dapat mewujudkan hal ini, dan objek Uninitialized Oddball yang dibahas dalam artikel ini juga memiliki risiko yang sama.
Kita dapat memverifikasi Uninitialized Oddball di JavaScript dengan memodifikasi fungsi asli V8. Metode spesifiknya adalah dengan mengubah offset relatif isolate dalam fungsi %TheHole() sehingga ia mengembalikan objek Uninitialized Oddball.
Menghindari Perlindungan HardenType
Menggunakan objek Uninitialized Oddball dapat melewati perlindungan HardenType V8, memungkinkan pembacaan dan penulisan yang relatif sembarangan. Kuncinya adalah bahwa kode JavaScript yang dioptimalkan tidak memeriksa jenis elemen array, tetapi langsung menghitung offset dan membaca nilai berdasarkan semantik JavaScript, sehingga menyebabkan kebingungan jenis.
Di bawah arsitektur x86, karena tidak ada kompresi alamat, pembacaan dan penulisan sembarangan adalah relatif terhadap seluruh proses. Ini berarti dalam beberapa perangkat lunak seperti Skype, penyerang dapat memanfaatkan hal ini untuk membaca dan menulis ke area memori tertentu, sehingga menyelesaikan seluruh rantai eksploitasi.
Dampak Keamanan
Penyebaran metode eksploitasi kerentanan ini secara signifikan mengurangi kesulitan dalam memanfaatkan kerentanan serupa. Penyerang hampir tidak perlu melakukan penelitian tambahan untuk mencapai eksploitasi yang lengkap, yang merupakan ancaman bagi banyak perangkat lunak yang belum diperbaiki.
Selain itu, ada nilai Sentinel lain di V8 yang juga dapat menyebabkan masalah serupa. Ini mengingatkan kita:
Apakah kebocoran nilai Sentinel lainnya juga dapat dengan mudah mengimplementasikan eksekusi kode jarak jauh V8?
Apakah pertanyaan semacam ini harus secara resmi dicatat sebagai celah keamanan?
Apakah dalam pengujian fuzz perlu mempertimbangkan untuk memasukkan berbagai nilai Sentinel sebagai variabel dalam ruang lingkup pengujian?
Bagaimanapun, masalah semacam ini akan secara signifikan memperpendek periode bagi penyerang untuk mencapai pemanfaatan penuh, yang sangat penting untuk diperhatikan oleh peneliti keamanan dan pengembang.