Implement per-user failed login attempt tracking and account lockout in login() handler to mitigate brute force attacks. #1603
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Summary
The Vulnerability Description:
The
login()handler inroutes/login.tslacked any mechanism to track failed login attempts per user, enforce exponential backoff delays, or lock accounts after repeated failures, making it susceptible to brute-force password attacks.This Fix:
The patch adds per-user and per-IP failed login attempt tracking, limits the number of failed login attempts to 5, and locks the account temporarily by responding with HTTP 429 after too many consecutive failures.
The Cause of the Issue:
On authentication failure, the code immediately returned HTTP 401 without recording failed attempts, applying delays, or enforcing account lockouts, allowing attackers unlimited login tries.
The Patch Implementation:
The changes introduce an in-memory counter keyed by IP and email, increment it on failed logins, reset it after successful login, and block further attempts once the maximum threshold is exceeded.
Vulnerability Details
Code Snippets
How to Modify the Patch
You can modify this patch by using one of the two methods outlined below. We recommend using the
@zeropath-ai-devbot for updating the code. If you encounter any bugs or issues with the patch, please report them here.Ask
@zeropath-ai-dev!To request modifications, please post a comment beginning with
@zeropath-ai-devand specify the changes required.@zeropath-ai-devwill then implement the requested adjustments and commit them to the specified branch in this pull request. Our bot is capable of managing changes across multiple files and various development-related requests.Manually Modify the Files