Penelitian Kerentanan Sentinel Value pada Mesin V8: Mengakali Perlindungan untuk Melaksanakan Kode Sembarangan

robot
Pembuatan abstrak sedang berlangsung

Menyelidiki Penggunaan Nilai Sentinel untuk Mengatasi Mekanisme Perlindungan Chrome V8

Nilai sentinel adalah nilai khusus dalam algoritma, biasanya digunakan sebagai kondisi penghentian untuk algoritma perulangan atau rekursif. Dalam kode sumber Chrome terdapat berbagai nilai sentinel. Penelitian sebelumnya menunjukkan bahwa dengan membocorkan objek TheHole, eksekusi kode arbitrer dalam sandbox untuk beberapa CVE dapat dicapai. Tim Google dengan cepat memperbarui CVE terkait di GitHub sekitar seminggu setelah kami menerbitkan penjelasan tentang cara melewati mitigasi tersebut.

Dari kode sumber Chrome, dapat dilihat bahwa ada perbaikan mitigasi yang ditujukan pada objek TheHole yang menyebabkan eksekusi kode sembarangan. Namun, sebenarnya, masih banyak objek asli lain di V8 yang tidak seharusnya terungkap ke dalam JS. Artikel ini akan membahas objek Uninitialized Oddball, yang metode bypass-nya pertama kali muncul di Issue1352549. Perlu dicatat bahwa saat ini metode ini masih dapat digunakan di versi terbaru V8, dan Google belum memperbaiki hal ini.

Metode ini memiliki universalitas yang kuat:

  1. Issue1216437(CVE-2021-30551) yang pertama kali diberikan POC adalah kebocoran internal uninitialized oddball.

  2. Issue1314616(CVE-2022-1486) juga secara langsung mengungkapkan UninitializedOddball.

  3. Dampak dari Issue1352549(NoCVE) tidak boleh diabaikan.

Semua ini menunjukkan perlunya meninjau kembali perangkat lunak yang mungkin terpengaruh oleh PatchGap.

Pengungkapan Eksklusif tentang Cara Menghindari Chrome v8 HardenProtect dengan Membocorkan Nilai Sentinel

Nilai Sentinel di V8

Sebagian besar objek bawaan V8 didefinisikan dalam file v8/src/roots/roots.h, dan mereka disusun berdampingan dalam memori. Begitu objek bawaan yang tidak seharusnya bocor ini bocor ke dalam JavaScript, itu dapat menyebabkan eksekusi kode arbitrer di dalam sandbox.

Untuk memverifikasi keefektifan metode ini di versi terbaru V8, kita dapat mengubah fungsi asli V8 %TheHole() agar mengembalikan Uninitialized Oddball.

Eksklusif Mengungkap Cara Menghindari Chrome v8 HardenProtect Melalui Kebocoran Sentinel Value

Menghindari HardenType

Issue1352549 memberikan kode lengkap, setelah kami ekstrak dan sederhanakan, masih dapat mencapai pembacaan relatif sembarang di V8 11.0.0.

Untuk disassembly fungsi read JavaScript yang telah dioptimalkan, dapat dilihat bahwa saat memeriksa obj.prop, tidak ada pemeriksaan terhadap Value yang menggunakan obj.prop sebagai key, melainkan langsung menghitung offset untuk mendapatkan nilai array sesuai dengan semantik JavaScript. Ini menyebabkan kebingungan tipe saat perhitungan, yang memungkinkan pembacaan sembarangan.

Pengungkapan Eksklusif tentang Cara Menghindari Chrome v8 HardenProtect Melalui Kebocoran Nilai Sentinel

Ketika uninitialized_oddball diteruskan, mulai dari obj, akhirnya dalam instruksi vmovsd xmm0,[r9+r11*8+0x7] dilakukan pembacaan sembarang, data disimpan dalam register xmm0.

Karena uninitialized_oddball memiliki urutan yang lebih awal dan lebih primitif dalam memori V8, pemalsuan lebih mudah, sehingga menjadi metode yang lebih disukai untuk melewati. Untuk penulisan sembarangan, dapat merujuk pada analisis konstruksi Issue1352549.

Eksklusif Mengungkap Cara Melalui Kebocoran Nilai Sentinel untuk Menghindari Chrome v8 HardenProtect

Saran perbaikan adalah menambahkan pemeriksaan pada array map saat fungsi yang dioptimalkan mengembalikan elemen array, untuk menghindari perhitungan offset langsung yang mengembalikan nilai array.

Peringatan PatchGap

