Mozilla započinje implementaciju tehnologije izolacije knjižnice RLBox

Istraživači sa Sveučilišta Stanford, Sveučilišta Kalifornija u San Diegu i Sveučilišta Texas u Austinu razvijena alata RLBox, koji se može koristiti kao dodatni izolacijski sloj za blokiranje ranjivosti u bibliotekama funkcija. RLBox je usmjeren na rješavanje sigurnosnih problema nepouzdanih biblioteka trećih strana koje nisu pod kontrolom programera, ali čije ranjivosti mogu ugroziti glavni projekt.

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

mehanizam Rad RLBoxa svodi se na kompajliranje C/C++ koda izolirane biblioteke u WebAssembly kod srednje razine niske razine, koji je zatim dizajniran kao WebAssembly modul, čije su dozvole postavljene samo u odnosu na ovaj modul (na primjer, biblioteka za obradu nizova neće moći otvoriti mrežnu utičnicu ili datoteku) . Pretvaranje C/C++ koda u WebAssembly vrši se pomoću wasi-sdk.

Za izravno izvođenje, modul WebAssembly kompilira se u strojni kod pomoću prevoditelja Lucet i radi u zasebnom "nanoprocesu" izoliranom od ostatka memorije aplikacije. Kompajler Lucet temelji se na istom kodu kao JIT motor Dizalica, koji se koristi u Firefoxu za izvođenje WebAssemblyja.

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

Mozilla započinje implementaciju tehnologije izolacije knjižnice RLBox

Informacije na visokoj razini pružaju se programerima API, koji vam omogućuje pozivanje funkcija knjižnice u izoliranom načinu rada. WebAssembly rukovatelji ne zahtijevaju gotovo nikakve dodatne resurse i interakcija s njima nije puno sporija od poziva običnih funkcija (funkcije knjižnice se izvršavaju u obliku izvornog koda, a režijski troškovi nastaju samo kod kopiranja i provjere podataka tijekom interakcije s izoliranim okruženjem). Izolirane funkcije knjižnice ne mogu se izravno pozvati i mora im se pristupiti pomoću
sloj invoke_sandbox_function().

Zauzvrat, ako je potrebno pozvati vanjske funkcije iz biblioteke, te funkcije moraju biti eksplicitno definirane pomoću metode register_callback (prema zadanim postavkama RLBox omogućuje pristup funkcijama standardna knjižnica). Kako bi se osigurala sigurnost memorije, izolacija izvršenja koda nije dovoljna i također zahtijeva provjeru vraćenih tokova podataka.

Vrijednosti generirane u izoliranom okruženju označene su kao nepouzdane i ograničene upotrebe zaražene oznake a za "čišćenje" zahtijevaju verifikacija i kopiranje u memoriju aplikacije.
Bez čišćenja, pokušaj korištenja zaraženih podataka u kontekstu koji zahtijeva regularne podatke (i obrnuto) rezultira generiranjem pogrešaka tijekom kompilacije. Mali argumenti funkcije, povratne vrijednosti i strukture prosljeđuju se kopiranjem između memorije procesa i memorije sandboxa. Za velike skupove podataka memorija se dodjeljuje u izoliranom okruženju, a izravni referentni pokazivač sandboxa vraća se u glavni proces.

Izvor: opennet.ru

Dodajte komentar