
Proof-of-concept exploit per CVE-2026-73313, un bypass MFA nel provider TFA passkey di XenForo che consente il takeover dell'account dopo il compromesso della password.
XenForo precedente alla 2.3.13 può completare il login a due passaggi di un utente con una passkey di proprietà di un utente diverso.
Il gestore delle passkey esegue una ricerca globale utilizzando l'ID della credenziale fornito nell'asserzione e verifica correttamente la firma WebAuthn di tale credenziale. Il provider TFA riduce quindi il risultato a un valore booleano senza verificare che il proprietario della credenziale corrisponda all'utente il cui login con password è in sospeso.
Un attaccante che conosce la password corretta della vittima può rispondere alla sfida passkey della vittima utilizzando la propria passkey registrata. Il login viene completato come la vittima. Il flusso condiviso ha interessato anche il login ACP quando la vittima era un amministratore.
Si tratta di un bypass MFA dopo il compromesso del primo fattore, non di un takeover senza password. L'attaccante necessita di una propria passkey valida, della password della vittima e di un account vittima configurato per la TFA con passkey.
Ho riprodotto sia i flussi pubblici che quelli ACP su XenForo 2.3.12 (build 2031270). XenForo 2.3.13 contiene la correzione.
Installa le due dipendenze, prepara utenti attaccante/vittima usa e getta e una credenziale di test di proprietà dell'attaccante, quindi esegui:
python -m pip install -r requirements.txt
python poc.py https://xenforo.example TARGET_USERNAME ATTACKER_CREDENTIAL_ID attacker-private-key.pem
La password della vittima viene letta con un prompt nascosto. Lo script non crea utenti, non modifica le righe delle passkey, non stampa la password e non scrive un file di evidenza. Il suo output contiene solo lo stato HTTP e un valore booleano finale.
Scoperto da Marco Paciaroni (BomboBombone).