Páginas

domingo, 21 de junho de 2026

Como Proteger seu Alertmanager no Fedora contra Vazamento de Descritores de Arquivo

 


Aprenda a corrigir a vulnerabilidade CVE-2026-45287 no Alertmanager do Fedora 43 com comandos práticos, script de automação e mitigação alternativa. Proteja seu monitoramento contra vazamento de descritores de arquivo e evite negação de serviço. Inclui dicas de segurança e recomendações de leitura.


Contexto (Apenas para Referência Histórica)

Em meados de 2026, foi identificada uma vulnerabilidade (CVE-2026-45287) no OpenTelemetry-Go, biblioteca utilizada pelo Prometheus Alertmanager

O problema afetava as versões anteriores à 0.0.17 do pacote go.opentelemetry.io/otel/schema, onde a função ParseFile abria arquivos de esquema sem fechá-los adequadamente. 

Cada chamada bem-sucedida consumia um descritor de arquivo do processo, e em aplicações de longa duração que processavam esquemas repetidamente, isso podia esgotar o limite de descritores do sistema, causando negação de serviço (DoS).

A correção foi disponibilizada na versão 0.33.0 do Alertmanager para o Fedora 43. O que importa não é a data, mas como garantir que seu sistema está seguro agora e no futuro. 

É isso que você vai aprender aqui.


Como Verificar se Você Está Vulnerável


Antes de aplicar qualquer correção, verifique a versão do Alertmanager em seu sistema Fedora:

bash
# Verifica a versão instalada do Alertmanager
dnf list installed alertmanager

# Ou, se preferir, veja detalhes do pacote
rpm -qi alertmanager | grep Version

Interpretação:

  • Se a versão for anterior à 0.33.0, seu sistema está vulnerável ao CVE-2026-45287.
  • Se for 0.33.0 ou superior, você já está protegido.

Para verificar se há vazamento de descritores em execução, monitore o uso de descritores do processo do Alertmanager:

bash
# Descubra o PID do Alertmanager
pgrep -f alertmanager

# Substitua <PID> pelo número encontrado e veja o consumo de descritores
ls -la /proc/<PID>/fd | wc -l

Se o número de descritores estiver crescendo continuamente ao longo do tempo (especialmente após recarregamentos de configuração), é um forte indício de que você está enfrentando o vazamento.


Script de Automação para Aplicar a Correção

Salve o script abaixo como fix-alertmanager.sh e execute com privilégios de root:

bash
#!/bin/bash
# fix-alertmanager.sh - Aplica a correção de segurança para o CVE-2026-45287 no Fedora
# Compatível com Fedora 43 e versões posteriores

set -e

echo "=== Correção de Segurança - Alertmanager (CVE-2026-45287) ==="

# 1. Verifica versão atual
CURRENT_VERSION=$(dnf list installed alertmanager 2>/dev/null | grep alertmanager | awk '{print $2}' | cut -d'-' -f1)
echo "Versão atual: $CURRENT_VERSION"

if [[ "$CURRENT_VERSION" == "0.33.0" ]] || [[ "$CURRENT_VERSION" > "0.33.0" ]]; then
    echo "✅ Sistema já está na versão segura (0.33.0 ou superior). Nada a fazer."
    exit 0
fi

echo "⚠️  Versão vulnerável detectada. Aplicando atualização..."

# 2. Faz backup da configuração atual (se existir)
if [ -f /etc/alertmanager/alertmanager.yml ]; then
    BACKUP_DIR="/root/alertmanager-backup-$(date +%Y%m%d)"
    mkdir -p "$BACKUP_DIR"
    cp -r /etc/alertmanager/* "$BACKUP_DIR/"
    echo "✅ Backup da configuração salvo em $BACKUP_DIR"
fi

# 3. Aplica a atualização via DNF
echo "📦 Instalando atualização..."
dnf upgrade --advisory FEDORA-2026-1ad4561f49 -y

# 4. Verifica se a atualização foi bem-sucedida
NEW_VERSION=$(dnf list installed alertmanager 2>/dev/null | grep alertmanager | awk '{print $2}' | cut -d'-' -f1)
if [[ "$NEW_VERSION" == "0.33.0" ]] || [[ "$NEW_VERSION" > "0.33.0" ]]; then
    echo "✅ Atualização concluída com sucesso para a versão $NEW_VERSION"
else
    echo "❌ Falha na atualização. Verifique manualmente com: dnf update alertmanager"
    exit 1
fi

# 5. Reinicia o serviço
echo "🔄 Reiniciando o Alertmanager..."
systemctl restart alertmanager

# 6. Verifica o status do serviço
if systemctl is-active --quiet alertmanager; then
    echo "✅ Serviço Alertmanager rodando normalmente."
else
    echo "⚠️  Serviço não está ativo. Verifique com: systemctl status alertmanager"
fi

echo "=== Correção aplicada com sucesso! ==="

Para executar:

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

📗  Recomendação de Leitura


Segurança em servidores Linux: Ataque e Defesa  (anúncio) ->  https://link.amazon/B0hlDkNqk

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 Posso Atualizar Agora)


Se você não pode reiniciar o Alertmanager ou aplicar a atualização imediatamente, use estas medidas temporárias:

1. Aumentar o Limite de Descritores de Arquivo do Sistema

Isso não corrige o vazamento, mas dá mais tempo até que o limite seja atingido:

bash
# Verifica o limite atual
ulimit -n

# Aumenta temporariamente para 65535 (para a sessão atual)
ulimit -n 65535

# Para tornar permanente, edite /etc/security/limits.conf e adicione:
# alertmanager soft nofile 65535
# alertmanager hard nofile 65535

2. Reiniciar o Alertmanager Periodicamente (Cron Job)

Uma rotação programada do serviço libera os descritores vazados:

bash
# Agenda uma reinicialização semanal (aos domingos às 3h)
echo "0 3 * * 0 root systemctl restart alertmanager" >> /etc/crontab

3. Monitoramento Proativo com Script

Monitore o consumo de descritores e reinicie automaticamente se ultrapassar um limite seguro:

bash
#!/bin/bash
# monitor-alertmanager-fd.sh

MAX_FD=5000
PID=$(pgrep -f alertmanager)

if [ -n "$PID" ]; then
    FD_COUNT=$(ls -la /proc/$PID/fd 2>/dev/null | wc -l)
    if [ $FD_COUNT -gt $MAX_FD ]; then
        echo "⚠️  Descritores excedendo $MAX_FD ($FD_COUNT). Reiniciando Alertmanager..."
        systemctl restart alertmanager
    fi
fi


Conclusão


O CVE-2026-45287 é um lembrete de que mesmo bibliotecas amplamente utilizadas podem ter vazamentos de recursos sutis mas perigosos. A correção está disponível e é simples de aplicar: mantenha seu Alertmanager atualizado para a versão 0.33.0 ou superior. 

Use o script de automação fornecido para aplicar a correção de forma rápida e segura, e, se não puder atualizar agora, implemente as mitigações alternativas para ganhar tempo.

Lembre-se: em sistemas de monitoramento, a estabilidade é tão crítica quanto a coleta de métricas. Um Alertmanager que cai por falta de descritores pode significar alertas perdidos — e isso ninguém quer.




Nenhum comentário:

Postar um comentário