Bubblewrap, uma ferramenta para criar aplicativos em ambientes isolados

Bubblewrap é uma ferramenta o que funciona para organizar o trabalho de sandbox no Linux e corra no nível do aplicativo de usuários não privilegiados. Na prática, o Bubblewrap é usado pelo projeto Flatpak como uma camada intermediária para isolar aplicativos lançados de pacotes de software.

Para isolamento, o Linux usa tecnologias de virtualização de containers tradicionais baseados no uso de cgroups, namespaces, Seccomp e SELinux. Para realizar operações privilegiadas para configurar um contêiner, o Bubblewrap é iniciado com privilégios de root (um arquivo executável com um sinalizador suid), seguido por uma redefinição de privilégio após o contêiner ser inicializado.

Não há necessidade de habilitar namespaces de usuário no sistema, permitindo que você use seu próprio conjunto de ids em contêineres, já que por padrão não funciona em muitas distribuições.

Sobre o Bubblewrap

Bubblewrap é posicionado como uma implementação limitada de suida do subconjunto das funções de namespace do usuário para excluir todos os IDs de usuário e processo do ambiente, exceto o atual, use os modos CLONE_NEWUSER e CLONE_NEWPID.

Para proteção adicional, programas em execução no Bubblewrap iniciam no modo PR_SET_NO_NEW_PRIVS, que proíbe novos privilégios, por exemplo, com o sinalizador setuid.

O isolamento no nível do sistema de arquivos é feito criando, por padrão, um novo namespace de montagem, no qual uma partição raiz vazia é criada usando tmpfs.

Se necessário, as seções FS externas são anexadas a esta seção no «montar - amarrar»(Por exemplo, começando com a opção«bwrap –ro-bind / usr / usr', A seção / usr é encaminhada do host em modo somente leitura).

Os recursos de rede são limitados ao acesso à interface de loopback invertido com isolamento de pilha de rede por meio de indicadores CLONE_NEWNET e CLONE_NEWUTS.

A principal diferença com o projeto Firejail semelhante, que também usa o iniciador setuid, é o Bubblewrap, a camada de contêiner inclui apenas os recursos mínimos necessários e todas as funções avançadas necessárias para iniciar aplicativos gráficos, interagir com a área de trabalho e filtrar chamadas para Pulseaudio são trazidas para o lado do Flatpak e executadas após os privilégios serem redefinidos.

Firejail, por outro lado, combina todas as funções relacionadas em um arquivo executável, complicando sua auditoria e mantendo a segurança no nível adequado.

Bubblewrap basicamente funciona por criar um namespace de montagem vazio em um sistema de arquivos temporário que será destruída após a conclusão do processamento da sandbox.

Com o uso de opções, o usuário pode construir o ambiente de sistema de arquivos desejado dentro do namespace de montagem montando no link dos diretórios desejados do sistema host.

Bolha 0.4.0

Bubblewrap está atualmente em sua versão 0.4.0 que foi lançado recentemente. O código do projeto é escrito em C e distribuído sob a licença LGPLv2 +.

A nova versão é notável pela implementação de suporte para unir os namespaces e processos usuários existentes (namespaces pid).

Os sinalizadores "–userns", "–userns2" e "–pidns" foram adicionados para controlar a conexão de namespaces.

Este recurso não funciona no modo setuid e requer um modo separado que pode funcionar sem privilégios de root, mas requer que os namespaces do usuário sejam habilitados no sistema (desabilitado por padrão no Debian e RHEL / CentOS) e não exclui a possibilidade de explorar potencialmente vulnerabilidades restantes à beira das restrições de "namespaces do usuário".

Dos novos recursos do Bubblewrap 0.4, a possibilidade de construir com a biblioteca musl C em vez de glibc também é observada, e suporte para salvar informações de namespace em um arquivo de estatísticas no formato JSON.

O código Bubblewrap, bem como a documentação sobre ele, podem ser consultados no Github, o link é este.


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.