
Limitazione della frequenza TOTP con ambito di sessione che consente tentativi di verifica ripetuti
Le versioni di FileRise precedenti alla 3.23.0 memorizzavano i tentativi falliti di verifica TOTP nello stato della sessione PHP. Il contatore limitava i tentativi all'interno di una singola sessione ma non persisteva attraverso sessioni di nuova creazione.
Un attaccante che possiede già la credenziale primaria valida di un account target poteva riavviare il flusso di login, ricevere una nuova sessione di login in sospeso e ripristinare il margine di tentativi TOTP. Ripetendo questo processo era possibile continuare a indovinare il TOTP online oltre il limite previsto di cinque tentativi.
Il flusso di verifica TOTP manteneva il proprio contatore dei fallimenti in $_SESSION. Dopo cinque invii falliti, ulteriori tentativi in quella sessione restituivano HTTP 429.
Tuttavia, completare con successo l'autenticazione primaria in una nuova sessione creava un nuovo stato di login in sospeso con un nuovo contatore dei fallimenti TOTP. I fallimenti TOTP del precedente account non venivano quindi trasferiti.
Il problema riguardava anche un altro gestore TOTP di login in sospeso che non applicava lo stesso limite durevole. La correzione è stata di conseguenza applicata centralmente a tutti i percorsi di verifica TOTP di login in sospeso.
Questo problema è classificato come CWE-307: Restrizione impropria dei tentativi di autenticazione eccessivi.
Lo sfruttamento richiede il possesso della credenziale primaria valida dell'account target, come una password ottenuta tramite riutilizzo delle credenziali, phishing o altra compromissione.
La vulnerabilità non divulga credenziali né aggira immediatamente il TOTP. Consente di continuare a indovinare automaticamente il TOTP senza un limite durevole a livello di account. Un tentativo riuscito completa l'autenticazione con i privilegi dell'account interessato, potenzialmente inclusi i privilegi di amministratore.
Gli account senza TOTP abilitato non sono interessati da questo specifico problema di limitazione della frequenza del secondo fattore.
FileRise 3.23.0 introduce una limitazione centralizzata e persistente dei tentativi TOTP:
Gli account esistenti, i segreti TOTP, le sessioni, le installazioni Docker e la configurazione di deployment non richiedono migrazione.
Gli utenti dovrebbero aggiornare a FileRise 3.23.0 o versione successiva.
Grazie per la divulgazione responsabile e per i passaggi di riproduzione dettagliati.
Abbiamo esaminato il flusso di verifica TOTP e confermato il problema di fondo. Gli invii TOTP falliti erano limitati solo da un contatore di sessione PHP nell'endpoint principale di verifica del frontend. Ripetere il passaggio di autenticazione primaria riuscita in una nuova sessione poteva quindi ripristinare il budget di tentativi del secondo fattore. La nostra revisione ha inoltre identificato un altro gestore TOTP di login in sospeso che non applicava lo stesso contatore dei tentativi, quindi la correzione è stata applicata centralmente a tutti i percorsi di verifica anziché solo all'endpoint segnalato.
La correzione è stata implementata per FileRise v3.23.0:
Il limite dell'account è di cinque tentativi in una finestra di 15 minuti. Il limite a livello di sorgente è intenzionalmente più elevato, 50 tentativi nella stessa finestra, per ridurre i falsi positivi sulle reti condivise. Gli account esistenti, i segreti TOTP, le sessioni, le installazioni Docker e la configurazione di deployment non richiedono migrazione.
Credit: Pervin Zahidli (@ech0void ) Ref : https://github.com/error311/FileRise/security/advisories/GHSA-4hfj-6478-5cv7