FERRAMENTAS LINUX: Flatpak: Como se proteger contra falhas de segurança no sandbox (guia definitivo)

quinta-feira, 9 de abril de 2026

Flatpak: Como se proteger contra falhas de segurança no sandbox (guia definitivo)

 


Flatpak


Em março de 2026, foram divulgadas correções importantes para o Flatpak. Mas o que importa agora é saber se seu sistema continua seguro – e como agir se você ainda não aplicou as atualizações.

Se você usa Flatpak para instalar aplicações em containers no Linux (como Spotify, Discord, GIMP ou qualquer app isolado), precisa entender um risco sério: falhas no sistema de sandbox podem permitir que um aplicativo malicioso acesse todos os seus arquivos pessoais, delete dados ou execute código no seu sistema hospedeiro.

Nos últimos meses, foram descobertas vulnerabilidades como CVE-2026-34078 (escape completo do sandbox), CVE-2026-34079 (deleção arbitrária de arquivos) e GHSA-2fxp-43j9-pwvc (leitura de arquivos restritos). 

A boa notícia é que o Flatpak 1.16.4 (e versões superiores) corrige esses problemas. Este guia mostra como verificar, corrigir e se proteger – independentemente de quando você estiver lendo.

Como verificar se você está vulnerável


Execute os comandos abaixo para saber qual versão do Flatpak está instalada:

Ubuntu/Debian (e derivados)

bash
flatpak --version
# Se for menor que 1.16.4, você está vulnerável


Rocky Linux / AlmaLinux / RHEL

bash
flatpak --version
# Repositórios EPEL geralmente têm a versão mais recente

SUSE Linux Enterprise / openSUSE

bash
flatpak --version
# Verifique se está em 1.16.4 ou superior

Verificação extra – veja se o Flatpak Portal está ativo (necessário para explorar a CVE-2026-34078):

bash
systemctl status --user xdg-desktop-portal
systemctl status --user xdg-desktop-portal-gtk  # ou -kde, -lxqt, etc.

Obs:  Se o portal estiver rodando e sua versão do Flatpak for anterior à 1.16.4, considere o sistema como comprometível por qualquer aplicativo Flatpak não confiável.


Script de automação para aplicar a correção


Salve o script abaixo como fix-flatpak.sh e execute como root ou com sudo. Ele funciona em Ubuntu, Rocky e SUSE.
bash
#!/bin/bash
# fix-flatpak.sh - Atualiza Flatpak e reinicia serviços relacionados
# Compatível: Ubuntu/Debian, Rocky/Alma/RHEL, openSUSE/SLES

set -e

echo "[*] Verificando versão atual do Flatpak..."
CURRENT_VERSION=$(flatpak --version | grep -oP '\d+\.\d+\.\d+' | head -1)
echo "    Versão: $CURRENT_VERSION"

if [[ "$CURRENT_VERSION" == "1.16.4" ]] || [[ "$CURRENT_VERSION" > "1.16.4" ]]; then
    echo "[OK] Versão já é segura. Nada a fazer."
    exit 0
fi

echo "[!] Versão vulnerável. Aplicando correção..."

# Detecta distribuição
if command -v apt &> /dev/null; then
    apt update && apt install --only-upgrade flatpak -y
elif command -v dnf &> /dev/null; then
    dnf update flatpak -y
elif command -v zypper &> /dev/null; then
    zypper refresh && zypper update flatpak -y
else
    echo "[ERRO] Distribuição não suportada automaticamente."
    exit 1
fi

# Reinicia o portal para evitar serviços antigos em memória
systemctl --user restart xdg-desktop-portal

echo "[OK] Flatpak atualizado. Reinicie seus aplicativos Flatpak para garantir."

Como executar:

bash
chmod +x fix-flatpak.sh
sudo ./fix-flatpak.sh

Mitigação alternativa (se você NÃO pode atualizar agora)


Impossível atualizar o Flatpak? Use uma dessas medidas temporárias:


1. Desabilitar o Flatpak Portal (mais drástico)

bash
systemctl --user mask --now xdg-desktop-portal


⚠️ Efeito colateral: apps Flatpak perdem acesso a funcionalidades como abrir arquivos fora do sandbox, print screen, notificações. Mas bloqueia a rota de escape.


2. Bloquear tráfego suspeito com iptables (controle fino)

Isso impede que um app Flatpak já comprometido se comunique com a internet para exfiltrar dados:

bash
# Bloqueia saída de containers Flatpak (faixa comum de IPs virtuais)
sudo iptables -A OUTPUT -m owner --uid-owner $(id -u) -d 10.0.0.0/8 -j DROP
# Para liberar novamente: sudo iptables -D OUTPUT ...

Nota: isso não impede o exploit local, mas reduz danos pós-escape.


3. AppArmor/SELinux restritivo

No Ubuntu (AppArmor):

bash
sudo aa-enforce /etc/apparmor.d/usr.lib.flatpak.flatpak-session-helper

No Rocky (SELinux):

bash
sudo setsebool -P flatpak_use_unconfined 0

Lab prático:  Monte o seu ambiente para testar a vulnerabilidade 


Opção 1:  Você vai criar uma VM ou container seguro e isolado para reproduzir o comportamento do CVE-2026-34078 sem risco ao seu sistema principal.

bash
# Cria um container Ubuntu 22.04 vulnerável (Flatpak antigo)
docker run -it --name flatpak-lab ubuntu:22.04 bash

# Dentro do container:
apt update && apt install -y flatpak
flatpak --version  # será 1.12.x (vulnerável)
flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
flatpak install flathub org.gnome.Calculator -y

Opção 2: VM com Vagrant (mais realista)

bash
vagrant init rocky9
vagrant up
vagrant ssh
sudo dnf install flatpak -y   # versão antiga no repositório padrão

Testando a correção:


1- Dentro do laboratório, tente executar um app Flatpak malicioso (criado por você ou PoC pública).

2- Observe que ele consegue acessar /etc/shadow ou criar arquivos fora do sandbox.

3- Atualize para Flatpak 1.16.4 usando o script acima.

4- Repita o teste – agora o escape deve falhar.


🔐 Atenção: Faça isso apenas em ambiente isolado. Nunca em produção.


Conclusão: sua segurança depende de ação agora

Vulnerabilidades em sandboxes são críticas porque quebram a premissa de isolamento que o Flatpak promete. A correção já existe (versão 1.16.4+), mas muitos sistemas continuam vulneráveis por meses – seja por falta de atualização ou por repositórios desatualizados.


Você tem três caminhos:


1- Atualizar agora (use o script acima).

2- Mitigar manualmente se não puder atualizar.

3- Aprender de verdade com o livro recomendado e o laboratório prático.


Dica de Leitura:

Livro:  Container Security: Fundamental Technology Concepts That Protect Cloud Native Applications" (2ª edição, 2025) – Liz Rice (O'Reilly Media)     

Link Amazon .


Nenhum comentário:

Postar um comentário