O Google abriu um sistema para criar ambientes sandbox para C / C ++

Google

Faz alguns dias O Google anunciou a abertura do projeto Sandboxed APIo que Permite automatizar o processo de criação de sandbox para execução isolada de bibliotecas arbitrárias em C e C ++.

Isolar seu código de bibliotecas permite proteger contra possíveis ataques nas alças fornecidas pelas bibliotecas, criando uma barreira adicional no caso de haver vulnerabilidades em seu código que podem ser exploradas por meio de manipulações com os dados externos que entram na biblioteca. O código está aberto sob a licença Apache 2.0.

O isolamentoou é feito usando dentro do tempo de execução Sandbox2, em que os namespaces, cgroups e seccomp-bpf são usados.

O código entregue ao sandbox que é executado em um processo separado, para o qual o acesso a chamadas e recursos do sistema, bem como arquivos e conexões de rede, é limitado.

Os processos obtêm acesso apenas aos recursos do sistema que são diretamente necessários para executar o código isolado.

Sandbox2 define os componentes para executar o processoou, aplique as regras de isolamento e apoie a execução subsequente.

sandbox2 ele pode ser usado separadamente da API Sandbox para isolar não apenas bibliotecas, mas também processos arbitrários.

Além de aumentar a proteção, um ponto positivo na eliminação do código em processos separados é a possibilidade de uma regulamentação separada dos limites de consumo de memória da biblioteca e da CPU, bem como da proteção contra falhas: uma falha no biblioteca não causa o travamento de todo o aplicativo.

Sobre a Sandboxed API

API Sandboxed é um plugin Sandbox2 que simplifica o transporte de bibliotecas existentes para rodar em modo isolado.

API Sandboxed fornece uma interface de software intermediária que permite executar o código da biblioteca em um ambiente sandboxbem como organizar uma chamada para uma biblioteca em ambiente sandbox e garantir a entrega dos resultados da biblioteca ao programa principal.

Se acessa a biblioteca isolada por meio de um RPC especializado baseado no protocolo ProtoBuffs.

A desenvolvedores de bibliotecas recebem um conjunto de opções que permitem o acesso a variáveis, descritores de arquivo, buffers e funções de biblioteca isoladas do aplicativo base, incluindo ferramentas para sincronização automática e controlada de memória para compartilhamento de matrizes e estruturas.

visão geral sapi

Quando uma biblioteca de software que analisa esses dados é complexa o suficiente, ela pode ser vítima de certos tipos de vulnerabilidades de segurança: erros de corrupção de memória ou outros tipos de problemas relacionados à lógica de análise (por exemplo, problemas de passagem de caminho). Essas vulnerabilidades podem ter sérias implicações de segurança.

Além disso, Uma API é fornecida para monitorar a operação de processos isolados e reiniciá-los em caso de falhas.

Para a biblioteca isolada, o código de anotações das funções isoladas é gerado automaticamente para o sistema de montagem Bazel e a interface do programa (SAPI) para a interação entre os processos básicos e isolados.

O desenvolvedor também deve criar um arquivo de cabeçalho com regras de isolamento que definem todas as chamadas de sistema e operações permitidas (ler, escrever, abrir arquivos, acesso ao tempo, a capacidade de instalar manipuladores de sinal, suporte para alocação de memória via malloc, etc.).

Os arquivos e diretórios aos quais a biblioteca deve ter acesso são determinados separadamente.

Instalação

Atualmente, o projeto está disponível apenas para Linux, mas no futuro eles prometem adicionar suporte para sistemas macOS e BSD e, a longo prazo, e para Windows. sim você deseja instalar a API em sandbox, você pode seguir as instruções fornecidas neste link

Dos planos, nota-se também a capacidade de isolar bibliotecas em linguagens diferentes de C e C ++, suporte adicional de tempo de execução para isolamento (por exemplo, com base na virtualização de hardware) e a capacidade de usar CMake e outros sistemas de montagem (o suporte agora é limitado ao sistema de construção Bazel).

fonte: https://security.googleblog.com


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: AB Internet Networks 2008 SL
  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.