Mozilla começa a implementação da tecnologia de isolamento de bibliotecas RLBox

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

A empresa Mozilla planeja implementar RLBox em builds do Firefox para Linux 74 e em builds do Firefox para macOS 75 para isolar a execução da biblioteca Graphite, responsável pela renderização de fontes. Nesse sentido, RLBox não é específico para o Firefox e pode ser utilizado para isolar quaisquer bibliotecas em projetos variados. Trabalhos RLBox são distribuídos sob a licença MIT. Atualmente, RLBox suporta operação em plataformas Linux e macOS, com suporte para Windows previsto para mais tarde.

O mecanismo o funcionamento do RLBox consiste em compilar o código C/C++ da biblioteca a ser isolada em um código intermediário de baixo nível WebAssembly, que é então formatado como um módulo WebAssembly, cujas permissões são definidas vinculadamente apenas a esse módulo (por exemplo, uma biblioteca para manipulação de strings não poderá abrir um socket de rede ou um arquivo). A transformação do código C/C++ em WebAssembly é realizada com a ajuda de wasi-sdk.

Para execução imediata, o módulo WebAssembly é compilado em código de máquina com o auxílio do compilador Lucet e é executado em um "nanoprocesso" separado, isolado da memória restante do aplicativo. O compilador Lucet é baseado no mesmo código que o mecanismo JIT Cranelift, utilizado no Firefox para executar WebAssembly.

O módulo compilado opera em uma área de memória separada e não tem acesso ao restante do espaço de endereçamento. Em caso de exploração de uma vulnerabilidade na biblioteca, o atacante ficará limitado e não poderá acessar áreas de memória do processo principal ou transferir controle para fora do ambiente isolado.

Mozilla começa a implementação da tecnologia de isolamento de bibliotecas RLBox

Para os desenvolvedores, foi fornecido um nível elevado API, que permite a chamada de funções da biblioteca em um modo isolado. Os manipuladores WebAssembly exigem quase nenhum recurso adicional, e a interação com eles não é muito mais lenta do que a chamada de funções normais (as funções da biblioteca são executadas na forma de código nativo, com sobrecarga ocorrendo apenas durante a cópia e verificação de dados no processo de interação com o ambiente isolado). As funções da biblioteca isolada não podem ser chamadas diretamente e, para acessá-las, é necessário utilizar
a camada invoke_sandbox_function().

Por sua vez, se a biblioteca precisar chamar funções externas, essas funções devem ser explicitamente definidas usando o método register_callback (por padrão, o RLBox fornece acesso às funções da biblioteca padrão). Para garantir uma operação segura da memória (memory safety), a simples execução isolada do código não é suficiente; é também necessário garantir a verificação dos fluxos de dados retornados.

Os valores formados no ambiente isolado são marcados como não confiáveis, limitados por meio de rótulos tainted , e para sua 'limpeza' requerem verificação e cópia para a memória do aplicativo.
Sem a limpeza, a tentativa de usar dados tainted em um contexto que exige dados normais (e vice-versa) resulta na geração de erros na fase de compilação. Pequenos argumentos de funções, valores retornados e estruturas são transmitidos por meio de cópia entre a memória do processo e a memória do ambiente isolado. Para grandes conjuntos de dados, a memória é alocada no ambiente isolado, enquanto um ponteiro direto 'sandbox-reference' é retornado ao processo principal.

Fonte: opennet.ru

Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS 🔥 Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS | ProHoster