
Limitation de débit TOTP par session permettant des tentatives de vérification répétées
Les versions de FileRise antérieures à 3.23.0 stockaient les tentatives de vérification TOTP échouées dans l'état de session PHP. Le compteur limitait les tentatives au sein d'une même session, mais ne persistait pas à travers les sessions nouvellement créées.
Un attaquant qui possède déjà le credential principal valide d'un compte cible pouvait redémarrer le workflow de connexion, recevoir une nouvelle session de connexion en attente, et restaurer l'allocation de tentatives TOTP. La répétition de ce processus permettait de continuer à deviner le TOTP en ligne au-delà de la limite prévue de cinq tentatives.
Le flux de vérification TOTP maintenait son compteur d'échecs dans $_SESSION. Après cinq soumissions échouées, les tentatives suivantes dans cette session renvoyaient HTTP 429.
Cependant, la réussite de l'authentification primaire dans une nouvelle session créait un nouvel état de connexion en attente avec un nouveau compteur d'échecs TOTP. Les échecs TOTP du compte précédent n'étaient donc pas reportés.
Le problème affectait également un autre gestionnaire TOTP de connexion en attente qui n'appliquait pas la même limite durable. La remédiation a par conséquent été appliquée de manière centralisée sur tous les chemins de vérification TOTP de connexion en attente.
Ce problème est classifié comme CWE-307 : Restriction inappropriée des tentatives d'authentification excessives.
L'exploitation nécessite la possession du credential principal valide du compte cible, tel qu'un mot de passe obtenu par réutilisation de credentials, hameçonnage, ou une autre compromission.
La vulnérabilité ne divulgue pas de credentials et ne contourne pas immédiatement le TOTP. Elle permet de continuer à deviner le TOTP de manière automatisée sans limite durable à l'échelle du compte. Une tentative réussie complète l'authentification avec les privilèges du compte affecté, potentiellement y compris les privilèges d'administrateur.
Les comptes sans TOTP activé ne sont pas affectés par ce problème spécifique de limitation de débit du second facteur.
FileRise 3.23.0 introduit une limitation centralisée et persistante des tentatives TOTP :
Les comptes existants, les secrets TOTP, les sessions, les installations Docker et la configuration de déploiement ne nécessitent aucune migration.
Les utilisateurs doivent mettre à niveau vers FileRise 3.23.0 ou une version ultérieure.
Merci pour la divulgation responsable et les étapes de reproduction détaillées.
Nous avons examiné le workflow de vérification TOTP et confirmé le problème sous-jacent. Les soumissions TOTP échouées n'étaient limitées que par un compteur de session PHP dans le point de terminaison principal de vérification du frontend. Répéter l'étape réussie d'authentification primaire dans une nouvelle session pouvait donc restaurer le budget de tentatives du second facteur. Notre examen a également identifié un autre gestionnaire TOTP de connexion en attente qui n'appliquait pas le même compteur de tentatives, de sorte que la remédiation a été appliquée de manière centralisée sur les chemins de vérification plutôt que seulement sur le point de terminaison signalé.
Le correctif a été implémenté pour FileRise v3.23.0 :
La limite du compte est de cinq tentatives dans une fenêtre de 15 minutes. La limite à l'échelle de la source est intentionnellement plus élevée, à 50 tentatives dans la même fenêtre, afin de réduire les faux positifs pour les réseaux partagés. Les comptes existants, les secrets TOTP, les sessions, les installations Docker et la configuration de déploiement ne nécessitent aucune migration.
Crédit : Pervin Zahidli (@ech0void ) Réf : https://github.com/error311/FileRise/security/advisories/GHSA-4hfj-6478-5cv7