Descoberta e escopo da vulnerabilidade
Uma vulnerabilidade de longa data na pilha de rede do OpenBSD foi divulgada, revelando que atacantes podem burlar a autenticação PAP inteiramente devido a uma falha de lógica de décadas. A questão reside na função sppp_pap_input() dentro do subsistema sppp(4) do OpenBSD, que gerencia links PPP síncronos usados em conectividade PPPoE. Durante a fase de autenticação PPP, sistemas que dependem do Protocolo de Autenticação por Senha (PAP) validam credenciais de usuário antes de estabelecer uma sessão de rede.
Detalhes técnicos da exploração
No entanto, pesquisadores descobriram que essa lógica de validação foi fundamentalmente falha desde sua introdução em 1999. A falha decorre do tratamento inadequado de campos de comprimento controlados pelo atacante durante a comparação de credenciais. A lógica de validação de credenciais PAP comparava campos de nome de usuário e senha fornecidos pelo atacante usando bcmp(), mas confiava nos valores de comprimento tomados diretamente do quadro PAP de entrada. Como valores de comprimento zero passam nas verificações de limite superior existentes, a comparação nunca falha, e o OpenBSD aceita incorretamente a solicitação de autenticação sem verificar qualquer credencial.
Impacto e alcance
Isso permite efetivamente um burla de autenticação completa, permitindo acesso não autorizado a sessões PPP. Uma questão relacionada surge da mesma falha de design. Se um atacante fornecer um comprimento maior que o tamanho de credencial alocado real, a função bcmp() lê além do limite de memória alocado pretendido. Isso resulta em uma leitura de heap do kernel, potencialmente expondo o conteúdo de memória adjacente. A vulnerabilidade é alcançável via caminho de dados PPPoE e não requer credenciais válidas.
Medidas de mitigação recomendadas
Um atacante operando um servidor PPPoE rogue dentro do mesmo domínio de broadcast pode explorar essa falha para se passar por um servidor legítimo. A correção espelha o padrão mais seguro já presente no manipulador CHAP, adicionando verificações de pré-comprimento exato antes de qualquer chamada bcmp(). A questão foi divulgada de forma responsável em 12 de junho de 2026 e corrigida em dois dias. O patch adiciona verificações de validação de comprimento estritas para rejeitar entradas de comprimento zero e excessivas antes da comparação.
Perguntas frequentes
Qual é o risco principal?
Acesso não autorizado a sessões PPP e potencial leitura de memória do kernel.
Como mitigar?
Organizações usando OpenBSD, particularmente em ambientes que dependem de autenticação PPPoE, devem aplicar os patches mais recentes imediatamente.