Mozilla comença la implementació de la tecnologia d'aïllament de biblioteques RLBox

Investigadors de la Universitat de Stanford, la Universitat de Califòrnia a San Diego i la Universitat de Texas a Austin desenvolupat eines RLBox, que es pot utilitzar com a capa d'aïllament addicional per bloquejar vulnerabilitats a les biblioteques de funcions. RLBox està dirigit a resoldre el problema de seguretat de les biblioteques de tercers no fiables que no estan sota el control dels desenvolupadors, però les vulnerabilitats de les quals poden comprometre el projecte principal.

Companyia Mozilla plans utilitzeu RLBox en versions Linux de Firefox 74 i versions macOS de Firefox 75 per aïllar l'execució de la biblioteca grafit, responsable de la representació dels tipus de lletra. Tanmateix, RLBox no és específic del Firefox i es pot utilitzar per aïllar qualsevol biblioteca en projectes arbitraris. Evolucions RLBox propagació sota llicència MIT. Actualment, RLBox és compatible amb les plataformes Linux i macOS, amb el suport de Windows esperat més endavant.

Mecanisme El treball de RLBox consisteix a compilar el codi C/C++ d'una biblioteca aïllada en codi WebAssembly intermedi de baix nivell, que després es dissenya com un mòdul WebAssembly, els permisos del qual s'estableixen només en relació amb aquest mòdul (per exemple, una biblioteca per processar cadenes no podrà obrir un sòcol o fitxer de xarxa). La conversió de codi C/C++ a WebAssembly es fa mitjançant wasi-sdk.

Per a l'execució directa, el mòdul WebAssembly es compila en codi màquina mitjançant un compilador Lucet i s'executa en un "nanoprocés" separat aïllat de la resta de la memòria de l'aplicació. El compilador Lucet es basa en el mateix codi que el motor JIT Grua elevadora, utilitzat al Firefox per executar WebAssembly.

El mòdul muntat funciona en una àrea de memòria independent i no té accés a la resta de l'espai d'adreces. Si s'explota una vulnerabilitat de la biblioteca, l'atacant es veurà limitat i no podrà accedir a les àrees de memòria del procés principal ni transferir el control fora de l'entorn aïllat.

Mozilla comença la implementació de la tecnologia d'aïllament de biblioteques RLBox

Es proporciona informació d'alt nivell per als desenvolupadors API, que us permet cridar funcions de biblioteca en mode d'aïllament. Els gestors de WebAssembly gairebé no requereixen recursos addicionals i la interacció amb ells no és molt més lenta que cridar funcions ordinàries (les funcions de la biblioteca s'executen en forma de codi natiu i els costos generals només sorgeixen en copiar i comprovar dades durant la interacció amb l'entorn aïllat). Les funcions aïllades de la biblioteca no es poden cridar directament i s'ha d'accedir mitjançant
capa invoke_sandbox_function().

Al seu torn, si és necessari cridar funcions externes des de la biblioteca, aquestes funcions s'han de definir explícitament mitjançant el mètode register_callback (per defecte, RLBox proporciona accés a funcions). biblioteca estàndard). Per garantir la seguretat de la memòria, l'aïllament de l'execució de codi no és suficient i també requereix comprovar els fluxos de dades retornats.

Els valors generats en un entorn aïllat es marquen com a poc fiables i d'ús limitat marques contaminades i per "netejar" requereixen verificació i còpia a la memòria de l'aplicació.
Sense neteja, intentar utilitzar dades contaminades en un context que requereix dades regulars (i viceversa) fa que es generin errors en temps de compilació. Els arguments de funcions petites, els valors de retorn i les estructures es transmeten mitjançant la còpia entre la memòria de procés i la memòria sandbox. Per a conjunts de dades grans, la memòria s'assigna en un entorn aïllat i es retorna un punter de referència directe al procés principal.

Font: opennet.ru

Afegeix comentari