Mozilla începe implementarea tehnologiei de izolare a bibliotecilor RLBox

Cercetătorii de la Universitatea Stanford, Universitatea din California, San Diego și Universitatea din Texas, Austin au dezvoltat un instrumentar RLBox, care poate fi utilizat ca un nivel suplimentar de izolare pentru a bloca vulnerabilitățile în bibliotecile funcțiilor. RLBox își propune să rezolve problema securității bibliotecilor de terță parte nesigure, care nu sunt sub controlul dezvoltatorilor, dar vulnerabilitățile acestora pot compromite proiectul principal.

Compania Mozilla planifică a implementa RLBox în versiunile Linux ale Firefox 74 și versiunile macOS ale Firefox 75 pentru izolarea execuției bibliotecii Graphite, responsabilă pentru redarea fonturilor. În acest sens, RLBox nu este specific pentru Firefox și poate fi utilizat pentru izolarea oricăror biblioteci în proiecte diverse. Dezvoltări RLBox sunt distribuite sub licența MIT. În prezent, RLBox suportă funcționarea pe platformele Linux și macOS, suportul pentru Windows este așteptat ulterior.

Mecanismul funcționarea RLBox constă în compilarea codului C/C++ al bibliotecii izolate în cod intermediar de nivel scăzut WebAssembly, care este apoi structurat sub formă de modul WebAssembly, iar permisiunile acestuia sunt stabilite astfel încât să se refere doar la acest modul (de exemplu, o bibliotecă pentru procesarea șirurilor nu va putea deschide un socket de rețea sau un fișier). Conversia codului C/C++ în WebAssembly se face cu ajutorul wasi-sdk.

Pentru executarea directă, modul WebAssembly este compilat în cod mașină cu ajutorul compilatorului Lucet și este executat într-un „nanoproces” separat, izolat de restul memoriei aplicației. Compilatorul Lucet se bazează pe aceeași bază de cod ca și motorul JIT Cranelift, utilizat în Firefox pentru executarea WebAssembly.

Modulul compilat funcționează într-o zonă separată de memorie și nu are acces la restul spațiului de adrese. În cazul exploatării unei vulnerabilități în bibliotecă, 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 bibliotecilor RLBox

Dezvoltatorilor le este oferit un nivel de abstractizare ridicat API, care permite apelarea funcțiilor bibliotecii în mod izolat. Manipulatorii WebAssembly necesită aproape resurse suplimentare și interacțiunea cu ei nu este semnificativ mai lentă decât apelarea funcțiilor obișnuite (funcțiile bibliotecii sunt executate sub formă de cod nativ, iar costurile suplimentare apar doar la copierea și verificarea datelor în procesul de interacțiune cu mediul izolat). Funcțiile bibliotecii izolate nu pot fi apelate direct și pentru a le accesa este necesar să se aplice
stratul invoke_sandbox_function().

Pe de altă parte, dacă din bibliotecă este necesar să se apeleze funcții externe, aceste funcții trebuie definite explicit folosind metoda register_callback (în mod implicit, RLBox oferă acces la funcțiile bibliotecii standard). Pentru a asigura o funcționare sigură cu memoria (safety memory), izolarea execuției codului nu este suficientă și este necesar să se asigure, de asemenea, verificarea fluxurilor de date returnate.

Valorile generate în mediul izolat sunt marcate ca nesigure, fiind restricționate prin etichete tainted și pentru a fi „curățate” necesită verificarea și copierea în memoria aplicației.
Fără curățare, încercarea de a utiliza datele tainted în contextul care necesită date obișnuite (și invers) duce la generarea de erori în etapa de compilare. Argumentele mici ale funcțiilor, valorile returnate și structurile sunt transmise prin copiere între memoria procesului și memoria mediului izolat. Pentru seturi mari de date, memoria este alocată în mediul izolat, iar procesului principal i se returnează un pointer direct „sandbox-reference”.

Sursa: opennet.ro

Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS 🔥 Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS | ProHoster