Aprenda a identificar, corrigir e mitigar a vulnerabilidade double‑free no strongSwan (CVE‑2026‑47895) em distribuições SUSE. Comandos práticos, script de automação, mitigação com firewall e recomendações de leitura para aprofundar seus conhecimentos em segurança de redes.
1. O problema (e por que ele não vai sumir)
No início de junho de 2026 foi divulgada uma falha crítica no strongSwan, a implementação open‑source mais utilizada do protocolo IPsec.
A vulnerabilidade, catalogada como CVE‑2026‑47895, consiste em um double‑free no tratamento de certas identidades clonadas. Em resumo: um erro de gerenciamento de memória pode fazer o programa tentar liberar o mesmo espaço duas vezes, levando a uma queda do serviço (DoS) e, potencialmente, à execução remota de código arbitrário (RCE).
O problema afeta todas as versões do strongSwan desde a 4.3.3 (lançada há mais de uma década) e foi corrigido na versão 6.0.7. Em distribuições SUSE, o pacote corrigido está disponível nos canais LTSS (Long Term Service Support) para os produtos afetados, conforme o aviso SUSE‑SU‑2026:2312‑1.
A data da divulgação é apenas um ponto de partida. O conteúdo que você verá a seguir é perene: os comandos, o script e as mitigações alternativas continuarão úteis por muitos meses – e até anos –, independentemente de quando você esteja lendo este artigo.
2. Como verificar se você está vulnerável
Antes de qualquer ação, confirme se o seu sistema SUSE executa uma versão vulnerável do strongSwan.
2.1. Verificar a versão instalada
zypper info strongswan | grep Version
ou, de forma mais direta:
rpm -q strongswan
2.2. Verificar o status do serviço
systemctl status strongswan systemctl status strongswan-starter
2.3. Verificar a versão do daemon em execução
ipsec version
2.4. Verificar se o serviço IPsec está ativo e listar conexões
ipsec statusall
2.5. Tabela de decisão
3. Script de automação para aplicar a correção
O script abaixo automatiza todo o processo de verificação, atualização e validação em uma máquina SUSE. Salve o conteúdo como fix_strongswan.sh, torne‑o executável (chmod +x fix_strongswan.sh) e execute‑o com privilégios de root.
#!/bin/bash # fix_strongswan.sh - Atualiza strongSwan em sistemas SUSE para corrigir CVE-2026-47895 # Uso: sudo ./fix_strongswan.sh set -e # interrompe o script se qualquer comando falhar # Função para imprimir cabeçalhos print_header() { echo "==================================================" echo "$1" echo "==================================================" } print_header "Iniciando correção do strongSwan (CVE-2026-47895)" # 1. Verifica se está rodando como root if [[ $EUID -ne 0 ]]; then echo "ERRO: Este script precisa ser executado como root (use sudo)." exit 1 fi # 2. Salva a versão atual para diagnóstico CURRENT_VER=$(rpm -q strongswan 2>/dev/null || echo "não instalado") echo "Versão atual do strongSwan: $CURRENT_VER" # 3. Atualiza a lista de pacotes (apenas para garantir) print_header "Atualizando metadados dos repositórios" zypper refresh # 4. Aplica o patch específico do SUSE (método recomendado) print_header "Aplicando o patch SUSE-SU-2026:2312-1" zypper patch --cve=CVE-2026-47895 || { echo "Falha ao aplicar o patch via zypper. Tentando instalar o pacote atualizado..." zypper update strongswan } # 5. Se o comando acima falhar, tenta a atualização explícita do pacote if ! zypper update strongswan; then echo "ERRO: Não foi possível atualizar o strongSwan." echo "Verifique se os repositórios LTSS estão habilitados:" echo " zypper repos --enabled" exit 1 fi # 6. Reinicia o serviço print_header "Reiniciando o serviço strongSwan" systemctl restart strongswan-starter systemctl enable strongswan-starter # 7. Verifica o status do serviço print_header "Verificando status do serviço" systemctl status strongswan-starter --no-pager # 8. Exibe a nova versão instalada NEW_VER=$(rpm -q strongswan) print_header "Correção concluída!" echo "Versão antiga: $CURRENT_VER" echo "Nova versão : $NEW_VER" # 9. Verificação final com ipsec version if command -v ipsec &> /dev/null; then echo "" echo "Versão do daemon em execução:" ipsec version fi echo "" echo "Script finalizado. Recomenda-se reiniciar o sistema se possível."
📗 Recomendação de Leitura
Segurança em servidores Linux: Ataque e Defesa (anúncio) -> https://amzn.to/4vGup8R
Se você prefere estudar em português e quer aprender a "pensar como um hacker" para se antecipar a invasões, essa é a pedida! O livro ensina a usar as ferramentas prediletas dos invasores (como Nmap e Netcat) a seu favor, blindando seus sistemas.
Eu ganho uma comissão quando você faz uma compra.
4. Mitigação alternativa caso não possa atualizar agora
Se por qualquer motivo você não puder aplicar a correção imediatamente (ex.: janela de manutenção bloqueada, dependências conflitantes), as regras de firewall abaixo reduzem significativamente a superfície de ataque.
Atenção: Mitigações não substituem a atualização. Use‑as apenas como paliativo enquanto planeja a correção definitiva.
4.1. Bloquear pacotes IPsec suspeitos com iptables
O double‑free é acionado por pacotes IKE manipulados que contêm identidades maliciosas. Bloquear tráfego IKE não autenticado pode evitar a exploração.
# Bloquear pacotes IKE nas portas 500 e 4500 vindos de fontes externas não autorizadas iptables -A INPUT -p udp --dport 500 -j DROP iptables -A INPUT -p udp --dport 4500 -j DROP # Se você usa IPsec NAT‑T, bloqueie também o ESP (protocolo 50) iptables -A INPUT -p 50 -j DROP
Para restaurar o funcionamento normal após a correção:
iptables -D INPUT -p udp --dport 500 -j DROP iptables -D INPUT -p udp --dport 4500 -j DROP iptables -D INPUT -p 50 -j DROP
4.2. Usar o match module policy do iptables para permitir apenas tráfego já protegido
Se você precisa manter a VPN ativa, uma abordagem mais fina é aceitar apenas pacotes que já passaram pelo processamento IPsec:
# Permite apenas tráfego que já foi decifrado pelo IPsec iptables -A INPUT -m policy --dir in --pol ipsec -j ACCEPT iptables -A INPUT -j DROP
4.3. Alternativa com nftables (moderno)
Em sistemas mais novos que utilizam nftables:
nft add table inet filter nft add chain inet filter input { type filter hook input priority 0\; policy drop\; } nft add rule inet filter input meta l4proto udp udp dport {500,4500} drop nft add rule inet filter input ip protocol 50 drop
Conclusão
A vulnerabilidade CVE‑2026‑47895 no strongSwan serve como um lembrete atemporal: softwares de infraestrutura crítica exigem manutenção contínua. O double‑free estava presente há mais de dez anos, e apenas uma atualização cuidadosa pode eliminá‑lo.
Mantenha‑se seguro com três ações:
1. Identifique – use os comandos da seção 2 para saber sua situação.
2. Corrija – execute o script de automação (seção 3) em todas as máquinas SUSE que utilizam strongSwan.
3. Proteja‑se – enquanto a correção não é aplicada, implemente as regras de firewall da seção 4 como mitigação temporária.
Recomenda‑se também revisar periodicamente a versão do strongSwan em seus sistemas e manter‑se informado sobre novos lançamentos que possam trazer correções adicionais.

Nenhum comentário:
Postar um comentário