Melalui kebocoran Sentinel Value melewati Chrome v8 HardenProtect
Pendahuluan
Nilai Sentinel adalah nilai khusus dalam algoritma, biasanya ada sebagai kondisi terminasi dalam algoritma loop atau rekursi. Dalam kode sumber Chrome, terdapat banyak nilai Sentinel. Sebelumnya ada penelitian yang menjelaskan bagaimana melakukan eksekusi kode arbitrer di dalam sandbox dengan membocorkan objek TheHole. Tim Google segera memperbarui perbaikan terkait.
Selain objek TheHole, ada banyak objek asli lain di v8 yang seharusnya tidak bocor ke JS. Artikel ini akan membahas objek Uninitialized Oddball, yang saat ini masih dapat digunakan di versi terbaru V8. Perlu dicatat bahwa metode ini memiliki tingkat universalitas tertentu dan telah muncul dalam beberapa kerentanan.
Nilai Sentinel di V8
Sebagian besar objek native v8 didefinisikan dalam file v8/src/roots/roots.h, objek-objek ini tersusun berurutan dalam memori. Begitu objek native yang seharusnya tidak bocor bocor ke dalam Javascript, eksekusi kode arbitrer dalam sandbox dapat dilakukan.
Untuk memverifikasi metode ini, kita dapat memodifikasi fungsi native v8 untuk membocorkan Uninitialized Oddball ke dalam JavaScript. Secara spesifik, kita dapat mengubah offset relatif isolate dalam fungsi %TheHole().
Menghindari HardenType
Memanfaatkan Uninitialized Oddball dapat mencapai pembacaan dan penulisan yang relatif sembarangan. Kuncinya adalah dalam fungsi baca JavaScript yang telah dioptimalkan, yang hanya memeriksa apakah atribut prop dari obj benar, tetapi tidak memeriksa Value yang menggunakan obj.prop sebagai kunci, melainkan langsung menghitung offset sesuai dengan semantik JavaScript untuk mendapatkan nilai dari array. Ini menyebabkan kebingungan tipe saat perhitungan, yang memungkinkan pembacaan sembarangan.
Karena Uninitialized Oddball diurutkan lebih awal dan lebih primitif dalam memori v8, dibandingkan dengan objek TheHole, lebih mudah untuk dipalsukan, ini adalah metode pilihan untuk mengatasi perbaikan setelah TheHole.
Saran perbaikan adalah dengan menambahkan pemeriksaan terhadap array map saat fungsi yang sudah dioptimalkan mengembalikan elemen array, untuk menghindari perhitungan offset langsung yang mengembalikan nilai.
Peringatan Risiko PatchGap
Selain memperhatikan celah sejarah, juga perlu memperhatikan celah yang diam-diam diperbaiki oleh vendor dalam komponen dasar. Saat ini, Skype masih belum memperbaiki celah tersebut. Metode pemanfaatan sedikit berbeda di x86 dan x64, tetapi keduanya dapat mencapai pembacaan dan penulisan sembarang.
PatchGap kali ini tidak hanya terkait dengan Issue1352549, publikasi metode baru juga secara signifikan mengurangi kesulitan eksploitasi kerentanan serupa. Hacker hampir tidak perlu melakukan penelitian untuk menyelesaikan eksploitasi lengkap dari kerentanan Uninitialized Oddball yang sebelumnya bocor.
Ringkasan
Masih ada banyak nilai Sentinel lainnya di v8, mungkin ada masalah serupa. Ini memberi kita beberapa wawasan:
Apakah kebocoran Uninitialized Oddball lainnya juga mudah untuk diwujudkan RCE v8.
Apakah masalah semacam ini seharusnya secara resmi dianggap sebagai masalah keamanan masih menjadi perdebatan.
Saat melakukan pengujian fuzz, mungkin perlu mempertimbangkan untuk menambahkan berbagai nilai Sentinel sebagai variabel.
Bagaimanapun, masalah seperti ini akan sangat memperpendek siklus eksploitasi penuh para hacker. Kita harus waspada terhadap ini.
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.
9 Suka
Hadiah
9
6
Bagikan
Komentar
0/400
MetaMaskVictim
· 6jam yang lalu
Saya kembali terjebak dalam masalah v8.
Lihat AsliBalas0
gas_fee_therapist
· 08-05 17:35
v8 sekali lagi gagal, keamanan semakin buruk.
Lihat AsliBalas0
GreenCandleCollector
· 08-05 17:34
Celah ini cukup hardcore, ya.
Lihat AsliBalas0
LightningPacketLoss
· 08-05 17:32
Bug ini sudah diperbaiki lagi. Ruang server kita harus segera diperbaiki.
Lihat AsliBalas0
ChainMelonWatcher
· 08-05 17:32
Ah ini... Dato' Lubang sekali lagi mengeluarkan karya baru.
Lihat AsliBalas0
ImpermanentLossFan
· 08-05 17:31
Saya terkejut v8 ternyata masih memiliki celah seperti ini
Metode baru untuk mengeksploitasi kerentanan Chrome v8: membocorkan implementasi Oddball yang tidak diinisialisasi untuk melarikan diri dari sandbox
Melalui kebocoran Sentinel Value melewati Chrome v8 HardenProtect
Pendahuluan
Nilai Sentinel adalah nilai khusus dalam algoritma, biasanya ada sebagai kondisi terminasi dalam algoritma loop atau rekursi. Dalam kode sumber Chrome, terdapat banyak nilai Sentinel. Sebelumnya ada penelitian yang menjelaskan bagaimana melakukan eksekusi kode arbitrer di dalam sandbox dengan membocorkan objek TheHole. Tim Google segera memperbarui perbaikan terkait.
Selain objek TheHole, ada banyak objek asli lain di v8 yang seharusnya tidak bocor ke JS. Artikel ini akan membahas objek Uninitialized Oddball, yang saat ini masih dapat digunakan di versi terbaru V8. Perlu dicatat bahwa metode ini memiliki tingkat universalitas tertentu dan telah muncul dalam beberapa kerentanan.
Nilai Sentinel di V8
Sebagian besar objek native v8 didefinisikan dalam file v8/src/roots/roots.h, objek-objek ini tersusun berurutan dalam memori. Begitu objek native yang seharusnya tidak bocor bocor ke dalam Javascript, eksekusi kode arbitrer dalam sandbox dapat dilakukan.
Untuk memverifikasi metode ini, kita dapat memodifikasi fungsi native v8 untuk membocorkan Uninitialized Oddball ke dalam JavaScript. Secara spesifik, kita dapat mengubah offset relatif isolate dalam fungsi %TheHole().
Menghindari HardenType
Memanfaatkan Uninitialized Oddball dapat mencapai pembacaan dan penulisan yang relatif sembarangan. Kuncinya adalah dalam fungsi baca JavaScript yang telah dioptimalkan, yang hanya memeriksa apakah atribut prop dari obj benar, tetapi tidak memeriksa Value yang menggunakan obj.prop sebagai kunci, melainkan langsung menghitung offset sesuai dengan semantik JavaScript untuk mendapatkan nilai dari array. Ini menyebabkan kebingungan tipe saat perhitungan, yang memungkinkan pembacaan sembarangan.
Karena Uninitialized Oddball diurutkan lebih awal dan lebih primitif dalam memori v8, dibandingkan dengan objek TheHole, lebih mudah untuk dipalsukan, ini adalah metode pilihan untuk mengatasi perbaikan setelah TheHole.
Saran perbaikan adalah dengan menambahkan pemeriksaan terhadap array map saat fungsi yang sudah dioptimalkan mengembalikan elemen array, untuk menghindari perhitungan offset langsung yang mengembalikan nilai.
Peringatan Risiko PatchGap
Selain memperhatikan celah sejarah, juga perlu memperhatikan celah yang diam-diam diperbaiki oleh vendor dalam komponen dasar. Saat ini, Skype masih belum memperbaiki celah tersebut. Metode pemanfaatan sedikit berbeda di x86 dan x64, tetapi keduanya dapat mencapai pembacaan dan penulisan sembarang.
PatchGap kali ini tidak hanya terkait dengan Issue1352549, publikasi metode baru juga secara signifikan mengurangi kesulitan eksploitasi kerentanan serupa. Hacker hampir tidak perlu melakukan penelitian untuk menyelesaikan eksploitasi lengkap dari kerentanan Uninitialized Oddball yang sebelumnya bocor.
Ringkasan
Masih ada banyak nilai Sentinel lainnya di v8, mungkin ada masalah serupa. Ini memberi kita beberapa wawasan:
Apakah kebocoran Uninitialized Oddball lainnya juga mudah untuk diwujudkan RCE v8.
Apakah masalah semacam ini seharusnya secara resmi dianggap sebagai masalah keamanan masih menjadi perdebatan.
Saat melakukan pengujian fuzz, mungkin perlu mempertimbangkan untuk menambahkan berbagai nilai Sentinel sebagai variabel.
Bagaimanapun, masalah seperti ini akan sangat memperpendek siklus eksploitasi penuh para hacker. Kita harus waspada terhadap ini.