Aprenda a identificar, corrigir e se proteger contra a vulnerabilidade CVE-2026-35469 no Kubernetes 1.35 do Fedora. Guia completo com comandos para verificação, script de automação, mitigação alternativa com iptables e dicas de especialista para manter seu cluster seguro.
O que aconteceu?
Em meados de 2026, foi identificada uma falha de segurança no componente spdystream — a biblioteca Go responsável pela comunicação SPDY/3 utilizada pelo Kubelet, CRI-O e kube-apiserver no Kubernetes.
A vulnerabilidade, registrada como CVE-2026-35469, permite que um atacante com permissões específicas no cluster (como acesso a port-forward, exec ou attach de pods) envie frames SPDY malformados que causam amplificação de memória, levando os componentes críticos do cluster a um ataque de negação de serviço (DoS).
A correção veio com a atualização da biblioteca github.com/moby/spdystream da versão 0.5.0 para 0.5.1, que introduz limites configuráveis para cabeçalhos, tamanhos de campo e payloads de frames de controle, prevenindo a exaustão de recursos.
Contexto histórico: O aviso original foi publicado em junho de 2026 para o Fedora 43, com a atualização para a versão 1.35.6-1.fc43. O conteúdo deste guia, no entanto, permanece válido independentemente da data — sempre que você estiver lidando com uma versão vulnerável do Kubernetes em qualquer distribuição baseada em Fedora.
Como verificar se você está vulnerável
Antes de aplicar qualquer correção, verifique se seu ambiente está afetado.
1. Verifique a versão do Kubernetes instalada
dnf list installed | grep kubernetes
kubernetes1.35.x86_64 1.35.5-1.fc43 @updates
Se a versão for anterior à 1.35.6, você está vulnerável.
Para verificar se o componente vulnerável está presente em seus containers:
# Em qualquer node do cluster kubectl get nodes -o wide # Verifique os logs do kubelet em busca de referências ao spdystream journalctl -u kubelet --since "1 hour ago" | grep -i spdy
Em um ambiente de teste, você pode tentar estabelecer uma conexão SPDY e observar o consumo de memória:
# Simula uma conexão SPDY via port-forward kubectl port-forward pod/<nome-do-pod> 8080:80 & # Monitore o consumo de memória do kubelet top -p $(pgrep kubelet)
Se o consumo de memória crescer de forma anormal durante conexões SPDY repetidas, seu cluster está vulnerável.
Script de automação para aplicar a correção
Este script Bash é compatível com Fedora Linux e pode ser executado em qualquer node do cluster para aplicar a atualização de forma automatizada.
#!/bin/bash # ============================================================ # Script: fix-k8s-spdy-dos.sh # Descrição: Aplica a correção para CVE-2026-35469 no Fedora # Uso: sudo ./fix-k8s-spdy-dos.sh # ============================================================ set -e # Cores para output RED='\033[0;31m' GREEN='\033[0;32m' YELLOW='\033[1;33m' NC='\033[0m' # No Color echo -e "${GREEN}=== Correção CVE-2026-35469 - Kubernetes SPDY DoS ===${NC}" # 1. Verifica se está rodando como root if [[ $EUID -ne 0 ]]; then echo -e "${RED}Este script precisa ser executado como root. Use sudo.${NC}" exit 1 fi # 2. Verifica a versão atual echo -e "${YELLOW}Verificando versão atual do Kubernetes...${NC}" CURRENT_VERSION=$(dnf list installed kubernetes1.35 2>/dev/null | grep kubernetes1.35 | awk '{print $2}') echo "Versão atual: $CURRENT_VERSION" if [[ "$CURRENT_VERSION" == "1.35.6-1.fc43" ]]; then echo -e "${GREEN}✓ Seu sistema já está atualizado!${NC}" exit 0 fi # 3. Atualiza o cache do DNF echo -e "${YELLOW}Atualizando cache do DNF...${NC}" dnf makecache --quiet # 4. Aplica a atualização específica echo -e "${YELLOW}Aplicando atualização FEDORA-2026-0544eff1d8...${NC}" dnf upgrade --advisory FEDORA-2026-0544eff1d8 -y # 5. Verifica se a atualização foi bem-sucedida NEW_VERSION=$(dnf list installed kubernetes1.35 2>/dev/null | grep kubernetes1.35 | awk '{print $2}') if [[ "$NEW_VERSION" == "1.35.6-1.fc43" ]]; then echo -e "${GREEN}✓ Atualização aplicada com sucesso! Versão: $NEW_VERSION${NC}" else echo -e "${RED}✗ Falha na atualização. Versão atual: $NEW_VERSION${NC}" exit 1 fi # 6. Reinicia os serviços afetados echo -e "${YELLOW}Reiniciando serviços Kubernetes...${NC}" systemctl restart kubelet systemctl restart cri-o 2>/dev/null || true # 7. Verifica o status dos serviços echo -e "${YELLOW}Verificando status dos serviços...${NC}" systemctl status kubelet --no-pager | head -5 echo -e "${GREEN}=== Correção concluída! ===${NC}" echo "Recomendação: Reinicie todos os pods do cluster para garantir que todos os componentes usem a nova biblioteca."
Como executar:
chmod +x fix-k8s-spdy-dos.sh sudo ./fix-k8s-spdy-dos.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 possa atualizar agora)
Se você não pode aplicar a atualização imediatamente, existem medidas temporárias para reduzir o risco:
O ataque explora conexões SPDY nos endpoints de port-forward, exec e attach. Você pode limitar o acesso a esses endpoints apenas para IPs confiáveis:
#!/bin/bash # ============================================================ # Script: mitigate-k8s-spdy.sh # Descrição: Mitigação temporária via iptables para CVE-2026-35469 # Uso: sudo ./mitigate-k8s-spdy.sh # ============================================================ # Portas padrão do Kubernetes API Server (6443) e Kubelet (10250) API_PORT=6443 KUBELET_PORT=10250 # Lista de IPs confiáveis (ajuste conforme sua realidade) TRUSTED_IPS="192.168.0.0/16 10.0.0.0/8" # Limpa regras existentes (cuidado!) iptables -F K8S_SPDY_MITIGATION 2>/dev/null iptables -N K8S_SPDY_MITIGATION 2>/dev/null # Permite IPs confiáveis for IP in $TRUSTED_IPS; do iptables -A K8S_SPDY_MITIGATION -s $IP -j ACCEPT done # Bloqueia o restante iptables -A K8S_SPDY_MITIGATION -j DROP # Aplica as regras às portas relevantes iptables -I INPUT -p tcp --dport $API_PORT -j K8S_SPDY_MITIGATION iptables -I INPUT -p tcp --dport $KUBELET_PORT -j K8S_SPDY_MITIGATION echo "Regras de mitigação aplicadas. Apenas IPs confiáveis têm acesso aos endpoints vulneráveis."
Atenção: Esta é uma mitigação temporária. A atualização oficial é a única solução definitiva.
Opção 2: Desabilitar feature gates suspeitas (se aplicável)
Em versões mais antigas, você pode desabilitar recursos que expõem o kubelet a ataques SPDY:
# Edite o arquivo de configuração do kubelet vi /var/lib/kubelet/config.yaml # Adicione ou modifique: # readOnlyPort: 0 # featureGates: # ContainerCheckpoint: false # Reinicie o kubelet systemctl restart kubelet
Opção 3: Isolar o tráfego de rede com NetworkPolicy (Kubernetes nativo)
Crie uma NetworkPolicy que restrinja o tráfego para os pods que expõem endpoints vulneráveis:
apiVersion: networking.k8s.io/v1 kind: NetworkPolicy metadata: name: block-spdy-attack namespace: kube-system spec: podSelector: matchLabels: component: kube-apiserver policyTypes: - Ingress ingress: - from: - ipBlock: cidr: 192.168.0.0/16 # Apenas rede interna confiável
Conclusão
A vulnerabilidade CVE-2026-35469 é um lembrete importante: componentes aparentemente periféricos (como uma biblioteca de streaming) podem derrubar um cluster inteiro se não forem monitorados e atualizados regularmente.
Lembre-se: A segurança em Kubernetes não é um destino, é uma jornada contínua. Mantenha-se atualizado, automatize suas correções e invista em conhecimento.

Nenhum comentário:
Postar um comentário