Mozilla Memulakan Pelaksanaan Teknologi Pengasingan Perpustakaan RLBox

Penyelidik dari Universiti Stanford, Universiti California di San Diego dan Universiti Texas di Austin dibangunkan alatan RLBox, yang boleh digunakan sebagai lapisan pengasingan tambahan untuk menyekat kelemahan dalam pustaka fungsi. RLBox bertujuan untuk menyelesaikan masalah keselamatan perpustakaan pihak ketiga yang tidak dipercayai yang tidak berada di bawah kawalan pembangun, tetapi kelemahannya boleh menjejaskan projek utama.

Syarikat Mozilla rancangan gunakan RLBox dalam binaan Linux Firefox 74 dan binaan macOS Firefox 75 untuk mengasingkan pelaksanaan perpustakaan grafit, bertanggungjawab untuk membuat fon. Walau bagaimanapun, RLBox tidak khusus untuk Firefox dan boleh digunakan untuk mengasingkan mana-mana perpustakaan dalam projek sewenang-wenangnya. Perkembangan RLBox sebar di bawah lesen MIT. RLBox kini menyokong platform Linux dan macOS, dengan sokongan Windows dijangka kemudian.

Mekanisme Kerja RLBox adalah untuk menyusun kod C/C++ perpustakaan terpencil ke dalam kod WebAssembly perantaraan peringkat rendah, yang kemudiannya direka bentuk sebagai modul WebAssembly, yang kebenarannya ditetapkan berhubung hanya dengan modul ini (contohnya, perpustakaan untuk pemprosesan rentetan tidak akan dapat membuka soket rangkaian atau fail) . Menukar kod C/C++ kepada WebAssembly dilakukan menggunakan wasi-sdk.

Untuk pelaksanaan langsung, modul WebAssembly disusun ke dalam kod mesin menggunakan pengkompil Lucet dan berjalan dalam "nanoprocess" berasingan yang diasingkan daripada memori aplikasi yang lain. Pengkompil Lucet adalah berdasarkan kod yang sama seperti enjin JIT angkat kren, digunakan dalam Firefox untuk melaksanakan WebAssembly.

Modul yang dipasang beroperasi dalam kawasan memori yang berasingan dan tidak mempunyai akses kepada ruang alamat yang lain. Jika kelemahan dalam pustaka dieksploitasi, penyerang akan terhad dan tidak akan dapat mengakses kawasan memori proses utama atau kawalan pemindahan di luar persekitaran terpencil.

Mozilla Memulakan Pelaksanaan Teknologi Pengasingan Perpustakaan RLBox

Maklumat peringkat tinggi disediakan untuk pembangun API, yang membolehkan anda memanggil fungsi perpustakaan dalam mod pengasingan. Pengendali WebAssembly memerlukan hampir tiada sumber tambahan dan interaksi dengan mereka tidak jauh lebih perlahan daripada memanggil fungsi biasa (fungsi perpustakaan dilaksanakan dalam bentuk kod asli, dan kos overhed timbul hanya apabila menyalin dan menyemak data semasa interaksi dengan persekitaran terpencil). Fungsi perpustakaan terpencil tidak boleh dipanggil terus dan mesti diakses menggunakan
lapisan invoke_sandbox_function().

Sebaliknya, jika perlu untuk memanggil fungsi luaran daripada perpustakaan, fungsi ini mesti ditakrifkan secara eksplisit menggunakan kaedah register_callback (secara lalai, RLBox menyediakan akses kepada fungsi perpustakaan standard). Untuk memastikan keselamatan memori, pengasingan pelaksanaan kod tidak mencukupi dan memerlukan juga menyemak aliran data yang dikembalikan.

Nilai yang dijana dalam persekitaran terpencil ditandakan sebagai penggunaan yang tidak boleh dipercayai dan terhad tanda tercemar dan untuk "pembersihan" mereka perlukan pengesahan dan menyalin ke memori aplikasi.
Tanpa pembersihan, percubaan untuk menggunakan data tercemar dalam konteks yang memerlukan data biasa (dan sebaliknya) mengakibatkan ralat dijana pada masa penyusunan. Argumen fungsi kecil, nilai pulangan dan struktur dihantar melalui penyalinan antara memori proses dan memori kotak pasir. Untuk set data yang besar, memori diperuntukkan dalam persekitaran terpencil dan penunjuk rujukan kotak pasir langsung dikembalikan ke proses utama.

Sumber: opennet.ru

Tambah komen