Analisis Kedalaman Masalah Keamanan Nilai Sentinel pada Mesin Chrome V8

robot
Pembuatan abstrak sedang berlangsung

Membahas secara mendalam risiko keamanan Sentinel Value dalam mesin Chrome V8

Nilai Sentinel adalah jenis nilai khusus dalam algoritma, biasanya digunakan sebagai kondisi terminasi dalam algoritma loop atau rekursi. Nilai Sentinel digunakan secara luas dalam kode sumber Chrome. Baru-baru ini, peneliti keamanan menemukan bahwa kode eksekusi arbitrer dalam sandbox Chrome dapat dicapai melalui kebocoran objek TheHole. Tim Google dengan cepat memperbaiki kerentanan ini.

Namun, masih ada objek native lain di V8 yang seharusnya tidak terungkap ke JavaScript. Artikel ini akan fokus pada objek Uninitialized Oddball, di mana kebocoran objek ini dapat menyebabkan potensi risiko keamanan yang lebih luas. Saat ini, metode ini masih dapat digunakan di versi terbaru V8, dan Google belum memperbaiki masalah ini.

Perlu dicatat bahwa metode ini memiliki generalitas yang kuat:

  1. CVE-2021-30551 untuk pertama kalinya mengajukan poc yang mengungkapkan internal uninitialized oddball.

  2. POC dari CVE-2022-1486 juga secara langsung membocorkan UninitializedOddball.

  3. Issue1352549( belum dialokasikan CVE) menunjukkan kode eksploitasi lengkap.

Kasus-kasus ini menunjukkan dengan jelas perlunya pemeriksaan menyeluruh terhadap perangkat lunak yang mungkin terpengaruh. Hingga saat ini, Skype belum memperbaiki kerentanan tersebut.

Nilai Sentinel di V8

Sebagian besar objek native V8 didefinisikan dalam file v8/src/roots/roots.h, objek-objek ini disusun bersebelahan dalam memori. Begitu objek native yang seharusnya tidak bocor terpapar ke JavaScript, mungkin akan memungkinkan eksekusi kode sembarangan dalam sandbox.

Untuk memverifikasi efektivitas metode ini di V8 versi terbaru, kita dapat memodifikasi fungsi native V8 untuk membocorkan Uninitialized Oddball ke dalam JavaScript. Cara spesifiknya adalah dengan mengubah offset relatif terhadap isolate dalam fungsi %TheHole() sehingga mengembalikan Uninitialized Oddball.

Eksklusif Mengungkap Cara Menghindari Chrome v8 HardenProtect melalui Kebocoran Sentinel Value

Menghindari perlindungan HardenType

Dengan menyederhanakan kode yang diberikan dalam Issue1352549, kita dapat mencapai pembacaan relatif yang hampir sembarang di versi V8 11.0.0:

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

Ketika %TheHole() mengembalikan UninitializedOddball, fungsi read JavaScript yang dioptimalkan akan langsung menghitung offset sesuai dengan semantik JavaScript, tanpa memeriksa Value dari obj.prop, yang mengakibatkan kebingungan tipe dan memungkinkan pembacaan sembarangan.

Eksklusif Mengungkap Cara Menghindari Chrome v8 HardenProtect Melalui Kebocoran Nilai Sentinel

Mirip dengan objek TheHole, karena uninitialized_oddball diurutkan lebih awal dan lebih primitif dalam memori V8, lebih mudah untuk dipalsukan. Setelah langkah-langkah mitigasi TheHole dilalui, metode ini menjadi skema bypass yang diutamakan.

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

Pengungkapan Eksklusif Cara Menghindari Chrome v8 HardenProtect melalui Kebocoran Nilai Sentinel

Peringatan PatchGap

Setelah menganalisis Issue1352549, kami menemukan bahwa Skype saat ini masih belum memperbaiki kerentanan tersebut. Di lingkungan x86, pembacaan dan penulisan sembarangan sedikit berbeda: karena tidak ada kompresi alamat, pembacaan dan penulisan sembarangan langsung berkaitan dengan seluruh proses.

Meskipun Skype telah mengaktifkan ASLR, namun karena file-nya yang besar, jika langsung ditempatkan dalam memori 4GB, penyerang hanya perlu membaca dan menulis pada alamat tertentu, sehingga memiliki kemungkinan besar untuk membaca dan menulis konten file Skype. Menggabungkan metode tradisional seperti analisis PE, menyelesaikan seluruh rantai eksploitasi bukanlah hal yang sulit.

Eksklusif: Mengungkap Cara Melewati Chrome v8 HardenProtect melalui Kebocoran Sentinel Value

PatchGap kali ini tidak hanya melibatkan Issue1352549, tetapi juga pengungkapan metode bypass baru yang secara signifikan mengurangi kesulitan eksploitasi terkait CVE-2022-1486 dan CVE-2021-30551. Penyerang hampir tidak perlu melakukan penelitian tambahan untuk sepenuhnya mengeksploitasi kerentanan yang mengungkap uninitialized_oddball.

Eksklusif Mengungkap Cara Menghindari Chrome v8 HardenProtect Melalui Kebocoran Sentinel Value

Ringkasan

Artikel ini secara singkat membahas tentang bagaimana mengakses primitif secara sembarangan melalui kebocoran uninitialized_Oddball dalam nilai Sentinel. Ada juga nilai Sentinel lain di V8, yang sering mengalami crash selama pengujian. Mengingat Uninitialized_Oddball dan TheHole dapat digunakan untuk melewati batasan di V8, ada alasan untuk curiga bahwa nilai Sentinel lainnya juga dapat menyebabkan masalah serupa.

Ini memberikan kita wawasan berikut:

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

  2. Google dengan cepat memperbaiki TheHole bypass, tetapi penundaan jangka panjang dalam memanfaatkan pengumpulan sampah untuk mencapai bypass ASLR menunjukkan bahwa masih ada batasan yang tidak jelas tentang apakah masalah semacam itu dianggap sebagai masalah keamanan resmi.

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

Bagaimanapun, masalah semacam ini akan sangat memperpendek periode bagi penyerang untuk mencapai pemanfaatan penuh.

Penyingkapan eksklusif tentang cara melewati Chrome v8 HardenProtect dengan membocorkan Sentinel Value

Eksklusif mengungkap cara melewati Sentinel Value yang bocor untuk Chrome v8 HardenProtect

Eksklusif Mengungkap Cara Menghindari Chrome v8 HardenProtect dengan Membocorkan Sentinel Value

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
  • 3
  • Bagikan
Komentar
0/400
GateUser-afe07a92vip
· 18jam yang lalu
Apa yang dilakukan Google? Ini juga bocor.
Lihat AsliBalas0
SelfRuggervip
· 18jam yang lalu
Sepertinya V8 akan mengalami hal besar tahun ini.
Lihat AsliBalas0
SchrodingerGasvip
· 18jam yang lalu
Setelah tidur semalam, V8 masih bekerja, siapa yang akan membayar gas untuk putaran ini?
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)