A vulnerabilidade CVE-2026-9064 no 389-ds-base permite negação de serviço remota via requisições LDAP maliciosas. Aprenda a verificar, corrigir e mitigar o problema no Rocky Linux com comandos práticos, script de automação e alternativas para quando não é possível atualizar imediatamente. Proteja sua infraestrutura de autenticação agora.
O que aconteceu?
Em meados de 2026, foi descoberta uma falha crítica no 389-ds-base, o servidor LDAP open-source amplamente utilizado em ambientes Linux corporativos. A vulnerabilidade, registrada como CVE-2026-9064, afeta a função get_ldapmessage_controls_ext() no servidor LDAP.
O problema é simples na descrição, mas grave no impacto: o servidor não impõe um limite superior no número de controles por mensagem LDAP. Um atacante remoto e não autenticado pode enviar uma requisição LDAP especialmente crafted contendo centenas de milhares de controles minimizados — todos dentro do tamanho máximo permitido de 2 MB — e causar:
- Consumo excessivo de CPU
- Alocação massiva de heap
- Esgotamento de threads do worker
- Eventual travamento por falta de memória (OOM)
O resultado é uma negação de serviço (DoS) remota que pode derrubar todo o serviço de diretório, afetando cascata todos os sistemas que dependem dele para autenticação e controle de acesso.
Contexto histórico: A vulnerabilidade foi descoberta em maio de 2026 e recebeu correções nos pacotes 389-ds-base a partir da versão 3.2.0-7.el10_2. O aviso de segurança RLSA-2026:26456 foi publicado para Rocky Linux 10 em junho de 2026.
Como verificar se você está vulnerável
Antes de aplicar qualquer correção, verifique se seu sistema está na versão afetada.
1. Verifique a versão do pacote 389-ds-base
rpm -q 389-ds-base
389-ds-base-3.2.0-7.el10_2.x86_64
2. Verifique se o serviço está em execução
systemctl status dirsrv@<instance-name> # ou, para listar todas as instâncias: ls /etc/dirsrv/slapd-*/
3. Consulte os advisories disponíveis
dnf check-update 389-ds-base
389-ds-base.x86_64 3.2.0-8.el10_2 appstream
4. Verificação rápida de vulnerabilidade (teste de conceito)
# Instale o ldapsearch se não tiver dnf install -y openldap-clients # Teste com um número excessivo de controles (simplificado) # Esta é uma demonstração do conceito; um ataque real usa controles minimizados for i in {1..100000}; do echo "control$i" done | ldapsearch -x -H ldap://localhost -b "dc=example,dc=com" -s base 2>&1 | head -20
Se o servidor apresentar lentidão extrema ou travar, você está vulnerável.
Script de automação para aplicar a correção
#!/bin/bash # fix-389-ds-cve-2026-9064.sh # Automated fix for CVE-2026-9064 on Rocky Linux # Run as root set -e RED='\033[0;31m' GREEN='\033[0;32m' YELLOW='\033[1;33m' NC='\033[0m' # No Color echo -e "${YELLOW}=== CVE-2026-9064 Fix for 389-ds-base ===${NC}" # Check current version CURRENT_VERSION=$(rpm -q 389-ds-base 2>/dev/null | grep -oP '389-ds-base-\K[^-]+' | head -1) if [ -z "$CURRENT_VERSION" ]; then echo -e "${RED}389-ds-base not installed. Nothing to do.${NC}" exit 0 fi echo -e "Current version: ${YELLOW}$CURRENT_VERSION${NC}" # Check if update is available echo -e "${YELLOW}Checking for updates...${NC}" dnf check-update 389-ds-base 2>&1 | grep -q "389-ds-base" && UPDATE_AVAILABLE=true || UPDATE_AVAILABLE=false if [ "$UPDATE_AVAILABLE" = false ]; then echo -e "${GREEN}No update available. You may already be patched.${NC}" echo -e "Latest version in repository: $(dnf list available 389-ds-base 2>/dev/null | grep 389-ds-base | awk '{print $2}')" exit 0 fi # Backup configuration echo -e "${YELLOW}Backing up /etc/dirsrv...${NC}" BACKUP_DIR="/root/dirsrv-backup-$(date +%Y%m%d-%H%M%S)" mkdir -p "$BACKUP_DIR" cp -r /etc/dirsrv/* "$BACKUP_DIR/" 2>/dev/null || echo "No config to backup" # Apply update echo -e "${YELLOW}Applying update...${NC}" dnf update -y 389-ds-base # Verify new version NEW_VERSION=$(rpm -q 389-ds-base | grep -oP '389-ds-base-\K[^-]+' | head -1) echo -e "New version: ${GREEN}$NEW_VERSION${NC}" # Restart all directory server instances echo -e "${YELLOW}Restarting directory server instances...${NC}" for instance in $(ls /etc/dirsrv/slapd-*/ 2>/dev/null | grep -oP 'slapd-\K[^/]+'); do echo -e "Restarting instance: $instance" systemctl restart "dirsrv@$instance" systemctl status "dirsrv@$instance" --no-pager | head -5 done echo -e "${GREEN}=== Fix completed successfully! ===${NC}" echo -e "Backup saved at: $BACKUP_DIR"
chmod +x fix-389-ds-cve-2026-9064.sh sudo ./fix-389-ds-cve-2026-9064.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.
Opção 1: Restringir acesso via firewall (iptables/nftables)
# Com iptables iptables -A INPUT -p tcp --dport 389 -s 192.168.0.0/16 -j ACCEPT iptables -A INPUT -p tcp --dport 389 -s 10.0.0.0/8 -j ACCEPT iptables -A INPUT -p tcp --dport 389 -j DROP # Salve as regras (Rocky Linux) iptables-save > /etc/sysconfig/iptables
Opção 2: Rate limiting com iptables
Limite o número de conexões LDAP por IP para dificultar ataques de amplificação:
# Limite de 10 conexões simultâneas por IP iptables -A INPUT -p tcp --dport 389 -m connlimit --connlimit-above 10 -j DROP # Limite de 5 conexões novas por segundo por IP iptables -A INPUT -p tcp --dport 389 -m recent --set --name LDAP iptables -A INPUT -p tcp --dport 389 -m recent --update --seconds 1 --hitcount 5 --name LDAP -j DROP
Opção 3: Configurar proxy reverso LDAP
- Validar e sanitizar requisições antes de encaminhá-las
- Aplicar rate limiting em nível de aplicação
- Rejeitar mensagens com número excessivo de controles
Configure alertas para picos de CPU e memória no processo ns-slapd:
# Exemplo com systemd e script de monitoramento while true; do CPU=$(ps aux | grep ns-slapd | grep -v grep | awk '{print $3}') MEM=$(ps aux | grep ns-slapd | grep -v grep | awk '{print $4}') if (( $(echo "$CPU > 80" | bc -l) )); then echo "ALERT: 389-ds CPU at ${CPU}%" | logger -t 389-monitor fi sleep 30 done
Conclusão
A vulnerabilidade CVE-2026-9064 no 389-ds-base é um lembrete de que serviços de infraestrutura críticos precisam de atenção constante. A falha é explorável remotamente, não requer autenticação e pode derrubar todo o serviço de diretório com uma única requisição maliciosa.
Ações recomendadas:
1. Verifique sua versão do 389-ds-base com rpm -q 389-ds-base
2. Atualize com dnf update -y 389-ds-base ou use o script automatizado
3. Reinicie as instâncias do diretório
4. Monitore seus logs em busca de padrões anormais de requisições
5. Considere as mitigações alternativas se não puder atualizar agora
Não espere um ataque para agir. A correção está disponível, é estável e leva menos de 5 minutos para ser aplicada.

Nenhum comentário:
Postar um comentário