Mozilla počinje implementaciju RLBox tehnologije izolacije biblioteke

Istraživači sa Univerziteta Stanford, Univerziteta Kalifornije u San Dijegu i Univerziteta Teksasa u Austinu su se razvile alata RLBox, koji se može koristiti kao dodatni izolacijski sloj za blokiranje ranjivosti u bibliotekama funkcija. RLBox je usmjeren na rješavanje sigurnosnog problema nepouzdanih biblioteka trećih strana koje nisu pod kontrolom programera, ali čije ranjivosti mogu ugroziti glavni projekat.

Mozilla Company planovi koristite RLBox u Linux verzijama Firefoxa 74 i macOS verzijama Firefoxa 75 za izolaciju izvršavanja biblioteke Grafit, odgovoran za prikazivanje fontova. Međutim, RLBox nije specifičan za Firefox i može se koristiti za izolaciju bilo koje biblioteke u proizvoljnim projektima. Razvoj RLBox širenje pod MIT licencom. RLBox trenutno podržava Linux i macOS platforme, a podrška za Windows se očekuje kasnije.

Mehanizam RLBoxov rad se svodi na kompajliranje C/C++ koda izolirane biblioteke u srednji WebAssembly kod niskog nivoa, koji se zatim dizajnira kao WebAssembly modul, čije se dozvole postavljaju samo u odnosu na ovaj modul (na primjer, biblioteka za obradu stringova neće moći otvoriti mrežnu utičnicu ili datoteku) . Pretvaranje C/C++ koda u WebAssembly se vrši pomoću wasi-sdk.

Za direktno izvršenje, WebAssembly modul se kompajlira u mašinski kod pomoću kompajlera Lucet i radi u zasebnom "nanoprocesu" izoliranom od ostatka memorije aplikacije. Lucet kompajler je baziran na istom kodu kao i JIT motor Dizalica, koji se koristi u Firefoxu za izvršavanje WebAssembly.

Sastavljeni modul radi u posebnom memorijskom području i nema pristup ostatku adresnog prostora. Ako se iskoristi ranjivost u biblioteci, napadač će biti ograničen i neće moći pristupiti memorijskim područjima glavnog procesa ili prenijeti kontrolu izvan izolovanog okruženja.

Mozilla počinje implementaciju RLBox tehnologije izolacije biblioteke

Za programere su date informacije visokog nivoa API, što vam omogućava da pozovete funkcije biblioteke u izolacionom režimu. WebAssembly rukovatelji ne zahtijevaju gotovo nikakve dodatne resurse i interakcija s njima nije mnogo sporija od pozivanja običnih funkcija (bibliotečke funkcije se izvršavaju u obliku izvornog koda, a dodatni troškovi nastaju samo prilikom kopiranja i provjere podataka tokom interakcije sa izolovanim okruženjem). Izolirane bibliotečke funkcije ne mogu se pozvati direktno i mora im se pristupiti pomoću
sloj invoke_sandbox_function().

Zauzvrat, ako je potrebno pozvati eksterne funkcije iz biblioteke, ove funkcije moraju biti eksplicitno definirane pomoću metode register_callback (po defaultu, RLBox omogućava pristup funkcijama standardna biblioteka). Da bi se osigurala sigurnost memorije, izolacija izvršavanja koda nije dovoljna i zahtijeva i provjeru vraćenih tokova podataka.

Vrijednosti generirane u izoliranom okruženju označene su kao nepouzdane i ograničene upotrebe ukaljani tragovi a za “čišćenje” im je potrebno verifikacija i kopiranje u memoriju aplikacije.
Bez čišćenja, pokušaj korištenja zaraženih podataka u kontekstu koji zahtijeva redovne podatke (i obrnuto) rezultira greškama koje se generiraju u vrijeme kompajliranja. Argumenti malih funkcija, povratne vrijednosti i strukture prosljeđuju se kopiranjem između memorije procesa i memorije sandboxa. Za velike skupove podataka, memorija se dodeljuje u izolovanom okruženju i direktni referentni pokazivač sandbox-a se vraća glavnom procesu.

izvor: opennet.ru

Dodajte komentar