Mesin Chrome V8 muncul kembali dengan celah keamanan: Kebocoran Nilai Sentinel dapat melewati sandbox

robot
Pembuatan abstrak sedang berlangsung

Menghindari HardenProtect Chrome V8 melalui kebocoran Sentinel Value

Nilai Sentinel adalah nilai khusus dalam algoritma, yang sering digunakan sebagai kondisi penghentian dalam algoritma iterasi atau rekursi. Di dalam kode sumber Chrome terdapat beberapa nilai Sentinel. Sebelumnya, ada penelitian yang menunjukkan bagaimana menggunakan objek TheHole untuk mengeksploitasi dan melaksanakan kode arbitrer di dalam sandbox. Artikel ini akan membahas objek native V8 lainnya - Uninitialized Oddball, yang metode ini masih dapat digunakan dalam versi terbaru V8.

Metode ini bersifat universal:

  1. Issue1216437 pertama kali mengusulkan konsep kebocoran internal uninitialized oddball.

  2. Dalam Issue1314616 juga secara langsung membocorkan UninitializedOddball, meskipun metode pemanfaatannya saat itu masih tidak jelas.

  3. Issue1352549 patut diperhatikan karena potensi dampaknya.

Saat ini, beberapa perangkat lunak masih belum memperbaiki kerentanan ini.

Sebagian besar objek asli di V8 didefinisikan dalam file v8/src/roots/roots.h, dan objek-objek ini diatur bersebelahan dalam memori. Setelah objek asli yang tidak seharusnya bocor diekspos ke JavaScript, eksekusi kode arbitrer dalam sandbox mungkin terjadi.

Untuk memverifikasi metode ini, Anda dapat memodifikasi fungsi native V8 untuk membocorkan Uninitialized Oddball ke dalam JavaScript. Secara spesifik, Anda dapat memodifikasi offset relatif terhadap isolate dalam fungsi %TheHole().

Kode inti dari metode bypass ini adalah sebagai berikut:

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

let uninitialized_oddball = %TheHole(); let arr = [1.1, 2.2, 3.3];

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

let val = read(uninitialized_oddball, 0); console.log(val);

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

Eksklusif Mengungkap Cara Menghindari Chrome v8 HardenProtect Melalui Kebocoran Nilai Sentinel

Rangkaian kunci dari fungsi read yang dioptimalkan adalah sebagai berikut:

0x558b20004086 mov r11,rdi 0x558b20004089 movzx edi,byte ptr [r11+0xb] 0x558b2000408d cmp edi,0x81 0x558b20004093 jnz 0x558b200040d8 0x558b20004095 mov r9,qword ptr [r11+0xf] 0x558b20004099 uji esi,esi 0x558b2000409b js 0x558b200040d8 0x558b2000409d movsxd r11,esi 0x558b200040a0 cmp r11,qword ptr [r9+0xf] 0x558b200040a4 jae 0x558b200040d8 0x558b200040a6 vmovsd xmm0,[r9+r11*8+0x7]

Saat uninitialized_oddball diteruskan, hitung mulai dari obj di 0x558b20004086, akhirnya menyelesaikan pembacaan sembarang dalam instruksi vmovsd, data disimpan di register xmm0.

Eksklusif Mengungkap Cara Membobol Chrome v8 HardenProtect Melalui Kebocoran Sentinel Value

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

Perlu dicatat bahwa beberapa perangkat lunak masih belum memperbaiki kerentanan ini. Metode pemanfaatan di platform x86 sedikit berbeda, karena tidak ada kompresi alamat, baca tulis sembarangan relatif terhadap seluruh proses. Bahkan jika ASLR diaktifkan, karena ukuran file yang terlalu besar, masih ada kemungkinan besar untuk membaca dan menulis ke konten target.

Metode bypass baru ini secara signifikan mengurangi kesulitan dalam memanfaatkan kerentanan serupa sebelumnya. Disarankan untuk meninjau kembali semua kerentanan yang mengungkap uninitialized_oddball.

Di V8 juga terdapat nilai Sentinel lainnya, yang juga dapat menyebabkan masalah serupa. Ini memberikan kita wawasan berikut:

  1. Apakah kebocoran uninitialized_Oddball lainnya juga mudah untuk diimplementasikan RCE V8.

  2. Apakah masalah semacam ini seharusnya secara resmi dianggap sebagai masalah keamanan masih menjadi perdebatan.

  3. Apakah Sentinel value harus dimasukkan sebagai variabel dalam Fuzzer untuk mengeksplorasi primitive eksploitasi baru.

Bagaimanapun, masalah seperti ini akan sangat memperpendek periode di mana peretas dapat memanfaatkan sepenuhnya.

Eksklusif Mengungkap Cara Menghindari Chrome v8 HardenProtect Melalui Kebocoran Sentinel Value

Eksklusif Mengungkap Cara Melewati Chrome v8 HardenProtect Melalui Kebocoran Nilai Sentinel

Eksklusif mengungkap cara melewati Chrome v8 HardenProtect dengan membocorkan Nilai Sentinel

Eksklusif Mengungkap Cara Melewati Chrome v8 HardenProtect Melalui Kebocoran Sentinel Value

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

Eksklusif Mengungkap Cara Mengelak Chrome v8 HardenProtect Melalui Kebocoran Nilai Sentinel

Eksklusif Mengungkap Cara Menghindari Perlindungan HardenProtect Chrome v8 melalui Kebocoran 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
  • 5
  • Bagikan
Komentar
0/400
ZKProofEnthusiastvip
· 07-09 11:53
Diketahui bahwa V8 menggerakkan dunia
Lihat AsliBalas0
SleepyValidatorvip
· 07-06 23:01
Chrome memang tidak main-main, stabil.
Lihat AsliBalas0
FlashLoanLordvip
· 07-06 17:06
Lubangnya begitu besar masih belum diperbaiki?
Lihat AsliBalas0
ForkItAllvip
· 07-06 17:00
Celah v8 ini benar-benar ybb.
Lihat AsliBalas0
FudVaccinatorvip
· 07-06 16:51
Satu lagi celah besar, menggunakan Firefox memang enak.
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)