WebPros cPanel and WHM Authentication Bypass via Login Flow
Corrija agora. Ela está sob exploração confirmada pelo CISA e tem exploit funcional público.
Apply mitigations per vendor instructions, follow applicable BOD 22-01 guidance for cloud services, or discontinue use of the product if mitigations are unavailable.
Resumo
Falha de bypass de autenticação no fluxo de sessão do cpsrvd (o daemon que atende WHM/cPanel), presente em todas as versões atualmente suportadas segundo o próprio fornecedor — não apenas em builds antigas como a descrição oficial ('após 11.40') sugere. Um atacante não autenticado consegue transformar uma sessão pré-autenticação (criada em qualquer tentativa de login, inclusive falha) em uma sessão root de WHM, obtendo controle administrativo completo do servidor. É explorada em massa, já usada como zero-day antes da divulgação pública e está associada a campanhas de ransomware.
Detalhamento técnico
O bug está na gravação e carga de arquivos de sessão do cPanel/WHM (Cpanel/Session.pm, Cpanel/Session/Load.pm e Cpanel/Session/Encoder.pm). Cada tentativa de login — mesmo com credenciais inválidas — faz o cpsrvd gerar um arquivo de sessão 'preauth' em /var/cpanel/sessions/raw/, um formato de texto com pares chave=valor separados por quebras de linha (session, pass, hasroot, user, theme, lang, origin, etc.). Existe uma função filter_sessiondata() cujo papel é remover caracteres \r \n = \ desses valores para impedir que um campo controlado pelo atacante (como 'pass') injete outros campos no arquivo de sessão.
Como é explorada
O vetor é HTTP direto contra o cpsrvd, sem necessidade de conta válida: qualquer requisição de login (POST /login/?login_only=1) já basta para mintar uma sessão preauth e obter seu identificador via cookie whostmgrsession. Em seguida, o atacante explora o caminho 'no-ob' (sem chave de ofuscação) do encoder de sessão para gravar no arquivo de sessão um valor de 'pass' contendo bytes de controle não filtrados — na prática, uma injeção CRLF que insere um campo extra no arquivo, como hasroot=1. O gatilho do bug é a recarga da sessão: uma requisição que force o cpsrvd a mover a sessão de 'raw' para 'cache' (o caminho do_token_denied, segundo o watchTowr) faz o daemon reprocessar o arquivo já adulterado e tratá-lo como uma sessão autenticada de root, sem jamais validar uma senha real. Um passo final (chamada a /json-api/version, por exemplo) confirma acesso root a WHM.
Versões
Como se proteger
Atualizar para a versão corrigida do respectivo ramo: 110.0.x → 11.110.0.97; 118.0.x → 11.118.0.63; 126.0.x → 11.126.0.54; 132.0.x → 11.132.0.29; 134.0.x → 11.134.0.20; 136.0.x → 11.136.0.5. Não há flag de configuração que desative a falha sem patch, porque o defeito está na lógica interna de saveSession()/loadSession() do cpsrvd, não em um recurso opcional.