Páginas

terça-feira, 9 de junho de 2026

HTTP/2 Bomb no Perl: Do Alarme ao Controle Total (Guia para o openSUSE)

 



Guia prático para sysadmins openSUSE: como verificar, corrigir e se proteger contra a vulnerabilidade HTTP/2 Bomb no perl-Protocol-HTTP2 (CVE-2026-10725). Scripts bash, mitigação com iptables e AppArmor, e recomendações de leitura. Conteúdo perene e útil por meses.


Em meados de 2026, uma falha no módulo Perl Protocol::HTTP2 (CVE-2026-10725) acendeu o sinal de alerta na comunidade. A questão, batizada de "HTTP/2 Bomb", permitia que uma única requisição pequena consumisse toda a memória do servidor. 

Parece grave, e é. Mas, como profissionais, não lidamos com pânico, e sim com procedimento.

O objetivo deste guia é te dar exatamente isso: um procedimento claro, replicável e atemporal. Você vai aprender, de uma vez por todas, a diagnosticar, remediar e se proteger contra essa classe de vulnerabilidade, independentemente de quando ela apareceu.


O que é a HTTP/2 Bomb (e por que você deve se importar)


A vulnerabilidade reside na forma como o módulo decodifica os cabeçalhos HPACK, o sistema de compressão do HTTP/2. Um invasor envia cabeçalhos maliciosos que, ao serem descomprimidos pelo servidor, se expandem exponencialmente em memória. 

O resultado é um clássico ataque de negação de serviço (DoS), onde o sistema fica lento ou trava.

O problema afeta todas as versões do perl-Protocol-HTTP2 até a 1.12 inclusive. A correção implementa um limite de tamanho para a lista de cabeçalhos, impedindo o ataque.

Como verificar se você está vulnerável (agora e daqui a 6 meses)

Use os comandos abaixo periodicamente para manter seus sistemas seguros. Eles verificam a versão instalada do pacote e se a correção já foi aplicada via patch da SUSE.

Comando para verificação manual

bash
# Verifica a versão exata do pacote instalado
rpm -q perl-Protocol-HTTP2

# Alternativa: obter informações detalhadas do pacote
zypper info perl-Protocol-HTTP2 | grep Version

Um sistema vulnerável exibirá uma versão inferior a 1.10-150600.3.3.1. Se o comando retornar "pacote não instalado", seu sistema também está seguro.


Script de varredura para múltiplos servidores

Salve o seguinte como check_http2_bomb.sh e execute em seus servidores via ansible ou manualmente:

bash
#!/bin/bash
# check_http2_bomb.sh - Verifica vulnerabilidade HTTP/2 Bomb em openSUSE

PACKAGE="perl-Protocol-HTTP2"
REQUIRED_VERSION="1.10-150600.3.3.1"

echo "=== Verificando vulnerabilidade HTTP/2 Bomb ==="

if rpm -q $PACKAGE > /dev/null 2>&1; then
    INSTALLED_VERSION=$(rpm -q --queryformat "%{VERSION}-%{RELEASE}" $PACKAGE)
    echo "Pacote encontrado: $PACKAGE-$INSTALLED_VERSION"

    if [[ "$INSTALLED_VERSION" < "$REQUIRED_VERSION" ]]; then
        echo "⚠️  VULNERÁVEL: Versão $INSTALLED_VERSION é anterior à correção ($REQUIRED_VERSION)."
        exit 1
    else
        echo "✅ SEGURO: Versão $INSTALLED_VERSION atende ao requisito mínimo."
        exit 0
    fi
else
    echo "✅ SEGURO: Pacote $PACKAGE não está instalado no sistema."
    exit 0
fi

 Script de automação para aplicar a correção (Bash)

Se a verificação apontar vulnerabilidade, execute o script abaixo para aplicar a correção de forma automatizada.

bash
#!/bin/bash
# fix_http2_bomb.sh - Aplica a correção para HTTP/2 Bomb

set -e

echo "=== Iniciando correção da vulnerabilidade HTTP/2 Bomb ==="

# 1. Atualiza os repositórios
echo "[1/3] Atualizando repositórios..."
sudo zypper refresh

# 2. Aplica o patch específico da SUSE
echo "[2/3] Aplicando patch de segurança..."
sudo zypper patch --cve=CVE-2026-10725

# Alternativa: atualizar apenas o pacote afetado
# sudo zypper update perl-Protocol-HTTP2

# 3. Verifica se a correção foi aplicada com sucesso
echo "[3/3] Verificando instalação..."
rpm -q perl-Protocol-HTTP2

echo "✅ Correção concluída. Execute o script de verificação novamente para confirmar."


📗  Recomendação de Leitura

Segurança em servidores Linux: Ataque e Defesa  (anúncio) -> https://amzn.to/49STXqW

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.


Mitigação alternativa caso não possa atualizar agora


Em cenários onde a atualização não é possível (servidor legacy, janela de manutenção restrita), implemente uma das estratégias abaixo como paliativo.

Opção 1: Bloqueio parcial com iptables

Se seu serviço HTTP/2 não precisa ser exposto diretamente, bloqueie as portas 80 e 443 (assumindo que você usa um proxy reverso separado):

bash
sudo iptables -A INPUT -p tcp --dport 80 -j DROP
sudo iptables -A INPUT -p tcp --dport 443 -j DROP

 Atenção: Isso derruba completamente o acesso. Use apenas se o serviço não for crítico ou se estiver atrás de um load balancer.

Opção 2: Restrição com AppArmor

O AppArmor vem pré-instalado no openSUSE. Crie um perfil para restringir o processo Perl que está utilizando o módulo vulnerável, limitando seu acesso a recursos:

bash
# Instale o utilitário de criação de perfis se necessário
sudo zypper install apparmor-utils

# Gere um perfil para o processo (exemplo genérico para perl)
sudo aa-genprof /usr/bin/perl

# Coloque o perfil em modo de reclamação (apenas log, sem bloquear)
sudo aa-complain /usr/bin/perl

Para restrições mais efetivas, edite o perfil gerado (/etc/apparmor.d/usr.bin.perl) e adicione limites de memória:

text
  set rlimit memlock <= 100M,
  set rlimit as <= 500M,

Recarregue o perfil:

bash
sudo systemctl reload apparmor

Opção 3: Proxy Reverso com Proteção

Configure um proxy reverso (como Nginx ou HAProxy) na frente do seu aplicador Perl. O proxy pode ser configurado para limitar o tamanho dos cabeçalhos HTTP/2, mitigando o ataque na camada de borda.

 Conclusão

A vulnerabilidade CVE-2026-10725 foi um alerta importante, mas não precisa ser um pesadelo. Com os comandos e scripts deste guia, você automatiza a verificação e a correção, mantendo seus servidores openSUSE seguros contra ataques de HTTP/2 Bomb. 

Lembre-se: segurança não é um evento, é um processo. Execute o script de verificação mensalmente e mantenha seus pacotes sempre atualizados.



Nenhum comentário:

Postar um comentário