Mozilla comienza la implementación de la tecnología de aislamiento de bibliotecas RLBox

Investigadores de la Universidad de Stanford, la Universidad de California en San Diego y la Universidad de Texas en Austin han desarrollado herramientas RLBox, que se puede utilizar como una capa de aislamiento adicional para bloquear vulnerabilidades en las bibliotecas de funciones. RLBox tiene como objetivo resolver el problema de seguridad de las bibliotecas de terceros que no son de confianza y que no están bajo el control de los desarrolladores, pero cuyas vulnerabilidades pueden comprometer el proyecto principal.

Empresa Mozilla planea use RLBox en compilaciones de Linux de Firefox 74 y compilaciones de macOS de Firefox 75 para aislar la ejecución de la biblioteca Grafito, responsable de representar las fuentes. Sin embargo, RLBox no es específico de Firefox y puede usarse para aislar cualquier biblioteca en proyectos arbitrarios. Trabajo de base RLBox propagar bajo licencia MIT. RLBox actualmente es compatible con las plataformas Linux y macOS, y se espera que sea compatible con Windows más adelante.

Mecanismo El trabajo de RLBox se reduce a compilar el código C/C++ de una biblioteca aislada en código WebAssembly intermedio de bajo nivel, que luego se diseña como un módulo WebAssembly, cuyos permisos se establecen en relación únicamente con este módulo (por ejemplo, una biblioteca para procesar cadenas no podrá abrir un socket de red o un archivo). La conversión de código C/C++ a WebAssembly se realiza utilizando wasi-sdk.

Para la ejecución directa, el módulo WebAssembly se compila en código de máquina mediante un compilador. lucet y se ejecuta en un "nanoproceso" separado y aislado del resto de la memoria de la aplicación. El compilador Lucet se basa en el mismo código que el motor JIT. Grúa elevadora, utilizado en Firefox para ejecutar WebAssembly.

El módulo ensamblado opera en un área de memoria separada y no tiene acceso al resto del espacio de direcciones. Si se explota una vulnerabilidad en la biblioteca, el atacante estará limitado y no podrá acceder a áreas de memoria del proceso principal ni transferir el control fuera del entorno aislado.

Mozilla comienza la implementación de la tecnología de aislamiento de bibliotecas RLBox

Se proporciona información de alto nivel para los desarrolladores. API, que le permite llamar a funciones de biblioteca en modo aislado. Los manejadores de WebAssembly casi no requieren recursos adicionales y la interacción con ellos no es mucho más lenta que llamar a funciones normales (las funciones de la biblioteca se ejecutan en forma de código nativo y los costos generales surgen solo al copiar y verificar datos durante la interacción con el entorno aislado). Las funciones de biblioteca aisladas no se pueden llamar directamente y se debe acceder a ellas mediante
capa invoke_sandbox_function().

A su vez, si es necesario llamar a funciones externas desde la biblioteca, estas funciones deben definirse explícitamente utilizando el método Register_callback (por defecto, RLBox proporciona acceso a funciones biblioteca estándar). Para garantizar la seguridad de la memoria, el aislamiento de la ejecución del código no es suficiente y también requiere verificar los flujos de datos devueltos.

Los valores generados en un entorno aislado se marcan como poco confiables y limitados utilizando marcas contaminadas y para “limpiar” requieren verificación y copiar a la memoria de la aplicación.
Sin limpieza, intentar utilizar datos contaminados en un contexto que requiere datos regulares (y viceversa) genera errores en el momento de la compilación. Los argumentos de funciones pequeñas, los valores de retorno y las estructuras se pasan mediante copia entre la memoria de proceso y la memoria sandbox. Para conjuntos de datos grandes, la memoria se asigna en un entorno aislado y se devuelve un puntero de referencia directa al proceso principal.

Fuente: opennet.ru

Añadir un comentario