Lançamento do Bubblewrap 0.4.0, uma camada para criar ambientes isolados.

Disponível nova versão da ferramenta Bubblewrap 0.4.0, destinada à organização do trabalho em ambientes isolados no Linux e operando no nível de aplicativos de usuários não privilegiados. Na prática, o Bubblewrap é utilizado pelo projeto Flatpak como uma camada para isolar aplicativos executados a partir de pacotes. O código do projeto é escrito em C e é distribuído sob a licença LGPLv2+.

Para isolamento, são utilizadas tecnologias tradicionais de virtualização de contêineres do Linux, baseadas no uso de cgroups, namespaces, Seccomp e SELinux. Para realizar operações privilegiadas de configuração do contêiner, o Bubblewrap é executado com privilégios de root (arquivo executável com a flag suid), com a posterior revogação das permissões após a inicialização do contêiner.

A ativação do namespace de identificadores de usuário (user namespaces), que permite usar em contêineres um conjunto separado de identificadores, não é necessária para operação, pois não funciona por padrão em muitas distribuições (o Bubblewrap é posicionado como uma implementação suid limitada de um subconjunto das capacidades dos user namespaces — para excluir todos os identificadores de usuários e processos do ambiente, exceto o atual, são utilizados os modos CLONE_NEWUSER e CLONE_NEWPID). Para proteção adicional, os programas executados sob o gerenciamento do
Bubblewrap são iniciados no modo PR_SET_NO_NEW_PRIVS, que proíbe a obtenção de novos privilégios, por exemplo, na presença da flag setuid.

O isolamento no nível do sistema de arquivos é realizado através da criação por padrão de um novo namespace de pontos de montagem (mount namespace), onde um sistema de arquivos raiz vazio é criado utilizando tmpfs. Nesse sistema, partes da FS externa podem ser anexadas conforme necessário no modo "mount --bind" (por exemplo, ao executar com a opção "bwrap --ro-bind /usr /usr", a partição /usr é passada do sistema principal em modo somente leitura). As capacidades de rede são restritas ao acesso ao loopback, isolando a pilha de rede através das flags CLONE_NEWNET e CLONE_NEWUTS.

A principal diferença em relação a um projeto semelhante Firejail, que também utiliza um modelo de execução com setuid, se diferencia pelo fato de que no Bubblewrap a camada para criação de contêineres inclui apenas o mínimo necessário de capacidades, enquanto todas as funções avançadas necessárias para executar aplicativos gráficos, interagir com o desktop e filtrar chamadas ao Pulseaudio são delegadas ao Flatpak e executadas após a revogação dos privilégios. Firejail, por outro lado, combina todas as funções auxiliares em um único arquivo executável, o que dificulta sua auditoria e a manutenção da segurança em nível adequado..

A nova versão é notável pela implementação do suporte à junção de namespaces existentes de identificadores de usuários (user namespaces) e processos (pid namespaces). Para gerenciar a conexão de namespaces, foram adicionados os flags “—userns”, “—userns2” e “—pidns”.
Essa funcionalidade não opera no modo setuid e requer a aplicação de um modo separado, que pode operar sem obter privilégios de root, mas requer a ativação
dos user namespaces no sistema (desabilitados por padrão no Debian e RHEL/CentOS) e não exclui a possibilidade de operação potencialmente permanecer. vulnerabilidades para o limite de restrições "user namespaces". Entre as novas funcionalidades do Bubblewrap 0.4, destaca-se a capacidade de compilar com a biblioteca C musl em vez do glibc e o suporte para salvar informações sobre namespaces em um arquivo de estatísticas no formato JSON.

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