
Limitação de taxa TOTP por sessão permite tentativas de verificação repetidas
As versões do FileRise anteriores à 3.23.0 armazenavam tentativas de verificação de TOTP malsucedidas no estado da sessão PHP. O contador limitava as tentativas dentro de uma sessão, mas não persistia entre sessões recém-criadas.
Um atacante que já possuísse a credencial primária válida de uma conta-alvo poderia reiniciar o fluxo de login, receber uma nova sessão de login pendente e restaurar a margem de tentativas de TOTP. Repetir esse processo permitia a continuidade de tentativas online de adivinhação de TOTP além do limite pretendido de cinco tentativas.
O fluxo de verificação de TOTP mantinha seu contador de falhas em $_SESSION. Após cinco envios malsucedidos, novas tentativas nessa sessão retornavam HTTP 429.
No entanto, concluir com êxito a autenticação primária em uma nova sessão criava um novo estado de login pendente com um novo contador de falhas de TOTP. As falhas de TOTP da conta anterior, portanto, não eram transportadas adiante.
O problema também afetava outro manipulador de TOTP de login pendente que não aplicava o mesmo limite durável. A correção foi, consequentemente, aplicada de forma centralizada em todos os caminhos de verificação de TOTP de login pendente.
Este problema é classificado como CWE-307: Restrição Imprópria de Tentativas Excessivas de Autenticação.
A exploração exige a posse da credencial primária válida da conta-alvo, como uma senha obtida por meio de reutilização de credenciais, phishing ou outro comprometimento.
A vulnerabilidade não divulga credenciais nem contorna imediatamente o TOTP. Ela permite a continuidade de tentativas automatizadas de adivinhação de TOTP sem um limite durável em toda a conta. Uma adivinhação bem-sucedida conclui a autenticação com os privilégios da conta afetada, potencialmente incluindo privilégios de administrador.
Contas sem TOTP habilitado não são afetadas por este problema específico de limite de taxa do segundo fator.
O FileRise 3.23.0 introduz limitação persistente centralizada de tentativas de TOTP:
Contas existentes, segredos de TOTP, sessões, instalações Docker e configuração de implantação não exigem migração.
Os usuários devem atualizar para o FileRise 3.23.0 ou posterior.
Obrigado pela divulgação responsável e pelos passos detalhados de reprodução.
Revisamos o fluxo de verificação de TOTP e confirmamos o problema subjacente. Os envios malsucedidos de TOTP eram limitados apenas por um contador de sessão PHP no endpoint principal de verificação do frontend. Repetir a etapa bem-sucedida de autenticação primária em uma nova sessão poderia, portanto, restaurar o orçamento de tentativas do segundo fator. Nossa revisão também identificou outro manipulador de TOTP de login pendente que não aplicava o mesmo contador de tentativas, então a correção foi aplicada de forma centralizada em todos os caminhos de verificação, em vez de apenas no endpoint relatado.
A correção foi implementada para o FileRise v3.23.0:
O limite da conta é de cinco tentativas em uma janela de 15 minutos. O limite em toda a origem é intencionalmente mais alto, em 50 tentativas na mesma janela, para reduzir falsos positivos em redes compartilhadas. Contas existentes, segredos de TOTP, sessões, instalações Docker e configuração de implantação não exigem migração.
Credit: Pervin Zahidli (@ech0void ) Ref : https://github.com/error311/FileRise/security/advisories/GHSA-4hfj-6478-5cv7