RLBox, a nova tecnologia de isolamento de biblioteca usada pela Mozilla

Logotipo do Firefox

Pesquisadores da Universidade de Stanford, a Universidade da Califórnia em San Diego y la Universidade do Texas em Austin Eles desenvolveram um conjunto de ferramentas que deram o nome de "RLBox", que pode ser usado 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 são controlados pelos desenvolvedores, mas vulnerabilidades nas quais o projeto principal pode comprometer.

A Mozilla planeja usar RLBox nas compilações do Firefox 74 para Linux e as compilações de macOS no Firefox 75 para isolar a execução da biblioteca Graphite, que é responsável por representar as fontes.

Ao mesmo tempo, o RLBox não é específico do Firefox e pode ser usado para isolar qualquer biblioteca em projetos arbitrários.

Sobre a RLBox

O mecanismo operacional RLBox resume-se a compilar o código C / C ++ de uma biblioteca isolada em um código WebAssembly intermediário baixo nível, que é então emitido como um módulo WebAssembly, cuja autoridade é definida para vincular apenas a este módulo (por exemplo, uma biblioteca para processamento de strings não pode abrir um soquete ou arquivo de rede) Conversão de código C / C ++ a WebAssembly é feito usando wasi-sdk.

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

O módulo montado funciona em uma área de memória separada e não tem acesso ao resto do espaço de endereço. No caso de explorar a vulnerabilidade na biblioteca, o invasor será limitado e não poderá acessar as áreas de memória do processo principal ou transferir o controle para fora da sandbox.

Uma API de alto nível é fornecida para desenvolvedores, o que permite chamar funções de biblioteca em modo de isolamento.

Os Os controladores WebAssembly não requerem quase nenhum recurso adicional e interagir com eles não é muito mais lento do que chamar funções comuns (as funções da biblioteca são executadas na forma de código nativo, e a sobrecarga ocorre apenas ao copiar e verificar dados no processo de interação com o ambiente em área restrita).

As funções de uma biblioteca isolada não podem ser chamadas diretamente e, para acessá-las, você deve usar a camada invoke_sandbox_function().

Por sua vez, se eles precisam chamar funções externas da biblioteca, essas funções devem ser explicitamente definidas usando o método register_callback (por padrão, RLBox fornece acesso às funções da biblioteca padrão).

Para garantir a operação segura da memória, isolar a execução do código não é suficiente e também você precisa fornecer verificação dos fluxos de dados retornados.

Os valores gerados em um ambiente isolado são marcados como não confiáveis, limitados por tags contaminadas e requerem verificação e cópia para a memória do aplicativo para "limpeza".

Sem a limpeza, uma tentativa de usar dados poluídos em um contexto que requer dados regulares (e vice-versa) leva à geração de erros na fase de compilação.

Pequenos argumentos de função, valores de retorno e estruturas são passados ​​copiando entre a memória do processo e a memória da caixa de proteção. Para grandes conjuntos de dados, a memória é alocada em um ambiente isolado e um ponteiro direto de "referência de área restrita" é retornado ao processo principal.

Os desenvolvimentos do RLBox são distribuídos sob a licença MIT. RLBox atualmente suporta Linux e macOS e deverá ser compatível com o Windows posteriormente.

Se você quiser saber mais sobre esta nova tecnologia que a Mozilla planeja implementar no Firefox, pode consultar seu desenvolvimento e também testar a API no link a seguir.


Deixe um comentário

Seu endereço de email não será publicado. Campos obrigatórios são marcados com *

*

*

  1. Responsável pelos dados: Miguel Ángel Gatón
  2. Finalidade dos dados: Controle de SPAM, gerenciamento de comentários.
  3. Legitimação: Seu consentimento
  4. Comunicação de dados: Os dados não serão comunicados a terceiros, exceto por obrigação legal.
  5. Armazenamento de dados: banco de dados hospedado pela Occentus Networks (UE)
  6. Direitos: A qualquer momento você pode limitar, recuperar e excluir suas informações.