Mozilla începe implementarea tehnologiei de izolare a bibliotecii RLBox

Cercetători de la Universitatea Stanford, Universitatea din California din San Diego și Universitatea din Texas din Austin dezvoltat unelte RLBox, care poate fi folosit ca un strat de izolare suplimentar pentru a bloca vulnerabilitățile din bibliotecile de funcții. RLBox are ca scop rezolvarea problemei de securitate a bibliotecilor terțe care nu sunt de încredere, care nu sunt sub controlul dezvoltatorilor, dar ale căror vulnerabilități pot compromite proiectul principal.

Compania Mozilla planuri utilizați RLBox în versiunile Linux ale Firefox 74 și versiunile macOS ale Firefox 75 pentru a izola execuția bibliotecii Grafit, responsabil pentru redarea fonturilor. Cu toate acestea, RLBox nu este specific pentru Firefox și poate fi folosit pentru a izola orice biblioteci în proiecte arbitrare. Evoluții RLBox răspândire sub licență MIT. RLBox acceptă în prezent platformele Linux și macOS, iar suportul Windows este așteptat mai târziu.

mecanism Munca lui RLBox se reduce la compilarea codului C/C++ al unei biblioteci izolate într-un cod WebAssembly intermediar de nivel scăzut, care este apoi proiectat ca un modul WebAssembly, ale cărui permisiuni sunt stabilite numai în raport cu acest modul (de exemplu, o bibliotecă pentru procesarea șirurilor de caractere nu va putea deschide o priză de rețea sau un fișier) . Convertirea codului C/C++ în WebAssembly se face folosind wasi-sdk.

Pentru execuție directă, modulul WebAssembly este compilat în codul mașinii folosind un compilator Lucet și rulează într-un „nanoproces” separat, izolat de restul memoriei aplicației. Compilatorul Lucet se bazează pe același cod ca și motorul JIT ridicare cu macara, folosit în Firefox pentru a executa WebAssembly.

Modulul asamblat funcționează într-o zonă de memorie separată și nu are acces la restul spațiului de adrese. Dacă o vulnerabilitate din bibliotecă este exploatată, atacatorul va fi limitat și nu va putea accesa zonele de memorie ale procesului principal sau transfera controlul în afara mediului izolat.

Mozilla începe implementarea tehnologiei de izolare a bibliotecii RLBox

Informații de nivel înalt sunt oferite dezvoltatorilor API, care vă permite să apelați funcții de bibliotecă în modul de izolare. Manipulatorii WebAssembly nu necesită aproape resurse suplimentare, iar interacțiunea cu acestea nu este mult mai lentă decât apelarea funcțiilor obișnuite (funcțiile bibliotecii sunt executate sub formă de cod nativ, iar costurile generale apar doar la copierea și verificarea datelor în timpul interacțiunii cu mediul izolat). Funcțiile izolate ale bibliotecii nu pot fi apelate direct și trebuie accesate folosind
stratul invoke_sandbox_function().

La rândul său, dacă este necesar să apelați funcții externe din bibliotecă, aceste funcții trebuie definite în mod explicit folosind metoda register_callback (în mod implicit, RLBox oferă acces la funcții bibliotecă standard). Pentru a asigura siguranța memoriei, izolarea execuției codului nu este suficientă și necesită și verificarea fluxurilor de date returnate.

Valorile generate într-un mediu izolat sunt marcate ca fiind nedemne de încredere și cu utilizare limitată urme contaminate iar pentru „curățare” au nevoie verificare și copierea în memoria aplicației.
Fără curățare, încercarea de a utiliza date contaminate într-un context care necesită date obișnuite (și invers) are ca rezultat generarea de erori în timpul compilării. Argumentele mici ale funcției, valorile returnate și structurile sunt transmise prin copiere între memoria de proces și memoria sandbox. Pentru seturi mari de date, memoria este alocată într-un mediu izolat și un indicator direct de referință pentru sandbox este returnat procesului principal.

Sursa: opennet.ru

Adauga un comentariu