
Sitzungsbezogene TOTP-Ratenbegrenzung erlaubt wiederholte Verifizierungsversuche
FileRise-Versionen vor 3.23.0 speicherten fehlgeschlagene TOTP-Verifizierungsversuche im PHP-Sitzungszustand. Der Zähler begrenzte die Versuche innerhalb einer Sitzung, wurde jedoch nicht über neu erstellte Sitzungen hinweg beibehalten.
Ein Angreifer, der bereits über gültige primäre Anmeldedaten eines Zielkontos verfügt, konnte den Anmeldeablauf neu starten, eine neue Sitzung mit ausstehender Anmeldung erhalten und das TOTP-Versuchsbudget wiederherstellen. Die Wiederholung dieses Vorgangs ermöglichte fortgesetztes Online-TOTP-Raten über das vorgesehene Limit von fünf Versuchen hinaus.
Der TOTP-Verifizierungsablauf führte seinen Fehlerzähler in $_SESSION. Nach fünf fehlgeschlagenen Übermittlungen gaben weitere Versuche in dieser Sitzung HTTP 429 zurück.
Das erfolgreiche Abschließen der primären Authentifizierung in einer neuen Sitzung erzeugte jedoch einen neuen Zustand mit ausstehender Anmeldung und einen neuen TOTP-Fehlerzähler. Die TOTP-Fehler des vorherigen Kontos wurden daher nicht übernommen.
Das Problem betraf auch einen weiteren TOTP-Handler für ausstehende Anmeldungen, der dasselbe dauerhafte Limit nicht durchsetzte. Die Behebung wurde folglich zentral über alle TOTP-Verifizierungspfade für ausstehende Anmeldungen angewendet.
Dieses Problem ist als CWE-307 klassifiziert: Unzureichende Einschränkung übermäßiger Authentifizierungsversuche.
Die Ausnutzung erfordert den Besitz gültiger primärer Anmeldedaten des Zielkontos, beispielsweise eines Passworts, das durch Credential Reuse, Phishing oder eine andere Kompromittierung erlangt wurde.
Die Schwachstelle gibt keine Anmeldedaten preis und umgeht TOTP nicht unmittelbar. Sie ermöglicht fortgesetztes automatisiertes TOTP-Raten ohne ein dauerhaftes kontoweites Limit. Ein erfolgreicher Rateversuch schließt die Authentifizierung mit den Berechtigungen des betroffenen Kontos ab, möglicherweise einschließlich Administratorrechten.
Konten ohne aktiviertes TOTP sind von diesem spezifischen Rate-Limit-Problem des zweiten Faktors nicht betroffen.
FileRise 3.23.0 führt eine zentralisierte persistente TOTP-Versuchsbegrenzung ein:
Bestehende Konten, TOTP-Geheimnisse, Sitzungen, Docker-Installationen und Bereitstellungskonfiguration erfordern keine Migration.
Benutzer sollten auf FileRise 3.23.0 oder höher aktualisieren.
Vielen Dank für die verantwortungsvolle Offenlegung und die detaillierten Reproduktionsschritte.
Wir haben den TOTP-Verifizierungsablauf überprüft und das zugrunde liegende Problem bestätigt. Fehlgeschlagene TOTP-Übermittlungen wurden im primären Frontend-Verifizierungsendpunkt nur durch einen PHP-Sitzungszähler begrenzt. Die Wiederholung des erfolgreichen primären Authentifizierungsschritts in einer neuen Sitzung konnte daher das Versuchsbudget für den zweiten Faktor wiederherstellen. Unsere Überprüfung identifizierte außerdem einen weiteren TOTP-Handler für ausstehende Anmeldungen, der denselben Versuchszähler nicht anwendete, sodass die Behebung zentral über die Verifizierungspfade angewendet wurde und nicht nur auf den gemeldeten Endpunkt.
Der Fix wurde für FileRise v3.23.0 implementiert:
Das Kontolimit beträgt fünf Versuche in einem 15-Minuten-Fenster. Das quellenweite Limit ist absichtlich höher und liegt bei 50 Versuchen im selben Fenster, um Fehlalarme für gemeinsam genutzte Netzwerke zu reduzieren. Bestehende Konten, TOTP-Geheimnisse, Sitzungen, Docker-Installationen und Bereitstellungskonfiguration erfordern keine Migration.
Credit: Pervin Zahidli (@ech0void ) Ref : https://github.com/error311/FileRise/security/advisories/GHSA-4hfj-6478-5cv7