Aprenda a corrigir a vulnerabilidade SSRF no WeasyPrint no Fedora. Guia passo a passo com comandos, script e mitigação alternativa para proteger seus servidores.
Você sabia que um simples conversor de HTML para PDF pode se transformar em uma porta dos fundos para invasores? O WeasyPrint, ferramenta amplamente utilizada em aplicações web para gerar relatórios e faturas, continha uma falha crítica que permitia ataques de Server-Side Request Forgery (SSRF).
Em junho de 2026, uma atualização de segurança importante foi lançada para o Fedora 44, corrigindo o CVE-2026-49452 no pacote weasyprint (atualizado da versão anterior problemática para a versão 69.0).
A boa notícia é que você não precisa ser um especialista em segurança para se proteger — este guia foi criado para administradores de sistemas e desenvolvedores que querem soluções práticas.
Siga os passos abaixo para verificar, corrigir e, se necessário, mitigar o problema sem precisar reiniciar seus serviços.
Como verificar se você está vulnerável
Antes de aplicar qualquer correção, é essencial diagnosticar o estado atual do seu sistema. Use os comandos abaixo para identificar se o WeasyPrint está desatualizado e suscetível ao SSRF.
Passo a passo para Fedora Linux:
Verifique a versão instalada:
dnf list installed weasyprint
Compare com a versão segura:
A vulnerabilidade foi corrigida a partir da versão 68.0. Versões anteriores — como 67.x ou inferiores — estão vulneráveis. O Fedora 44 atualizou diretamente para a versão 69.0.
Liste apenas atualizações de segurança pendentes:
dnf check-update --security
Verifique especificamente o pacote weasyprint:
dnf check-update weasyprint
Use o RPM para conferir a integridade do pacote e a data da última modificação:
rpm -q --changelog weasyprint | grep -i "cve\|security"Script de automação para aplicar a correção
Se o diagnóstico apontou vulnerabilidade, execute o script abaixo. Ele foi desenvolvido para Fedora Linux (versões 43 e 44) e faz o seguinte:
- Atualiza o cache dos repositórios.
- Aplica a atualização de segurança específica para o WeasyPrint.
- Verifica se a nova versão foi instalada corretamente.
- Reinicia serviços que dependem do WeasyPrint (opcional).
#!/bin/bash # fix-weasyprint-ssrf.sh # Script para corrigir a vulnerabilidade SSRF no WeasyPrint (CVE-2025-68616) # Compatível com Fedora Linux 43 e 44 set -e # Interrompe o script em caso de erro echo "=== Iniciando correção do WeasyPrint - SSRF ===" # 1. Atualiza o cache do DNF echo "[1/5] Atualizando cache dos repositórios..." sudo dnf makecache --refresh # 2. Verifica versão atual echo "[2/5] Versão atual do WeasyPrint:" sudo dnf list installed weasyprint || echo "WeasyPrint não está instalado" # 3. Aplica a atualização de segurança específica echo "[3/5] Aplicando correção de segurança via advisory..." sudo dnf upgrade --advisory FEDORA-2026-6525541bb8 -y # 4. Confirma a nova versão echo "[4/5] Versão instalada após atualização:" sudo dnf list installed weasyprint # 5. Reinicia serviços que dependem do WeasyPrint (ajuste conforme seu ambiente) echo "[5/5] Verificando serviços dependentes..." if systemctl list-units --full -all | grep -q "httpd\|nginx\|apache2"; then echo "Reiniciando servidores web..." sudo systemctl restart httpd nginx 2>/dev/null || true fi echo "=== Correção concluída! ===" echo "Execute manualmente: sudo dnf upgrade --advisory FEDORA-2026-6525541bb8"
chmod +x fix-weasyprint-ssrf.sh ./fix-weasyprint-ssrf.sh
sudo systemctl restart nome-do-seu-servicDica extra: Para um diagnóstico completo da superfície de ataque do seu sistema, recomendo o livro "Mastering Linux Security and Hardening, 3rd Edition" de Donald A. Tevault.
Ele ensina, passo a passo, como auditar serviços como WeasyPrint, configurar firewalls e implementar SELinux/AppArmor — habilidades essenciais para evitar que vulnerabilidades como essa sejam exploradas.
📚 Aprenda a se proteger de vez (Produto Afiliado)
Vulnerabilidades como "Use After Free" são comuns em softwares complexos como navegadores. Para não depender apenas de patches externos e aprender a endurecer seu sistema Linux como um profissional de segurança, recomendo o livro:
"Mastering Linux Security and Hardening - Third Edition" (Donald A. Tevault)
Este livro ensina, na prática, como configurar firewalls avançados, gerenciar permissões de memória, implementar SELinux/AppArmor e criar um ambiente impenetrável. É o material definitivo para quem quer sair do "modo reativo" (esperar o patch) e entrar no "modo proativo".
Mastering Linux Security and Hardening (Third Edition) -> https://amzn.to/4gghHZR
Eu ganho uma comissão quando você faz uma compra.
Mitigação alternativa caso não possa atualizar agora
Às vezes, atualizar não é possível imediatamente (ex.: aplicação legada, dependências conflitantes). Nestes casos, implante mitigações temporárias para bloquear a exploração do SSRF sem alterar o código.
🛑 Abordagem 1: Bloquear saída de rede com iptables
A vulnerabilidade força o WeasyPrint a acessar endereços internos (localhost, 169.254.169.254 — metadata da AWS). Bloqueie esses destinos na saída:
# Bloqueia acesso a localhost via qualquer protocolo sudo iptables -A OUTPUT -d 127.0.0.0/8 -j DROP # Bloqueia acesso a metadata da AWS sudo iptables -A OUTPUT -d 169.254.169.254 -j DROP # Bloqueia faixas privadas comuns (opcional, mas recomendado) sudo iptables -A OUTPUT -d 10.0.0.0/8 -j DROP sudo iptables -A OUTPUT -d 172.16.0.0/12 -j DROP sudo iptables -A OUTPUT -d 192.168.0.0/16 -j DROP # Salva as regras para persistência sudo iptables-save > /etc/iptables/rules.v4
Como remover a mitigação quando atualizar:
sudo iptables -D OUTPUT -d 127.0.0.0/8 -j DROP # ... e assim por diante para cada regra
Abordagem 2: Criar um profile AppArmor para confinar o WeasyPrint
Se o AppArmor estiver habilitado (padrão em algumas distribuições), crie um profile que impeça o WeasyPrint de fazer requisições de rede:
1. Crie o arquivo /etc/apparmor.d/usr.bin.weasyprint com o conteúdo:
# Profile para weasyprint - bloqueia acesso à rede
/usr/bin/weasyprint {
# Permissões básicas de sistema
/etc/weasyprint/* r,
/usr/share/weasyprint/** r,
/tmp/** rw,
/proc/*/fd/ r,
# BLOQUEIA ACESSO À REDE
deny network inet,
deny network inet6,
deny network raw,
# Permissões de leitura para arquivos de entrada
/**.[hH][tT][mM][lL] r,
/**.[cC][sS][sS] r,
# Permissões de escrita para PDF gerado
/**.[pP][dD][fF] w,
# Inclusão de abstrações do sistema
include <abstractions/base>
include <abstractions/private-files>
}2. Carregue e ative o profile:
sudo apparmor_parser -r /etc/apparmor.d/usr.bin.weasyprint sudo aa-enforce /usr/bin/weasyprint
3. Verifique o status:
sudo aa-status | grep weasyprint
Abordagem 3: Configurar um proxy restritivo
Para ambientes que já utilizam proxy, configure variáveis de ambiente que apontem para um proxy que só permita destinos externos autorizados:
# No script ou serviço que chama o WeasyPrint export HTTP_PROXY="http://127.0.0.1:8080" export HTTPS_PROXY="http://127.0.0.1:8080" export NO_PROXY="localhost,127.0.0.1,169.254.169.254"
Configure o proxy (ex.: tinyproxy ou squid) para bloquear requisições para 127.0.0.1 e 169.254.169.254.
Conclusão
A vulnerabilidade SSRF no WeasyPrint (CVE-2025-68616) permitia que atacantes acessassem serviços internos da sua rede mesmo quando você implementava um url_fetcher personalizado — tudo porque o urllib seguia redirecionamentos HTTP sem revalidar o destino.
O impacto? Um atacante poderia roubar credenciais da metadata da AWS, mapear sua rede interna e até escalar privilégios.
Mas você já tem o que precisa para se proteger:
✅ Verifique sua versão com comandos simples.
✅ Corrija automaticamente com o script fornecido.
✅ Mitigue temporariamente com iptables, AppArmor ou proxy.
Se você gerencia vários servidores ou deseja aprofundar suas habilidades de hardening, o livro "Mastering Linux Security and Hardening, 3rd Edition" é o recurso que vai transformar você de um administrador reativo em um profissional pró-ativo.
Ele cobre desde a configuração de firewalls e SELinux até a criação de políticas de segurança para containers e aplicações web.

Nenhum comentário:
Postar um comentário