Analisis eksploitasi kerentanan Sentinel Value pada mesin Chrome V8: RCE dapat dicapai tanpa penelitian tambahan.

robot
Pembuatan abstrak sedang berlangsung

Analisis Eksploitasi Kerentanan Nilai Sentinel di Mesin Chrome V8

Nilai Sentinel adalah jenis nilai khusus dalam algoritma, biasanya digunakan sebagai kondisi penghentian dalam algoritma loop atau rekursi. Dalam kode sumber Chrome terdapat banyak nilai Sentinel. Sebelumnya, ada penelitian yang menunjukkan bahwa dengan membocorkan objek TheHole, dapat dilakukan eksekusi kode sembarangan dalam sandbox Chrome. Tim Google kemudian memperbaiki kerentanan terkait.

Namun, masih ada objek bawaan lain di V8 yang seharusnya tidak bocor ke JS. Artikel ini membahas objek Uninitialized Oddball, yang metode kebocorannya masih dapat digunakan untuk melewati sandbox di versi terbaru V8.

Perlu dicatat bahwa metode ini memiliki tingkat universalitas tertentu:

  1. CVE-2021-30551 PoC awal adalah kebocoran internal uninitialized oddball.

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

  3. Issue1352549 ( tidak dialokasikan CVE) menjelaskan metode pemanfaatan secara rinci.

Kasus-kasus ini menunjukkan bahwa kemungkinan serangan menggunakan kebocoran Uninitialized Oddball perlu mendapat perhatian.

Nilai Sentinel di V8

Sebagian besar objek native V8 didefinisikan dalam file v8/src/roots/roots.h, dan mereka tersusun bersebelahan di dalam memori. Setelah objek native yang tidak seharusnya bocor ini bocor ke dalam JavaScript, mungkin dapat mengimplementasikan eksekusi kode arbitrer di dalam sandbox.

Untuk memverifikasi ini, Anda dapat mengubah nilai kembali dari fungsi native V8 %TheHole() menjadi Uninitialized Oddball.

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

Menghindari Perlindungan HardenType

Issue1352549 memberikan kode bypass yang lengkap. Logika inti setelah disederhanakan adalah sebagai berikut:

javascript function read(obj, idx) { return obj[idx]; }

let uninitialized = %TheHole(); let arr = [1.1]; let res = read(uninitialized, 0x12345); %DebugPrint(res);

Kode ini masih dapat mencapai pembacaan relatif yang hampir tidak terbatas di versi V8 11.0.0 yang terbaru.

Pengungkapan Eksklusif Cara Membocorkan Sentinel Value untuk Menghindari Chrome v8 HardenProtect

Analisis kode assembly fungsi read yang dioptimalkan, dapat ditemukan bahwa ia hanya memeriksa apakah atribut prop dari obj benar, tetapi tidak memeriksa nilai obj.prop sebagai kunci. Ini menyebabkan kebingungan tipe saat perhitungan, yang memungkinkan pembacaan sembarangan.

Eksklusif Mengungkap Cara Menghindari Chrome v8 HardenProtect Melalui Kebocoran Nilai Sentinel

Saat uninitialized_oddball diteruskan, perhitungan dimulai dari obj dengan instruksi tertentu, dan akhirnya penyelesaian pembacaan sembarang dilakukan pada instruksi vmovsd xmm0,[r9+r11*8+0x7], di mana data disimpan dalam register xmm0.

Eksklusif Mengungkap Cara Menghindari Chrome v8 HardenProtect Melalui Kebocoran Sentinel Value

Metode perbaikan yang disarankan adalah, saat fungsi yang dioptimalkan mengembalikan elemen array, tambahkan pemeriksaan terhadap map array, untuk menghindari perhitungan offset langsung yang mengembalikan nilai array.

Khusus Mengungkap Cara Menghindari Chrome v8 HardenProtect Melalui Kebocoran Sentinel Value

Peringatan PatchGap

Saat memeriksa perangkat lunak yang mungkin memiliki PatchGap, ditemukan bahwa Skype saat ini belum memperbaiki kerentanan tersebut. Di bawah arsitektur x86, karena tidak ada kompresi alamat, pembacaan dan penulisan sembarang dilakukan langsung relatif terhadap seluruh proses.

Meskipun Skype telah mengaktifkan ASLR, namun karena file-nya yang cukup besar, jika langsung ditempatkan dalam memori 4GB, penyerang hanya perlu membaca dan menulis ke suatu alamat tetap, sehingga ada kemungkinan besar untuk membaca dan menulis konten file Skype. Dengan menggabungkan metode tradisional seperti analisis PE, seluruh rantai eksploitasi kerentanan dapat diselesaikan.

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

PatchGap kali ini tidak hanya terkait dengan Issue1352549, tetapi juga menyebabkan penurunan signifikan dalam kesulitan eksploitasi serupa dengan Issue1314616 dan Issue1216437. Hacker hampir tidak perlu melakukan penelitian tambahan untuk dapat mengeksploitasi sepenuhnya setiap kebocoran uninitialized_oddball yang ada sebelumnya.

Eksklusif Mengungkap Cara Menghindari Chrome v8 HardenProtect Melalui Kebocoran Sentinel Value

Ringkasan

Artikel ini memperkenalkan metode untuk mencapai pembacaan sewenang-wenang melalui kebocoran uninitialized_Oddball dalam nilai Sentinel. Terdapat juga nilai Sentinel lain di V8 yang dapat menyebabkan masalah serupa. Ini memberikan kita wawasan berikut:

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

  2. Apakah masalah semacam ini harus secara resmi diperlakukan sebagai masalah keamanan masih menjadi perdebatan.

  3. Dalam fuzzer, dapat mempertimbangkan untuk menambahkan nilai Sentinel seperti %TheHole/uninitialized_Oddball sebagai variabel, untuk menggali eksploitasi primitif lainnya.

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

Eksklusif Mengungkap Cara Membocorkan Nilai Sentinel untuk Menghindari Chrome v8 HardenProtect

Eksklusif Mengungkap Cara Menghindari Chrome v8 HardenProtect Melalui Kebocoran Sentinel Value

SENC-5.19%
Lihat Asli
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.
  • Hadiah
  • 5
  • Posting ulang
  • Bagikan
Komentar
0/400
CoffeeNFTradervip
· 07-22 08:13
Sekali lagi ada celah keamanan, membuat panik satu kelompok.
Lihat AsliBalas0
Hash_Banditvip
· 07-21 21:23
penambangan mesin js baru saja menjadi nyata... eksploitasi kesulitan sudah mencapai maksimum
Lihat AsliBalas0
ConsensusDissentervip
· 07-20 00:25
Satu lagi lubang hitam kode muncul. Sangat menakutkan.
Lihat AsliBalas0
Blockblindvip
· 07-20 00:19
v8 juga memiliki celah sebesar ini? Bikin ngakak
Lihat AsliBalas0
BlockchainTalkervip
· 07-20 00:12
sebenarnya terkejut V8 masih kesulitan dengan ini... p.s. di mana isolasi runtime saya fam?
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)