RLBox, nova tehnologija izolacije knjižnic, ki jo uporablja Mozilla

Logotip Firefoxa

Raziskovalci univerze Stanford, Univerza v Kaliforniji v San Diegu y la Univerza v Teksasu v Austinu Razvili so se nabor orodij, ki so jim dali ime "RLBox", da se lahko uporablja kot dodatna stopnja izolacije za blokiranje ranljivosti v knjižnicah funkcij.

RLBox želi rešiti varnostni problem neodvisnih knjižnic nezaupljivi, ki jih razvijalci ne nadzorujejo, temveč ranljivosti, pri katerih bi lahko glavni projekt ogrožal.

Mozilla namerava uporabiti RLBox v gradnjah Firefox 74 za Linux in zbirke macOS v Firefoxu 75 da izolira izvajanje knjižnice Graphite, ki je odgovorno za zastopanje virov.

Hkrati RLBox ni specifičen za Firefox in se lahko uporablja za izoliranje katere koli knjižnice v poljubnih projektih.

O RLBoxu

Mehanizem delovanja RLBox se nanaša na sestavljanje kode C / C ++ iz izolirane knjižnice v vmesno kodo WebAssembly nizka raven, ki se nato izda kot modul WebAssembly, katerega pooblastilo je nastavljeno tako, da se veže samo na ta modul (na primer knjižnica za obdelavo nizov ne more odpreti vtičnice ali omrežne datoteke) C / C ++ pretvorba kode je WebAssembly opravljeno z uporabo wasi-sdk.

Za neposredno izvedbo, modul WebAssembly se prevede v strojno kodo s pomočjo prevajalnika Lucet in deluje v "nanoprocesu", ločenem od preostalega pomnilnika aplikacije. Prevajalnik Lucet temelji na isti kodi kot motor Cranelift JIT, ki se uporablja v Firefoxu za zagon WebAssembly.

Sestavljeni modul deluje v ločenem pomnilniškem območju in nima dostopa do preostalega naslovnega prostora. V primeru izkoriščanja ranljivosti v knjižnici bo napadalec omejen in ne bo mogel dostopati do pomnilniških območij glavnega procesa ali nadzora prenosa zunaj peskovnika.

Za razvijalce je na voljo API na visoki ravni, ki vam omogoča, da funkcije knjižnice pokličete v izolacijskem načinu.

P Krmilniki WebAssembly skoraj ne potrebujejo 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, preobremenitev pa se pojavi le pri kopiranju in preverjanju podatkov v procesu interakcije z okoljem v peskovniku).

Funkcij izolirane knjižnice ni mogoče neposredno priklicati in za dostop do njih morate uporabiti plast invoke_sandbox_function().

Če pa morajo iz knjižnice poklicati zunanje funkcije, jih je treba izrecno definirati z metodo register_callback (privzeto RLBox omogoča dostop do standardnih knjižničnih funkcij).

Da bi zagotovili varno delovanje pomnilnika, izolacija izvedbe kode ni dovolj in tudi zagotoviti morate preverjanje vrnjenih podatkovnih tokov.

Vrednosti, ustvarjene v izoliranem okolju, so označene kot nezanesljive, omejene z onesnaženimi oznakami in za preverjanje zahtevajo preverjanje in kopiranje v pomnilnik aplikacije.

Brez čiščenja poskus uporabe onesnaženih podatkov v kontekstu, ki zahteva redne podatke (in obratno), povzroči napake v fazi priprave.

Argumenti majhne funkcije, vrnjene vrednosti in strukture se posredujejo s kopiranjem med pomnilnikom procesa in pomnilnikom peskovnika. Za velike nabore podatkov se pomnilnik dodeli v izoliranem okolju in neposredni kazalnik »referenca peskovnika« se vrne v glavni postopek.

Razvoj RLBox se distribuira pod licenco MIT. RLBox trenutno podpira Linux in macOS in naj bi bil kasneje združljiv z operacijskim sistemom Windows.

Če želite izvedeti več o tej novi tehnologiji, ki jo Mozilla namerava uporabiti v Firefoxu, se lahko posvetujete z njenim razvojem in preizkusite API V naslednji povezavi.


Pustite svoj komentar

Vaš e-naslov ne bo objavljen. Obvezna polja so označena z *

*

*

  1. Za podatke odgovoren: Miguel Ángel Gatón
  2. Namen podatkov: Nadzor neželene pošte, upravljanje komentarjev.
  3. Legitimacija: Vaše soglasje
  4. Sporočanje podatkov: Podatki se ne bodo posredovali tretjim osebam, razen po zakonski obveznosti.
  5. Shranjevanje podatkov: Zbirka podatkov, ki jo gosti Occentus Networks (EU)
  6. Pravice: Kadar koli lahko omejite, obnovite in izbrišete svoje podatke.