RLBox, nova tehnologija izolacije biblioteke koju koristi Mozilla

Firefox logotip

Istraživači sa Univerziteta Stanford, u Univerzitet u Kaliforniji u San Diegu y la Univerzitet u Teksasu u Austinu Razvili su se set alata kojima su dali ime "RLBox", Que može se koristiti kao dodatni nivo izolacije za blokiranje ranjivosti u knjižnicama funkcija.

Cilj RLBox-a je riješiti sigurnosni problem biblioteka nezavisnih proizvođača nepovjerljive koje programeri ne kontroliraju, već ranjivosti u kojima bi glavni projekt mogao ugroziti.

Mozilla planira koristiti RLBox u Firefox 74 verzijama za Linux i kompilacije macOS u Firefoxu 75 da izolira izvršenje Graphite biblioteke, koja je odgovorna za predstavljanje izvora.

Istovremeno, RLBox nije specifičan za Firefox i može se koristiti za izoliranje bilo koje biblioteke u proizvoljnim projektima.

O RLBoxu

Mehanizam rada RLBox se svodi na kompajliranje C / C ++ koda iz izolirane biblioteke u srednji WebAssembly kôd niskog nivoa, koji se zatim izdaje kao WebAssembly modul, čije je ovlaštenje postavljeno da se veže samo na ovaj modul (na primjer, biblioteka za obradu nizova ne može otvoriti utičnicu ili mrežnu datoteku) C / C ++ pretvorba koda a WebAssembly se vrši pomoću wasi-sdk.

Za direktno izvršenje, modul WebAssembly kompajlira se u mašinski kod pomoću Lucet kompajlera i radi u "nanoprocesu" odvojenom od ostatka memorije aplikacije. Kompajler Lucet zasnovan je na istom kodu kao i mehanizam Cranelift JIT koji se koristi u Firefoxu za pokretanje WebAssemblya.

Sastavljeni modul radi u zasebnom memorijskom području i nema pristup ostatku adresnog prostora. U slučaju iskorištavanja ranjivosti u knjižnici, napadač će biti ograničen i neće moći pristupiti memorijskim područjima glavnog procesa ili kontroli prijenosa izvan pješčanika.

Za programere je osiguran API na visokom nivou, koji vam omogućava pozivanje funkcija biblioteke u izolacijskom načinu.

u Kontrolori WebAssembly ne zahtijevaju gotovo nikakve dodatne resurse a interakcija s njima nije mnogo sporija od pozivanja uobičajenih funkcija (funkcije biblioteke se izvode u obliku izvornog koda, a preopterećenje se događa samo prilikom kopiranja i provjere podataka u procesu interakcije s zaštićenim okruženjem).

Funkcije izolirane biblioteke ne mogu se pozvati izravno, a da biste im pristupili, morate koristiti sloj invoke_sandbox_function().

Zauzvrat, ako trebaju pozvati vanjske funkcije iz knjižnice, te funkcije moraju biti izričito definirane pomoću metode register_callback (prema zadanim postavkama RLBox pruža pristup standardnim funkcijama knjižnice).

Da biste osigurali siguran rad memorije, izoliranje izvršenja koda nije dovoljno i takođe trebate osigurati provjeru vraćenih tokova podataka.

Vrijednosti generirane u izoliranom okruženju označene su kao nepouzdane, ograničene oštećenim oznakama i zahtijevaju provjeru i kopiranje u memoriju aplikacije radi "čišćenja".

Bez čišćenja, pokušaj upotrebe zagađenih podataka u kontekstu koji zahtijeva redovite podatke (i obrnuto) dovodi do stvaranja grešaka u fazi kompilacije.

Argumenti male funkcije, povratne vrijednosti i strukture prenose se kopiranjem između procesne memorije i memorije pješčanika. Za velike skupove podataka memorija se dodjeljuje u izoliranom okruženju, a direktni pokazivač "referentnog okruženja" vraća se glavnom procesu.

RLBox razvoj se distribuira pod MIT licencom. RLBox trenutno podržava Linux i macOS i očekuje se da će kasnije biti kompatibilan sa Windowsom.

Ako želite znati više o ovoj novoj tehnologiji koju Mozilla planira implementirati u Firefox, možete se posavjetovati s njezinim razvojem, kao i testirati API Na sledećem linku.


Ostavite komentar

Vaša e-mail adresa neće biti objavljena. Obavezna polja su označena sa *

*

*

  1. Za podatke odgovoran: Miguel Ángel Gatón
  2. Svrha podataka: Kontrola neželjene pošte, upravljanje komentarima.
  3. Legitimacija: Vaš pristanak
  4. Komunikacija podataka: Podaci se neće dostavljati trećim stranama, osim po zakonskoj obavezi.
  5. Pohrana podataka: Baza podataka koju hostuje Occentus Networks (EU)
  6. Prava: U bilo kojem trenutku možete ograničiti, oporaviti i izbrisati svoje podatke.