Pengungkapan kerentanan Chrome v8: Menggunakan Nilai Sentinel untuk mencapai pelarian sandbox

robot
Pembuatan abstrak sedang berlangsung

Mengungkap Cara Menghindari Mekanisme Perlindungan Keamanan Chrome v8 dengan Sentinel Value

Nilai Sentinel adalah nilai khusus dalam algoritma, biasanya digunakan sebagai kondisi terminasi dalam algoritma loop atau rekursif. Dalam sumber kode Chrome terdapat beberapa nilai Sentinel. Penelitian sebelumnya menunjukkan bahwa dengan membocorkan objek TheHole, eksekusi kode sembarangan dalam sandbox dapat dicapai. Tim Google kemudian memperbaiki kedua kerentanan ini.

Namun, selain objek TheHole, ada objek asli lain di v8 yang tidak seharusnya bocor ke JS. Artikel ini akan membahas objek Uninitialized Oddball, metode bypass ini masih dapat digunakan di versi terbaru V8, dan Google belum memperbaikinya.

Perlu dicatat bahwa metode ini memiliki tingkat universalitas tertentu:

  1. Dalam Issue1216437 disebutkan terlebih dahulu tentang kebocoran internal uninitialized oddball.

  2. poc dari Issue1314616 juga langsung mengungkapkan UninitializedOddball.

  3. Issue1352549 secara rinci memberikan metode penggunaannya.

Kasus-kasus ini menunjukkan bahwa kita perlu meninjau kembali perangkat lunak yang mungkin terpengaruh. Saat ini, beberapa aplikasi masih belum memperbaiki kerentanan tersebut.

Eksklusif mengungkap cara melewati Chrome v8 HardenProtect melalui kebocoran Nilai Sentinel

Nilai Sentinel dalam V8

File v8/src/roots/roots.h mencantumkan sebagian besar objek asli v8, yang disusun secara bersebelahan di dalam memori. Begitu objek-objek ini bocor ke dalam Javascript, mungkin untuk melakukan eksekusi kode sembarang di dalam sandbox.

Kita dapat mengungkapkan Uninitialized Oddball ke dalam JavaScript dengan memodifikasi fungsi native v8. Secara khusus, kita dapat mengubah offset relatif terhadap isolate dalam fungsi %TheHole() agar mengembalikan Uninitialized Oddball.

Eksklusif Mengungkap Cara Menghindari Chrome v8 HardenProtect Melalui Kebocoran Sentinel Value

Menghindari perlindungan HardenType

Metode yang digunakan adalah sebagai berikut:

javascript const uninitialized = %TheHole(); const float_array = new Float64Array(1); float_array[0] = 1.1;

function read(obj, offset) { return float_array[obj.prop]; }

const obj = {prop: uninitialized};

untuk (biarkan i = 0; i < 100000; i++) { read(obj, 0);
}

%OptimizeFunctionOnNextCall(baca); const value = read(obj, 0x12345);

Dalam pengujian v8-11.0.0, ketika %TheHole() mengembalikan UninitializedOddball, pembacaan relatif yang hampir sembarang masih dapat dicapai.

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

Kode disassembly fungsi read yang dioptimalkan menunjukkan bahwa objek prop dari obj telah diperiksa, tetapi nilai obj.prop yang menjadi key tidak diperiksa, langsung menghitung offset sesuai dengan semantik JavaScript, yang mengakibatkan kebingungan tipe dan memungkinkan pembacaan sembarangan.

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

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

Peringatan Risiko PatchGap

Kita tidak hanya perlu memperhatikan celah sejarah, tetapi juga harus memperhatikan celah yang diam-diam diperbaiki oleh vendor dalam komponen dasar. Setelah diperiksa, ditemukan bahwa beberapa perangkat lunak masih belum memperbaiki celah tersebut.

Pada arsitektur x86, karena tidak ada kompresi alamat, pembacaan dan penulisan sembarang dilakukan secara langsung terhadap seluruh proses. Meskipun ASLR telah diaktifkan, ketika file cukup besar, hacker hanya perlu melakukan pembacaan dan penulisan pada alamat tetap, sehingga memiliki kemungkinan besar untuk membaca dan menulis konten file. Menggabungkan pemrosesan PE dan pemikiran tradisional lainnya, tidak sulit untuk menyelesaikan seluruh rantai eksploitasi kerentanan.

Eksklusif Mengungkap Cara Menghindari Chrome v8 HardenProtect Melalui Kebocoran Nilai Sentinel

PatchGap kali ini tidak hanya terkait dengan Issue1352549, tetapi juga secara signifikan mengurangi kesulitan eksploitasi untuk masalah serupa seperti Issue1314616 dan Issue1216437. Para hacker hampir tidak perlu mengeluarkan biaya penelitian untuk dapat mengeksploitasi kebocoran uninitialized_oddball seperti sebelumnya.

Ringkasan

Artikel ini secara singkat memperkenalkan cara untuk mencapai pembacaan arbitrer dengan mengeksploitasi uninitialized_Oddball dalam nilai Sentinel. Di v8 terdapat banyak nilai Sentinel lainnya yang kemungkinan juga memiliki masalah serupa. Ini memberikan kita beberapa wawasan:

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

  2. Apakah masalah serupa seharusnya diperlakukan secara resmi sebagai masalah keamanan.

  3. Apakah perlu untuk memasukkan nilai Sentinel seperti %TheHole/uninitialized_Oddball sebagai variabel dalam fuzzer, untuk menemukan eksploitasi dari primitif lainnya.

Bagaimanapun juga, jenis masalah ini akan sangat memperpendek siklus bagi hacker untuk mencapai pemanfaatan penuh.

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

Eksklusif mengungkap cara melewati Chrome v8 HardenProtect melalui kebocoran Sentinel Value

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

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

SENC7.34%
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
  • Bagikan
Komentar
0/400
UnluckyValidatorvip
· 07-10 22:09
Eh, v8 ternyata memiliki celah sebesar ini.
Lihat AsliBalas0
ShibaMillionairen'tvip
· 07-09 05:56
Ini adalah bug v8 lagi. Saya pergi, saya pergi.
Lihat AsliBalas0
UncommonNPCvip
· 07-09 05:54
Hacker bermain dengan begitu mahir, tidak heran itu adalah v8
Lihat AsliBalas0
GateUser-4745f9cevip
· 07-09 05:47
Lubang berbahaya telah ditemukan
Lihat AsliBalas0
ProposalDetectivevip
· 07-09 05:38
Apa yang sedang dilakukan Google 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)