Bypass de Autenticação PAP de 27 Anos no OpenBSD

Uma publicação da Argus Systems revela que um bug de comparação existia no subsistema sppp(4) do OpenBSD desde 1999. A falha em bcmp permitia que a autenticação PAP fosse bem-sucedida quando tanto o nome de usuário quanto as senhas tinham comprimento zero. Com name_len=0 e passwd_len=0, as chamadas para bcmp() retornavam 0, permitindo que a autenticação fosse bem-sucedida sem quaisquer credenciais.
O bug também permitia leituras de memória do kernel: se name_len excedesse o tamanho real de sp->hisauth.name, bcmp poderia ler além dos limites de memória do objeto.
🥷🏻 Um atacante no mesmo segmento de rede L2 (domínio de broadcast) poderia iniciar um servidor PPPoE falso, completar todo o handshake e redirecionar o tráfego da vítima através de um nó controlado.
⚠️ O problema é rastreado como CVE‑2026‑55706 e afeta todas as versões do OpenBSD de 1 de julho de 1999 a 14 de junho de 2026. A exploração não requer privilégios.
O patch adiciona verificações rigorosas de comprimento de string, correspondendo ao tratamento existente do CHAP, e corrige ambos os problemas:
c
if (name_len != strlen(sp->hisauth.name) ||
    passwd_len != strlen(sp->hisauth.secret) ||
    bcmp(name, sp->hisauth.name, name_len) != 0 ||
    bcmp(passwd, sp->hisauth.secret, passwd_len) != 0) {```

📎 Artigo: https://blog.argus-systems.ai/blog/openbsd-pap-27-year-auth-bypass.html
🦠 PoC está anexado à publicação como um arquivo: https://blog.argus-systems.ai/blog/poc-001-pap-bypass.py
Vulnerabilidades
8.3
CVE-2026-55706
Pesquisadores
Argus
Fornecedor
Argus Systems
Openbsd
Produto
Openbsd
Sppp(4)