Foi lançado o projeto Firejail 0.9.78, que desenvolve um sistema para a execução isolada de aplicativos gráficos, de console e servidores, permitindo minimizar o risco de comprometimento do sistema principal ao executar programas não confiáveis ou potencialmente vulneráveis. O programa é escrito em C, distribuído sob a licença GPLv2 e pode funcionar em qualquer distribuição Linux com núcleo acima de 3.0. Pacotes prontos do Firejail estão disponíveis nos formatos deb (Debian, Ubuntu) e rpm (CentOS, Fedora).
Para isolamento no Firejail, são utilizados espaços de nomes (namespaces), AppArmor e filtragem de chamadas de sistema (seccomp-bpf) no Linux. Após a execução, o programa e todos os seus processos-filhos utilizam visões separadas dos recursos do núcleo, como a pilha de rede, a tabela de processos e os pontos de montagem. Aplicativos interdependentes podem ser agrupados em um único sandbox. Se desejado, o Firejail também pode ser usado para executar contêineres Docker, LXC e OpenVZ.
Ao contrário das ferramentas de isolamento de contêineres, o firejail é extremamente simples de configurar e não requer a preparação de uma imagem de sistema - a composição do contêiner é formada em tempo real com base no conteúdo do sistema de arquivos atual e é deletada após a conclusão da execução do aplicativo. Foram disponibilizados recursos flexíveis para definição de regras de acesso ao sistema de arquivos, permitindo determinar quais arquivos e diretórios têm acesso permitido ou proibido, conectar sistemas de arquivos temporários (tmpfs) para dados, restringir o acesso a arquivos ou diretórios apenas para leitura e combinar diretórios através de bind-mount e overlayfs.
Para um grande número de aplicativos populares, incluindo Firefox, Chromium, VLC e Transmission, perfis de isolamento de chamadas de sistema prontos foram preparados. Para obter os privilégios necessários para configurar o ambiente isolado, o arquivo executável firejail é instalado com a flag SUID root (após a inicialização, os privilégios são redefinidos). Para executar o programa em modo de isolamento, basta especificar o nome do aplicativo como argumento da utilidade firejail, por exemplo, 'firejail firefox' ou 'sudo firejail /etc/init.d/nginx start'.
No novo lançamento:
- As opções arg-max-count, arg-max-len, env-max-count e env-max-len foram adicionadas ao arquivo de configuração firejail.config para alterar os limites de quantidade e tamanho das opções de linha de comando e variáveis de ambiente. Por padrão, o número de argumentos é limitado a 128, o número de variáveis de ambiente a 256, e o tamanho de cada argumento é PATH_MAX de limits.h (no Linux 40196) + 32.
- Uma nova opção «—xephyr-extra-params» foi adicionada para definir opções adicionais para o Xephyr (utilizado para criar ambientes sandbox X11 com seu próprio servidor X rodando em uma janela) na linha de comando sem modificar o firejail.config.
- A ferramenta bwrap (bubblewrap) instalada no ambiente sandbox foi substituída por um wrapper fbwrap, que executa programas sem isolamento para resolver problemas ao iniciar o Firefox, Thunderbird e GIMP devido à chamada glycin 2.0.0 do gdk-pixbuf2 usando bwrap. Para copiar bwrap em vez do wrapper, uma opção «—allow-bwrap» foi adicionada.
- As tabelas de chamadas de sistema para seccomp foram atualizadas. Novas chamadas de sistema, como epoll_pwait2 e futex_wait, foram adicionadas.
- A opção de compilação «—disable-globalcfg» foi removida, e o suporte ao overlayfs («—overlay») e ao modo IDS (Intrusion Detection System, «—ids») foi descontinuado.
- Perfis de isolamento foram adicionados para o editor de texto ne, o navegador Trivalent, e para os motores de jogos OpenRA, quakespasm, gzdoom, lzdoom, uzdoom.
- Os perfis para thunderbird, wine, qutebrowser, firefox, godot, wusc, mullvad-browser, blink, steam, ssh, brave e hashcat foram atualizados.
Fonte: opennet.ru
