Aplikasi nilai Sentinel di Chrome V8 dan dampak keamanannya
Nilai sentinel adalah nilai khusus dalam algoritma, sering digunakan sebagai kondisi penghentian untuk algoritma loop atau rekursi. Kode sumber dari mesin Chrome V8 secara luas menggunakan nilai sentinel. Baru-baru ini, peneliti keamanan menemukan bahwa dengan membocorkan objek nilai sentinel tertentu, dapat memungkinkan eksekusi kode sembarang di dalam sandbox Chrome.
Ada berbagai objek bawaan dalam V8 yang seharusnya tidak bocor ke lingkungan JavaScript. Selain objek TheHole yang telah terungkap sebelumnya, kebocoran objek Uninitialized Oddball juga dapat menyebabkan masalah keamanan. Metode ini pertama kali muncul dalam Issue1352549, dan masih dapat digunakan dalam versi terbaru V8, yang belum diperbaiki oleh Google.
Metode ini memiliki generalitas yang kuat:
Issue1216437(CVE-2021-30551) untuk pertama kalinya memberikan POC untuk kebocoran internal uninitialized oddball.
Issue1314616(CVE-2022-1486) juga secara langsung mengungkapkan objek UninitializedOddball.
Issue1352549( memberikan metode pemanfaatan secara lengkap tanpa CVE).
Kasus-kasus ini menunjukkan bahwa kebocoran nilai Sentinel dapat mempengaruhi beberapa versi perangkat lunak.
Sebagian besar objek native V8 didefinisikan dalam file v8/src/roots/roots.h, diatur bersebelahan dalam memori. Begitu objek-objek ini bocor ke lingkungan JavaScript, kemungkinan dapat terjadi pelarian sandbox.
Untuk memverifikasi metode ini, Anda dapat memodifikasi fungsi native V8 %TheHole() untuk membocorkan objek Uninitialized Oddball.
Metode ini dapat digunakan untuk menghindari perlindungan HardenType V8. Kuncinya adalah fungsi baca JavaScript yang telah dioptimalkan tidak memeriksa atribut objek dengan cukup, yang mengakibatkan kebingungan tipe yang memungkinkan pembacaan dan penulisan sembarangan.
Saran solusi perbaikan adalah dengan menambahkan pemeriksaan pada array map saat fungsi yang dioptimalkan mengembalikan elemen array, untuk menghindari perhitungan offset langsung pada nilai yang dikembalikan.
Perlu dicatat bahwa perangkat lunak seperti Skype mungkin masih memiliki celah semacam ini. Di platform x86, karena kurangnya kompresi alamat, rentang pembacaan dan penulisan sembarang lebih besar. Penyerang mungkin memanfaatkan celah ini untuk mencapai rantai eksploitasi yang lengkap.
Selain Uninitialized Oddball, ada beberapa nilai Sentinel lain di V8 yang mungkin memiliki risiko serupa. Disarankan untuk melakukan penelitian lebih lanjut mengenai masalah keamanan yang disebabkan oleh kebocoran nilai Sentinel lainnya, dan mempertimbangkan untuk memasukkan skenario terkait dalam pengujian fuzz.
Apakah masalah tersebut secara resmi dikategorikan sebagai kerentanan keamanan atau tidak, hal itu dapat secara signifikan memperpendek periode bagi penyerang untuk mencapai eksploitasi penuh, sehingga layak mendapatkan 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
5
Posting ulang
Bagikan
Komentar
0/400
LowCapGemHunter
· 08-05 12:29
Ada celah lagi, v8 segera perbaiki
Lihat AsliBalas0
DegenWhisperer
· 08-04 10:02
Ah, mengapa Google belum diperbaiki? Makanan yang buruk.
Lihat AsliBalas0
ApyWhisperer
· 08-04 09:59
Chrome terjebak To da moon masih renyah
Lihat AsliBalas0
MidsommarWallet
· 08-04 09:49
Ini lagi kesalahan chrome = = Hanya ini keamanannya?
Kebocoran nilai Sentinel pada mesin Chrome V8 menyebabkan risiko pelarian sandbox
Aplikasi nilai Sentinel di Chrome V8 dan dampak keamanannya
Nilai sentinel adalah nilai khusus dalam algoritma, sering digunakan sebagai kondisi penghentian untuk algoritma loop atau rekursi. Kode sumber dari mesin Chrome V8 secara luas menggunakan nilai sentinel. Baru-baru ini, peneliti keamanan menemukan bahwa dengan membocorkan objek nilai sentinel tertentu, dapat memungkinkan eksekusi kode sembarang di dalam sandbox Chrome.
Ada berbagai objek bawaan dalam V8 yang seharusnya tidak bocor ke lingkungan JavaScript. Selain objek TheHole yang telah terungkap sebelumnya, kebocoran objek Uninitialized Oddball juga dapat menyebabkan masalah keamanan. Metode ini pertama kali muncul dalam Issue1352549, dan masih dapat digunakan dalam versi terbaru V8, yang belum diperbaiki oleh Google.
Metode ini memiliki generalitas yang kuat:
Issue1216437(CVE-2021-30551) untuk pertama kalinya memberikan POC untuk kebocoran internal uninitialized oddball.
Issue1314616(CVE-2022-1486) juga secara langsung mengungkapkan objek UninitializedOddball.
Issue1352549( memberikan metode pemanfaatan secara lengkap tanpa CVE).
Kasus-kasus ini menunjukkan bahwa kebocoran nilai Sentinel dapat mempengaruhi beberapa versi perangkat lunak.
Sebagian besar objek native V8 didefinisikan dalam file v8/src/roots/roots.h, diatur bersebelahan dalam memori. Begitu objek-objek ini bocor ke lingkungan JavaScript, kemungkinan dapat terjadi pelarian sandbox.
Untuk memverifikasi metode ini, Anda dapat memodifikasi fungsi native V8 %TheHole() untuk membocorkan objek Uninitialized Oddball.
Metode ini dapat digunakan untuk menghindari perlindungan HardenType V8. Kuncinya adalah fungsi baca JavaScript yang telah dioptimalkan tidak memeriksa atribut objek dengan cukup, yang mengakibatkan kebingungan tipe yang memungkinkan pembacaan dan penulisan sembarangan.
Saran solusi perbaikan adalah dengan menambahkan pemeriksaan pada array map saat fungsi yang dioptimalkan mengembalikan elemen array, untuk menghindari perhitungan offset langsung pada nilai yang dikembalikan.
Perlu dicatat bahwa perangkat lunak seperti Skype mungkin masih memiliki celah semacam ini. Di platform x86, karena kurangnya kompresi alamat, rentang pembacaan dan penulisan sembarang lebih besar. Penyerang mungkin memanfaatkan celah ini untuk mencapai rantai eksploitasi yang lengkap.
Selain Uninitialized Oddball, ada beberapa nilai Sentinel lain di V8 yang mungkin memiliki risiko serupa. Disarankan untuk melakukan penelitian lebih lanjut mengenai masalah keamanan yang disebabkan oleh kebocoran nilai Sentinel lainnya, dan mempertimbangkan untuk memasukkan skenario terkait dalam pengujian fuzz.
Apakah masalah tersebut secara resmi dikategorikan sebagai kerentanan keamanan atau tidak, hal itu dapat secara signifikan memperpendek periode bagi penyerang untuk mencapai eksploitasi penuh, sehingga layak mendapatkan perhatian yang tinggi.