Mozilla je začela uvajati tehnologijo izolacije knjižnice RLBox

Raziskovalci z Univerze Stanford, Univerze Kalifornije v San Diegu in Univerze Teksas v Austinu razviti orodja Rlbox, ki se lahko uporablja kot dodatna izolacijska plast za blokiranje ranljivosti v knjižnicah funkcij. RLBox je namenjen reševanju varnostnega problema nezaupljivih knjižnic tretjih oseb, ki niso pod nadzorom razvijalcev, vendar lahko zaradi svojih ranljivosti ogrozijo glavni projekt.

Podjetje Mozilla načrtov uporabite RLBox v različicah Linuxa Firefox 74 in različicah macOS Firefoxa 75 za izolacijo izvajanja knjižnice grafit, odgovoren za upodabljanje pisav. Vendar RLBox ni specifičen za Firefox in se lahko uporablja za izolacijo katere koli knjižnice v poljubnih projektih. Razvoj dogodkov Rlbox širjenje pod licenco MIT. RLBox trenutno podpira platformi Linux in macOS, podpora za Windows pa se pričakuje kasneje.

Mehanizem Delo RLBoxa se zmanjša na prevajanje kode C/C++ izolirane knjižnice v nizkonivojsko vmesno kodo WebAssembly, ki je nato oblikovana kot modul WebAssembly, katerega dovoljenja so nastavljena samo glede na ta modul (na primer knjižnica za obdelavo nizov ne bo mogel odpreti omrežne vtičnice ali datoteke). Pretvarjanje kode C/C++ v WebAssembly poteka z uporabo wasi-sdk.

Za neposredno izvedbo se modul WebAssembly prevede v strojno kodo s pomočjo prevajalnika Lucet in teče v ločenem "nanoprocesu", izoliranem od preostalega pomnilnika aplikacije. Prevajalnik Lucet temelji na isti kodi kot motor JIT Dvigalo z žerjavom, ki se v Firefoxu uporablja za izvajanje WebAssembly.

Sestavljeni modul deluje v ločenem pomnilniškem območju in nima dostopa do preostalega naslovnega prostora. Če se izkoristi ranljivost v knjižnici, bo napadalec omejen in ne bo mogel dostopati do pomnilniških območij glavnega procesa ali prenesti nadzora izven izoliranega okolja.

Mozilla je začela uvajati tehnologijo izolacije knjižnice RLBox

Za razvijalce so na voljo informacije na visoki ravni API, ki omogoča klic knjižničnih funkcij v izolacijskem načinu. Upravljalniki WebAssembly ne potrebujejo skoraj nobenih dodatnih virov in interakcija z njimi ni veliko počasnejša od klicanja običajnih funkcij (funkcije knjižnice se izvajajo v obliki izvorne kode, režijski stroški pa nastanejo le pri kopiranju in preverjanju podatkov med interakcijo z izoliranim okoljem). Izoliranih funkcij knjižnice ni mogoče poklicati neposredno in je treba do njih dostopati z uporabo
plast invoke_sandbox_function().

Če pa je treba poklicati zunanje funkcije iz knjižnice, morajo biti te funkcije eksplicitno definirane z metodo register_callback (RLBox privzeto omogoča dostop do funkcij standardna knjižnica). Da bi zagotovili varnost pomnilnika, izolacija izvajanja kode ni dovolj in zahteva tudi preverjanje vrnjenih podatkovnih tokov.

Vrednosti, ustvarjene v izoliranem okolju, so označene kot nezanesljive in omejene uporabe umazane oznake in za "čiščenje" potrebujejo preverjanje in kopiranje v pomnilnik aplikacije.
Brez čiščenja poskus uporabe pokvarjenih podatkov v kontekstu, ki zahteva redne podatke (in obratno), povzroči generiranje napak med prevajanjem. Majhni funkcijski argumenti, vrnjene vrednosti in strukture se prenašajo s kopiranjem med pomnilnikom procesa in pomnilnikom peskovnika. Za velike nabore podatkov je pomnilnik dodeljen v izoliranem okolju in neposredni kazalec sklicevanja na peskovnik je vrnjen glavnemu procesu.

Vir: opennet.ru

Dodaj komentar