
Proof-of-concept exploit che dimostra il riutilizzo del codice di autorizzazione OAuth2 in XenForo precedente alla versione 2.3.13, consentendo il replay del token e la creazione di più famiglie di token.
XenForo precedente alla versione 2.3.13 consente che un codice di autorizzazione OAuth2 venga riscattato più di una volta.
Il flusso di concessione del codice di autorizzazione carica un codice, ne verifica la validità temporale e crea una coppia di token. Il percorso riuscito non elimina il codice, non lo contrassegna come consumato e non utilizza un aggiornamento atomico monouso. Ripetere lo stesso scambio valido crea quindi una famiglia indipendente di token di accesso/aggiornamento per lo stesso utente e gli stessi ambiti.
Un attaccante ha comunque bisogno di un codice di autorizzazione valido e dei parametri client richiesti da quella concessione. Questo problema non spiega come si ottiene il codice; rende semplicemente un codice riutilizzabile dopo che il client previsto lo ha già riscattato.
Su XenForo 2.3.12 (build 2031270), due scambi identici hanno restituito token di accesso diversi ed entrambi si sono autenticati correttamente. XenForo 2.3.13 contiene la correzione.
python poc.py https://xenforo.example CLIENT_ID AUTHORIZATION_CODE https://client.example/callback --code-verifier VERIFIER
Lo script invia la stessa concessione due volte, calcola l'hash dei token restituiti e segnala se entrambi funzionano. Non stampa credenziali né identità dell'account. Eseguirlo solo con una concessione usa e getta su un'installazione di test autorizzata.
Scoperto da Marco Paciaroni (BomboBombone).