Mozilla inicia implementação da tecnologia de isolamento de biblioteca RLBox

Pesquisadores da Universidade de Stanford, da Universidade da Califórnia em San Diego e da Universidade do Texas em Austin desenvolveram ferramentas RLBox, que pode ser usado como uma camada de isolamento adicional para bloquear vulnerabilidades em bibliotecas de funções. O RLBox tem como objetivo resolver o problema de segurança de bibliotecas de terceiros não confiáveis ​​que não estão sob o controle dos desenvolvedores, mas cujas vulnerabilidades podem comprometer o projeto principal.

Mozilla Company planos use RLBox em versões Linux do Firefox 74 e versões macOS do Firefox 75 para isolar a execução da biblioteca Graphite, responsável por renderizar as fontes. No entanto, o RLBox não é específico do Firefox e pode ser usado para isolar qualquer biblioteca em projetos arbitrários. Tempo operacional RLBox espalhar sob licença do MIT. RLBox atualmente oferece suporte a plataformas Linux e macOS, com suporte para Windows esperado posteriormente.

Mecanismo O trabalho da RLBox se resume a compilar o código C/C++ de uma biblioteca isolada em código WebAssembly intermediário de baixo nível, que é então projetado como um módulo WebAssembly, cujas permissões são definidas em relação apenas a este módulo (por exemplo, uma biblioteca para processar strings não será capaz de abrir um soquete ou arquivo de rede). A conversão do código C/C++ para WebAssembly é feita usando wasi-sdk.

Para execução direta, o módulo WebAssembly é compilado em código de máquina usando um compilador Luce e é executado em um "nanoprocesso" separado, isolado do restante da memória do aplicativo. O compilador Lucet é baseado no mesmo código do mecanismo JIT elevador de guindaste, usado no Firefox para executar o WebAssembly.

O módulo montado opera em uma área de memória separada e não tem acesso ao restante do espaço de endereço. Se uma vulnerabilidade na biblioteca for explorada, o invasor ficará limitado e não conseguirá acessar áreas de memória do processo principal ou transferir o controle fora do ambiente isolado.

Mozilla inicia implementação da tecnologia de isolamento de biblioteca RLBox

Informações de alto nível são fornecidas para desenvolvedores API, que permite chamar funções de biblioteca no modo de isolamento. Os manipuladores WebAssembly quase não requerem recursos adicionais e a interação com eles não é muito mais lenta do que chamar funções comuns (as funções da biblioteca são executadas na forma de código nativo e os custos indiretos surgem apenas ao copiar e verificar dados durante a interação com o ambiente isolado). Funções de biblioteca isoladas não podem ser chamadas diretamente e devem ser acessadas usando
camada invocar_sandbox_function().

Por sua vez, caso seja necessário chamar funções externas da biblioteca, essas funções devem ser definidas explicitamente através do método register_callback (por padrão, RLBox fornece acesso às funções biblioteca padrão). Para garantir a segurança da memória, o isolamento da execução do código não é suficiente e requer também a verificação dos fluxos de dados retornados.

Valores gerados em um ambiente isolado são marcados como não confiáveis ​​e de uso limitado marcas contaminadas e para “limpar” eles exigem verificação e copiando para a memória do aplicativo.
Sem limpeza, a tentativa de usar dados corrompidos em um contexto que requer dados regulares (e vice-versa) resulta na geração de erros em tempo de compilação. Pequenos argumentos de função, valores de retorno e estruturas são passados ​​por meio de cópia entre a memória do processo e a memória da sandbox. Para grandes conjuntos de dados, a memória é alocada em um ambiente isolado e um ponteiro de referência direta de sandbox é retornado ao processo principal.

Fonte: opennet.ru

Adicionar um comentário