Chromium Chronicle #5: Coding di Luar Sandbox

Episode 5: oleh Ade di Mountain View, CA (Agustus, 2019)
Episode sebelumnya

Chrome dibagi menjadi beberapa proses. Beberapa di antaranya di-sandbox, yang berarti mereka mengurangi akses ke sistem dan ke akun pengguna. Dalam proses sandbox, bug yang memungkinkan kode berbahaya dijalankan memiliki tingkat keparahan yang lebih rendah.

Proses browser tidak memiliki sandbox, sehingga bug dapat memberikan akses penuh ke seluruh perangkat ke kode berbahaya. Apa yang harus Anda lakukan secara berbeda? Dan bagaimana situasi dengan proses lain?

Diagram sandbox

Semua kode memiliki bug. Dalam proses browser, {i>bug<i} tersebut memungkinkan kode berbahaya menginstal program, mencuri data pengguna, menyesuaikan setelan komputer, mengakses konten semua tab browser, data login, dll.

Dalam proses lain, akses OS dibatasi melalui pembatasan khusus platform. Untuk informasi selengkapnya, lihat panduan penerapan sandbox Chrome.

Pastikan untuk menghindari kesalahan umum berikut:

aturan dua

  • Jangan mengurai atau menafsirkan data yang tidak dapat dipercaya menggunakan C++ dalam proses browser.
  • Jangan percayai asal yang dinyatakan oleh perender. RenderFrameHost browser dapat digunakan untuk mendapatkan origin saat ini dengan aman.


Anjuran

Sebagai gantinya, gunakan praktik terbaik berikut:

  • Anda harus ekstra paranoid jika kode ada dalam proses browser.
  • Memvalidasi semua IPC dari proses lain. Asumsikan bahwa semua proses lain sudah disusupi dan dikeluarkan untuk menipu Anda.
  • Lakukan pemrosesan dalam proses perender atau utilitas atau beberapa proses sandbox lainnya. Idealnya, gunakan juga bahasa yang aman untuk memori seperti JavaScript (mengatasi bug keamanan >50%).

Selama bertahun-tahun, kami menjalankan stack jaringan (misalnya, HTTP, DNS, QUIC) dalam proses browser, yang menyebabkan beberapa kerentanan kritis. Di beberapa platform, jaringan kini memiliki prosesnya sendiri, dengan sandbox yang akan hadir.

Referensi Tambahan

  • Aturan Dua Chromium: tidak lebih dari dua data yang tidak aman, kode yang tidak aman, dan proses yang tidak aman.
  • Memvalidasi Data IPC: panduan tentang cara memastikan bahwa IPC dari proses perender tidak penuh dengan fib dan pernyataan tidak benar.