Mozilla comeza a implantación da tecnoloxía de illamento da biblioteca RLBox

Investigadores da Universidade de Stanford, da Universidade de California en San Diego e da Universidade de Texas en Austin desenvolveron ferramentas RLBox, que se pode usar como unha capa de illamento adicional para bloquear vulnerabilidades nas bibliotecas de funcións. RLBox está dirixido a resolver o problema de seguridade das bibliotecas de terceiros non fiables que non están baixo o control dos desenvolvedores, pero cuxas vulnerabilidades poden comprometer o proxecto principal.

Compañía Mozilla plans use RLBox en versións Linux de Firefox 74 e versións de macOS de Firefox 75 para illar a execución da biblioteca grafito, responsable de renderizar fontes. Non obstante, RLBox non é específico de Firefox e pódese usar para illar calquera biblioteca en proxectos arbitrarios. Desenvolvementos RLBox espallamento baixo licenza MIT. Actualmente, RLBox admite plataformas Linux e macOS, e espérase compatibilidade con Windows máis tarde.

Mecanismo O traballo de RLBox consiste en compilar o código C/C++ dunha biblioteca illada en código WebAssembly intermedio de baixo nivel, que despois está deseñado como un módulo WebAssembly, cuxos permisos se establecen só en relación con este módulo (por exemplo, unha biblioteca para procesar cadeas non poderá abrir un socket ou ficheiro de rede) . A conversión de código C/C++ a WebAssembly faise usando wasi-sdk.

Para a execución directa, o módulo WebAssembly compílase en código máquina mediante un compilador Lucet e execútase nun "nanoproceso" separado illado do resto da memoria da aplicación. O compilador Lucet baséase no mesmo código que o motor JIT Elevador de guindastres, usado en Firefox para executar WebAssembly.

O módulo montado funciona nunha área de memoria separada e non ten acceso ao resto do espazo de enderezos. Se se explota unha vulnerabilidade da biblioteca, o atacante estará limitado e non poderá acceder ás áreas de memoria do proceso principal nin transferir o control fóra do contorno illado.

Mozilla comeza a implantación da tecnoloxía de illamento da biblioteca RLBox

Ofrécese información de alto nivel para os desenvolvedores API, que lle permite chamar funcións da biblioteca en modo illado. Os manejadores de WebAssembly case non requiren recursos adicionais e a interacción con eles non é moito máis lenta que chamar a funcións ordinarias (as funcións da biblioteca execútanse en forma de código nativo e os custos xerais só xorden ao copiar e comprobar os datos durante a interacción co ambiente illado). As funcións de biblioteca illadas non se poden chamar directamente e deben accederse mediante
capa invoke_sandbox_function().

Pola súa banda, se é necesario chamar a funcións externas desde a biblioteca, estas funcións deben definirse explícitamente mediante o método register_callback (por defecto, RLBox proporciona acceso ás funcións). biblioteca estándar). Para garantir a seguridade da memoria, o illamento da execución de código non é suficiente e require tamén comprobar os fluxos de datos devoltos.

Os valores xerados nun ambiente illado están marcados como pouco fiables e de uso limitado marcas contaminadas e para a "limpeza" precisan verificación e copiar na memoria da aplicación.
Sen a limpeza, o intento de utilizar datos contaminados nun contexto que require datos regulares (e viceversa) provoca que se xeren erros no momento da compilación. Os argumentos de funcións pequenas, os valores de retorno e as estruturas pásanse mediante a copia entre a memoria de proceso e a memoria sandbox. Para conxuntos de datos grandes, a memoria atribúese nun ambiente illado e devólvese ao proceso principal un punteiro de referencia de sandbox directo.

Fonte: opennet.ru

Engadir un comentario