Mozilla Memulai Implementasi Teknologi Isolasi Perpustakaan RLBox

Peneliti dari Universitas Stanford, Universitas California di San Diego dan Universitas Texas di Austin dikembangkan peralatan Kotak RL, yang dapat digunakan sebagai lapisan isolasi tambahan untuk memblokir kerentanan di pustaka fungsi. RLBox ditujukan untuk memecahkan masalah keamanan perpustakaan pihak ketiga yang tidak tepercaya yang tidak berada di bawah kendali pengembang, namun kerentanannya dapat membahayakan proyek utama.

Perusahaan Mozilla rencana gunakan RLBox di Linux versi Firefox 74 dan macOS versi Firefox 75 untuk mengisolasi eksekusi perpustakaan Grafit, bertanggung jawab untuk merender font. Namun, RLBox tidak spesifik untuk Firefox dan dapat digunakan untuk mengisolasi perpustakaan apa pun dalam proyek arbitrer. Perkembangan Kotak RL sebaran di bawah lisensi MIT. RLBox saat ini mendukung platform Linux dan macOS, dengan dukungan Windows diharapkan nanti.

Mekanisme Pekerjaan RLBox adalah mengkompilasi kode C/C++ dari perpustakaan yang terisolasi menjadi kode WebAssembly perantara tingkat rendah, yang kemudian dirancang sebagai modul WebAssembly, yang izinnya ditetapkan hanya untuk modul ini (misalnya, perpustakaan untuk memproses string tidak akan dapat membuka soket jaringan atau file) . Mengonversi kode C/C++ ke WebAssembly dilakukan menggunakan wasi-sdk.

Untuk eksekusi langsung, modul WebAssembly dikompilasi ke dalam kode mesin menggunakan kompiler Lucet dan berjalan dalam "proses nano" terpisah yang diisolasi dari sisa memori aplikasi. Kompiler Lucet didasarkan pada kode yang sama dengan mesin JIT Pengangkatan derek, digunakan di Firefox untuk menjalankan WebAssembly.

Modul yang dirakit beroperasi di area memori terpisah dan tidak memiliki akses ke ruang alamat lainnya. Jika kerentanan di perpustakaan dieksploitasi, penyerang akan dibatasi dan tidak akan dapat mengakses area memori dari proses utama atau mentransfer kendali ke luar lingkungan yang terisolasi.

Mozilla Memulai Implementasi Teknologi Isolasi Perpustakaan RLBox

Informasi tingkat tinggi disediakan untuk pengembang API, yang memungkinkan Anda memanggil fungsi perpustakaan dalam mode isolasi. Penangan WebAssembly hampir tidak memerlukan sumber daya tambahan dan interaksi dengannya tidak jauh lebih lambat daripada memanggil fungsi biasa (fungsi perpustakaan dijalankan dalam bentuk kode asli, dan biaya overhead hanya timbul saat menyalin dan memeriksa data selama interaksi dengan lingkungan yang terisolasi). Fungsi perpustakaan yang terisolasi tidak dapat dipanggil secara langsung dan harus diakses menggunakan
lapisan invoke_sandbox_function().

Pada gilirannya, jika perlu memanggil fungsi eksternal dari perpustakaan, fungsi-fungsi ini harus didefinisikan secara eksplisit menggunakan metode register_callback (secara default, RLBox menyediakan akses ke fungsi perpustakaan standar). Untuk memastikan keamanan memori, isolasi eksekusi kode tidak cukup dan memerlukan pemeriksaan aliran data yang dikembalikan.

Nilai-nilai yang dihasilkan dalam lingkungan yang terisolasi ditandai sebagai tidak dapat dipercaya dan penggunaannya terbatas tanda tercemar dan untuk β€œpembersihan” mereka memerlukannya verifikasi dan menyalin ke memori aplikasi.
Tanpa pembersihan, mencoba menggunakan data yang tercemar dalam konteks yang memerlukan data reguler (dan sebaliknya) akan menghasilkan kesalahan pada waktu kompilasi. Argumen fungsi kecil, nilai kembalian, dan struktur diteruskan melalui penyalinan antara memori proses dan memori kotak pasir. Untuk kumpulan data besar, memori dialokasikan dalam lingkungan yang terisolasi dan penunjuk referensi sandbox langsung dikembalikan ke proses utama.

Sumber: opennet.ru

Tambah komentar