FERRAMENTAS LINUX: Proteja seu servidor: Guia definitivo para corrigir a vulnerabilidade SSRF no WeasyPrint

sábado, 13 de junho de 2026

Proteja seu servidor: Guia definitivo para corrigir a vulnerabilidade SSRF no WeasyPrint

 


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:

bash
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:

bash
dnf check-update --security

Verifique especificamente o pacote weasyprint:

bash
dnf check-update weasyprint

Use o RPM para conferir a integridade do pacote e a data da última modificação:

bash
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).
bash
#!/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"

Como executar:
bash
chmod +x fix-weasyprint-ssrf.sh
./fix-weasyprint-ssrf.sh

Importante: Se você utiliza o WeasyPrint integrado a uma aplicação Python (Django, Flask, etc.), reinicie também o serviço da sua aplicação:
bash
sudo systemctl restart nome-do-seu-servic

Dica 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:

bash
# 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:

bash
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:

text
# 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:

bash
sudo apparmor_parser -r /etc/apparmor.d/usr.bin.weasyprint
sudo aa-enforce /usr/bin/weasyprint

3. Verifique o status:

bash
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:

bash
# 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