Hardening

Sandbox de Aplicacoes no Linux com Bubblewrap, Firejail e Flatpak

Por Equipe Basilisk ·

Como a equipe Basilisk isola navegadores, leitores de PDF e ferramentas de risco em desktops Linux usando perfis de sandbox auditados e reproduziveis.

Um pesquisador da equipe Basilisk abriu um PDF de bug bounty no Evince e, trinta segundos depois, o auditd registrou uma tentativa de leitura em ~/.ssh/id_ed25519. O processo nao tinha motivo nenhum para tocar naquele diretorio, mas tocou. Esse incidente, que terminou bem porque o Evince rodava dentro de um perfil Bubblewrap restrito, e a razao deste post existir. Sandbox em desktop Linux nao e teatro de seguranca: e a camada que separa um exploit chato de uma exfiltracao silenciosa de chaves SSH, tokens de cloud e cookies de sessao. Vamos aterrissar Bubblewrap, Firejail e Flatpak com perfis testados em producao OPSEC para Pesquisadores de Seguranca: Modelo de Ameaca Pessoal.

Bubblewrap (bwrap) e a base. Ele e o unprivileged container runtime que o Flatpak usa por baixo dos panos, distribuido pelo projeto containers e auditavel em poucas centenas de linhas de C. Um perfil minimo para abrir PDFs ficaria assim: `bwrap --ro-bind /usr /usr --ro-bind /etc /etc --proc /proc --dev /dev --tmpfs /tmp --bind ~/Downloads/sandbox-pdf /home/user --unshare-all --share-net /usr/bin/zathura arquivo.pdf`. Note o `--unshare-all` seguido de `--share-net` apenas se necessario, e o bind de um diretorio especifico em vez do $HOME inteiro. Esse padrao de allow-list e o que difere sandbox real de placebo e combina muito bem com investigacoes de DFIR DFIR no Linux: Triagem ao Vivo com UAC e Velociraptor.

Firejail e mais alto nivel e vem com aproximadamente 1.000 perfis prontos em /etc/firejail. Para uso diario em estacao de pesquisador, o trio firefox.profile, thunderbird.profile e libreoffice.profile resolve 80% da superficie de ataque. Comece com `firejail --profile=/etc/firejail/firefox.profile --private-tmp --dns=9.9.9.9 firefox`. Habilite AppArmor com `firejail --apparmor` e cheque o status com `firejail --list`. O calcanhar de Aquiles historico do Firejail e o binario SUID; se isso te incomoda, instale com `setcap cap_sys_admin+ep` em kernels recentes ou migre para Bubblewrap puro. Para abrir docs suspeitos de phishing, combine com higiene de metadados antes de qualquer reencaminhamento Higiene de Metadados: Limpando EXIF, PDF e Office antes de Publicar.

Flatpak entrega aplicacoes empacotadas com manifesto declarativo de permissoes. O comando que voce quer memorizar e `flatpak override --user --nofilesystem=home org.mozilla.firefox` seguido de `flatpak override --user --filesystem=~/Downloads org.mozilla.firefox`. Isso revoga acesso ao $HOME inteiro e devolve apenas Downloads. Para auditar o que cada app pede, use `flatpak info --show-permissions org.telegram.desktop` ou abra Flatseal. Aplicacoes como Zoom, Slack e Discord rodando via Flatpak com `--nofilesystem=host` e `--nodevice=all` reduzem drasticamente o estrago de uma CVE de renderizacao. Isso encaixa direto em hardening de estacoes de trabalho de alto risco Hardening de Linux Servidor: CIS Benchmark Aplicado sem Quebrar Producao.

Cenarios praticos que rodamos na Basilisk: analise de amostra recebida por cliente fica em VM dedicada com Remnux, nao em sandbox de desktop Analise de Malware em Lab Isolado: Setup Seguro com FlareVM e Remnux. Mas leitura de PDF de relatorio, abertura de docx de cliente, navegacao em sites de bug bounty e teste de extensao de navegador acontecem todos em perfis Bubblewrap com namespace de rede separado via slirp4netns. Para clientes que exigem comunicacao por Signal Desktop, rodamos a versao Flatpak com `--nofilesystem=home --filesystem=xdg-download` e MFA por hardware token passado via `--device=all` so durante o pareamento OPSEC de Comunicacao: Signal, SimpleX e Session Comparados Tecnicamente. Cada perfil vive em git, revisado em pull request, exatamente como codigo de producao.

Tres armadilhas comuns. Primeira: pular o `--unshare-user-try` ou `--unshare-net` porque o app reclama, e ai voce tem sandbox de papel. Resolva isso isolando primeiro com `--share-net` e cortando depois, monitorando com `strace -f -e network`. Segunda: confiar que Flatpak sozinho protege contra escape via portal D-Bus mal configurado; revise portais com `flatpak permissions`. Terceira: deixar o microfone aberto. Rode `flatpak override --nodevice=all` global e libere caso a caso. Para verificacao continua, integre os perfis com regras Sigma que detectam tentativas de escape Threat Hunting com Sigma e Elastic: Do Indicador a Regra de Deteccao e revise trimestralmente, porque manifestos mudam a cada update.

Takeaway pratico: comece hoje fazendo `flatpak override --user --nofilesystem=home` em cada app Flatpak instalado, troque seu leitor de PDF padrao por um wrapper Bubblewrap com bind apenas em ~/Downloads, e versione esses scripts em um repo privado. Em uma tarde voce sobe a barra de exploracao do seu desktop em mais que um ano de patches reativos. Sandbox bem configurado nao impede toda intrusao, mas garante que a primeira CVE de browser do mes nao vire incidente de chaves SSH vazadas. O ROI dessa configuracao se mede em incidentes que nao aconteceram.

Nenhum comentário ainda

Seja o primeiro a comentar.

Deixe seu comentário

Entre com sua conta Canverly para comentar. Você pode usar a mesma conta em qualquer site da rede.

Entrar com Canverly