Falha de 27 anos no OpenBSD permite bypass de autenticação PAP via PPPoE
Aprofundamento CEVIU
Aprofundamento
A falha CVE-2026-55706 não é só um bug de comparação, é uma falha estrutural de confiança em código que roda no kernel há 27 anos. O sppp(4) é o coração da autenticação PPPoE em redes corporativas e ISPs brasileiros que usam OpenBSD como BRAS ou edge router. Quando um atacante envia name_len=0 e passwd_len=0, o sistema não rejeita: ele *aceita* como se fosse uma credencial válida, porque bcmp(buf, ref, 0) sempre retorna 0. Isso significa que qualquer dispositivo malicioso na mesma rede local (como um switch comprometido ou AP rogue) pode se passar por servidor PPPoE legítimo e redirecionar todo o tráfego de clientes, incluindo DNS, HTTPS e até túneis IPsec, sem sequer tentar adivinhar uma senha.
O risco real está no contexto operacional: muitos provedores de internet no Brasil ainda usam OpenBSD com PPPoE para autenticação de assinantes residenciais. A vulnerabilidade permite não só interceptação passiva, mas também man-in-the-middle ativo com controle total sobre o fluxo de pacotes, inclusive para forçar downgrade de TLS, injetar payloads em HTTP não criptografado ou manipular respostas de DHCP. E pior: não exige privilégios iniciais nem interação do usuário. É exploração em camada 2, silenciosa e escalável.
O que mudou
Em 2009, a mudança para alocação dinâmica dos campos de autenticação (malloc(strlen()+1)) transformou um bypass trivial em uma ameaça dupla: agora o mesmo payload zero-length também causa heap over-read, leitura de até 200+ bytes de memória do kernel adjacente. Antes disso, o bug existia, mas o over-read era tecnicamente impossível por limitações de buffer fixo. A correção de 14 de junho de 2026 não foi uma atualização incremental: ela substituiu toda a lógica de validação por um padrão já consolidado no próprio código, o usado pelo handler CHAP desde 2005. Ou seja, o time do OpenBSD não escreveu nova lógica; apenas aplicou o que já sabia funcionar, mas esqueceu de replicar no PAP por mais de duas décadas.
Por que isso importa
Essa falha expõe uma falha crítica de governança de código legado: quando uma rotina de segurança é copiada de outro projeto (FreeBSD → OpenBSD em 1999), mas nunca revisada sob a ótica de defesa em profundidade, o resultado é um ponto cego de 27 anos. Em 2026, isso não é curiosidade histórica, é risco operacional imediato. Redes de telecom que dependem de PPPoE para B2B, backhaul de rádio ou acesso remoto estão vulneráveis a ataques locais com impacto direto em conformidade com a LGPD (art. 46, inciso II) e com as diretrizes da ANATEL sobre integridade de tráfego. Não é só 'atualizar': é auditar se há servidores OpenBSD rodando como BRAS ou NAS sem monitoramento de logs de autenticação anômala, porque cada PAP_ACK com name_len=0 gera um evento detectável no syslog, mas quase ninguém configura alerta para isso.
Linha do tempo
Código sppp importado do FreeBSD para OpenBSD com a função sppp_pap_input() vulnerável
Mudança para alocação dinâmica de credenciais habilita heap over-read via name_len excessivo
Vulnerabilidade reportada ao OpenBSD pela Argus Systems
Correção aplicada por mvs no repositório oficial (CVE-2026-55706)
Divulgação pública da falha e detalhes técnicos pela Argus Systems
Perguntas frequentes
Posso ser atacado mesmo se meu OpenBSD não é servidor PPPoE?
Sim, se ele é cliente PPPoE (ex.: roteador doméstico conectado a um provedor via PPPoE), pode se conectar a um servidor malicioso no mesmo broadcast domain. A falha afeta ambos os papéis: autenticador (servidor) e autenticado (cliente).
A correção exige recompilação ou basta atualizar via syspatch?
Exige recompilação do kernel ou atualização completa para 7.6-STABLE após 14/06/2026. O patch não está disponível via syspatch padrão porque altera código-fonte crítico do subsistema sppp(4). Administradores devem aplicar o commit 0b7d8f3c ou posterior.
Como identificar se meu ambiente foi explorado?
Busque em /var/log/messages entradas como 'sppp: PAP auth ok' seguidas de 'name_len=0' ou 'passwd_len=0'. Também verifique conexões PPPoE inesperadas com tempo de uptime anormalmente curto ou sem troca de pacotes LCP Keepalive.
Essa falha afeta FreeBSD ou NetBSD?
Não, o FreeBSD corrigiu essa lógica em 2003 e o NetBSD nunca importou essa versão do sppp. A vulnerabilidade é exclusiva do OpenBSD por conta da sua árvore de código independente desde 1999.
Fontes
- blog.argus-systems.aifonte original
- Categoria
- CEVIU Segurança da Informação
- Publicado
- 18 de junho de 2026
- Editoria
- CEVIU Segurança da Informação
