E foi lançado o Bubblewrap 0.6 com suporte para Meson e mais. Confira as novidades desse utilitário usado para restringir aplicativos.
Bubblewrap é um utilitário que geralmente é usado para restringir aplicativos individuais a usuários não privilegiados. Na prática, o projeto Flatpak usa Bubblewrap como uma camada para isolar aplicativos iniciados de pacotes.
Para isolamento, o Linux usa tecnologias tradicionais de virtualização de contêiner com base no uso de cgroups, namespaces, Seccomp e SELinux.
Para executar 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 pela redefinição de privilégios após a inicialização do contêiner.
O Bubblewrap está posicionado como uma implementação suid limitada do subconjunto das funções de namespace do usuário para excluir todos os identificadores de usuário e processo do ambiente, exceto o atual, usando os modos CLONE_NEWUSER e CLONE_NEWPID.
Para proteção adicional, os programas executados 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 do FS externo são anexadas a esta seção no modo “mount –bind” (por exemplo, iniciando com a opção “bwrap –ro-bind /usr/usr”, a seção /usr é encaminhada do host no modo somente leitura).
Os recursos de rede são limitados ao acesso à interface de loopback isolada da pilha de rede por meio dos sinalizadores CLONE_NEWNET e CLONE_NEWUTS.
A principal diferença do projeto Firejail semelhante, que também usa o lançador setuid, é que no Bubblewrap, a camada wrapper inclui apenas os recursos mínimos necessários e todos os recursos avançados necessários para iniciar aplicativos gráficos, interagir com a área de trabalho e filtrar chamadas. para o Pulseaudio, eles são trazidos para o lado do Flatpak e executados após redefinir os privilégios.
Novidades do Bubblewrap 0.6
No Bubblewrap 0.6 destaca-se que foi adicionado suporte para o sistema de compilação Meson, com o qual o suporte para compilação com Autotools foi preservado por enquanto, mas pretende-se que isso seja eliminado em favor do uso do Meson em uma versão futura.
Outra novidade nesta do Bubblewrap 0.6 é a implementação da opção “--add-seccomp
” para adicionar mais de um programa seccomp, além da adição de um aviso de que se a opção “--seccomp
” for especificada novamente », apenas a última opção será aplicada.
Note-se também que foi adicionado suporte parcial para a especificação REUSE, que unifica o processo de especificação de informações de licença e direitos autorais.
Além disso, os cabeçalhos SPDX-License-Identifier também foram adicionados a muitos arquivos de código. Seguir as diretrizes de REUSE facilita a determinação automática de qual licença se aplica a quais partes do código do aplicativo.
Para completar, uma verificação no valor do contador de argumentos de linha de comando (argc) foi adicionada e uma saída de emergência se o contador for zero foi implementada.
A alteração permite bloquear problemas de segurança causados por manipulação incorreta de argumentos de linha de comando passados, como CVE-2021-4034 no Polkit
Das outras mudanças que se destacam nesta nova versão:
- O branch master no repositório git foi renomeado para main
- Remova a integração de CI antiga
- Usando bash via PATH para melhor compatibilidade com sistemas operacionais não FHS
Para saber mais sobre essa versão do Bubblewrap 0.6, acesse a nota de lançamento.