
Prova de conceito de exploit para CVE-2026-73313, uma bypass de MFA no provedor de TFA por chave de acesso do XenForo que permite a tomada de conta após o comprometimento da senha.
XenForo anterior à versão 2.3.13 pode concluir o login em duas etapas de um usuário com uma passkey pertencente a um usuário diferente.
O gerenciador de passkeys realiza uma busca global usando o ID da credencial fornecida na asserção e verifica corretamente a assinatura WebAuthn dessa credencial. O provedor de TFA então reduz o resultado a um booleano sem verificar se o proprietário da credencial corresponde ao usuário cujo login por senha está pendente.
Um atacante que conhece a senha correta do alvo pode responder ao desafio de passkey do alvo usando a própria passkey registrada do atacante. O login é concluído como o alvo. O fluxo compartilhado também afetou o login do ACP quando o alvo era um administrador.
Esta é uma bypass de MFA após o comprometimento do primeiro fator, não uma tomada de controle sem senha. O atacante precisa de uma passkey válida própria, da senha do alvo e de uma conta alvo configurada para TFA por passkey.
Reproduzi tanto os fluxos públicos quanto os do ACP no XenForo 2.3.12 (build 2031270). O XenForo 2.3.13 contém a correção.
Instale as duas dependências, prepare usuários descartáveis de atacante/alvo e uma credencial de teste de propriedade do atacante, e então execute:
python -m pip install -r requirements.txt
python poc.py https://xenforo.example TARGET_USERNAME ATTACKER_CREDENTIAL_ID attacker-private-key.pem
A senha do alvo é lida com um prompt oculto. O script não provisiona usuários, não modifica linhas de passkey, não imprime a senha e não grava um arquivo de evidência. Sua saída contém apenas o status HTTP e um booleano final.
Descoberto por Marco Paciaroni (BomboBombone).