Setelah menganalisis Issue1352549, kami menyelidiki perangkat lunak yang mungkin memiliki PatchGap, dan menemukan bahwa Skype hingga saat ini belum memperbaiki celah tersebut. Bacaan dan penulisan sembarang di x86 sedikit berbeda, karena tidak ada kompresi alamat, itu langsung relatif terhadap seluruh proses.

Dalam penggunaan Skype, meskipun ASLR telah diaktifkan, karena ukuran file yang besar, hacker hanya perlu membaca dan menulis pada alamat tetap tertentu, sehingga sangat mungkin untuk membaca dan menulis konten file Skype. Menggabungkan dengan pemahaman tradisional seperti analisis PE, tidak sulit untuk menyelesaikan seluruh rantai eksploitasi kerentanan.

Khusus Mengungkap Cara Menghindari Chrome v8 HardenProtect Melalui Kebocoran Nilai Sentinel

PatchGap kali ini tidak hanya melibatkan Issue1352549, tetapi juga publikasi metode bypass baru yang secara signifikan mengurangi kesulitan eksploitasi yang mirip dengan Issue1314616 dan Issue1216437. Hacker hampir tidak perlu mengeluarkan biaya untuk penelitian, untuk dapat melakukan eksploitasi lengkap dari kerentanan uninitialized_oddball yang sebelumnya bocor.

Mengungkap eksklusif cara melewati Chrome v8 HardenProtect melalui kebocoran Sentinel Value

Ringkasan

Artikel ini secara singkat membahas tentang bagaimana melakukan pembacaan arbitrer menggunakan kebocoran uninitialized_Oddball. Di V8, terdapat banyak nilai Sentinel lainnya, dan selama pengujian juga mudah menemui keruntuhan yang bukan int3. Mengingat Uninitialized_Oddball dan TheHole dapat menghindari perlindungan V8, nilai Sentinel lainnya juga mungkin memiliki masalah serupa.

Ini memberi kita beberapa wawasan:

  1. Apakah kebocoran uninitialized_Oddball lainnya juga dapat dengan mudah mencapai RCE V8.

  2. Google dengan cepat memperbaiki bypass TheHole, tetapi masalah memanfaatkan garbage collection untuk melewati ASLR telah lama ditangguhkan, yang menunjukkan apakah masalah serupa dianggap sebagai masalah keamanan resmi masih memiliki batasan yang tidak jelas.

  3. Jika dianggap sebagai masalah keamanan formal, apakah di dalam fuzzer perlu mempertimbangkan untuk menambahkan nilai Sentinel seperti %TheHole/uninitialized_Oddball sebagai variabel, untuk menggali eksploitasi primitif lainnya.

Apakah masalah tersebut secara resmi dianggap sebagai masalah keamanan atau tidak, itu akan sangat memperpendek siklus bagi peretas untuk mencapai pemanfaatan penuh.

Pengungkapan eksklusif tentang cara melewati Chrome v8 HardenProtect melalui kebocoran Sentinel Value

Eksklusif Mengungkap Cara Menghindari Chrome v8 HardenProtect Melalui Kebocoran Nilai Sentinel

Eksklusif: Mengungkap Cara Menghindari Chrome v8 HardenProtect Melalui Kebocoran Nilai Sentinel

Lihat Asli
This page may contain third-party content, which is provided for information purposes only (not representations/warranties) and should not be considered as an endorsement of its views by Gate, nor as financial or professional advice. See Disclaimer for details.
  • Hadiah
  • 6
  • Bagikan
Komentar
0/400
OptionWhisperervip
· 9jam yang lalu
Kelemahan ini parah, detail kecil bisa mematikan.
Lihat AsliBalas0
OnchainFortuneTellervip
· 9jam yang lalu
Bug ini luar biasa
Lihat AsliBalas0
ExpectationFarmervip
· 9jam yang lalu
Celaka, celah benar-benar sulit untuk dicegah!
Lihat AsliBalas0
MysteryBoxBustervip
· 9jam yang lalu
v8 sudah kebablasan lagi, panas banget!
Lihat AsliBalas0
BlockchainFriesvip
· 9jam yang lalu
Sekilas melihat judulnya sudah pusing.
Lihat AsliBalas0
alpha_leakervip
· 9jam yang lalu
Eksekusi kode bull ya, saudara celah.
Lihat AsliBalas0
  • Sematkan
Perdagangkan Kripto Di Mana Saja Kapan Saja
qrCode
Pindai untuk mengunduh aplikasi Gate
Komunitas
Bahasa Indonesia
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)