Mozilla Miwiti Implementasi Teknologi Isolasi Pustaka RLBox

Peneliti saka Universitas Stanford, Universitas California ing San Diego lan Universitas Texas ing Austin dikembangke piranti RLBox, sing bisa digunakake minangka lapisan isolasi tambahan kanggo mblokir kerentanan ing perpustakaan fungsi. RLBox ditujokake kanggo ngrampungake masalah keamanan perpustakaan pihak katelu sing ora dipercaya sing ora dikendhaleni para pangembang, nanging sing kerentanan bisa kompromi proyek utama.

Perusahaan Mozilla rencana nggunakake RLBox ing Linux mbangun Firefox 74 lan macOS mbangun Firefox 75 kanggo ngisolasi eksekusi perpustakaan Grafit, tanggung jawab kanggo rendering fonts. Nanging, RLBox ora spesifik kanggo Firefox lan bisa digunakake kanggo ngisolasi perpustakaan apa wae ing proyek sing sewenang-wenang. Pangembangan RLBox Penyebaran ing lisensi MIT. RLBox saiki ndhukung platform Linux lan macOS, kanthi dhukungan Windows samesthine mengko.

Mekanisme Karya RLBox teka kanggo nyusun kode C/C++ saka perpustakaan sing terisolasi dadi kode WebAssembly perantara tingkat rendah, sing banjur dirancang minangka modul WebAssembly, sing ijine mung ana hubungane karo modul iki (contone, perpustakaan. kanggo ngolah strings ora bakal bisa mbukak soket jaringan utawa file) . Ngonversi kode C/C++ menyang WebAssembly wis rampung nggunakake wasi-sdk.

Kanggo eksekusi langsung, modul WebAssembly dikompilasi dadi kode mesin nggunakake compiler Lucet lan mlaku ing "nanoprocess" kapisah diisolasi saka liyane saka memori aplikasi. Compiler Lucet adhedhasar kode sing padha karo mesin JIT angkat crane, digunakake ing Firefox kanggo nglakokake WebAssembly.

Modul nglumpuk makaryakke ing wilayah memori kapisah lan ora duwe akses menyang liyane saka papan alamat. Yen kerentanan ing perpustakaan dieksploitasi, panyerang bakal diwatesi lan ora bisa ngakses area memori proses utama utawa transfer kontrol ing njaba lingkungan sing terisolasi.

Mozilla Miwiti Implementasi Teknologi Isolasi Pustaka RLBox

Informasi tingkat dhuwur diwenehake kanggo pangembang API, sing ngidini sampeyan nelpon fungsi perpustakaan ing mode isolasi. Handler WebAssembly mbutuhake meh ora sumber daya tambahan lan interaksi karo wong-wong mau ora luwih alon tinimbang nelpon fungsi biasa (fungsi perpustakaan dieksekusi ing wangun kode native, lan biaya overhead mung muncul nalika nyalin lan mriksa data sajrone interaksi karo lingkungan terisolasi). Fungsi perpustakaan terisolasi ora bisa disebut langsung lan kudu diakses nggunakake
layer invoke_sandbox_function().

Sabanjure, yen perlu nelpon fungsi eksternal saka perpustakaan, fungsi kasebut kudu ditetepake kanthi jelas nggunakake metode register_callback (kanthi standar, RLBox nyedhiyakake akses menyang fungsi kasebut. perpustakaan standar). Kanggo njamin keamanan memori, isolasi eksekusi kode ora cukup lan mbutuhake uga mriksa aliran data sing bali.

Nilai sing diasilake ing lingkungan sing terisolasi ditandhani minangka ora bisa dipercaya lan nggunakake winates tandha tainted lan kanggo "reresik" padha mbutuhake verifikasi lan nyalin menyang memori aplikasi.
Tanpa ngresiki, nyoba nggunakake data sing rusak ing konteks sing mbutuhake data reguler (lan kosok balene) nyebabake kesalahan nalika kompilasi. Argumen fungsi cilik, nilai bali, lan struktur dilewati liwat salinan antarane memori proses lan memori kothak wedhi. Kanggo set data gedhe, memori diparengake ing lingkungan terisolasi lan pitunjuk wedhi-referensi langsung bali menyang proses utama.

Source: opennet.ru

Add a comment