fix: CSRF vulnerability in GitHub auth callback #716
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.
Problem
A Cross-Site Request Forgery (CSRF) vulnerability was discovered in the GitHub authentication callback handler at /api/auth/github/callback.
The application failed to properly validate the state parameter when the corresponding state cookie was missing.
This created a potential attack vector where a malicious actor could trick a user into authorizing the application, leading to unauthorized access to user accounts.
Solution
The authentication logic was updated to strictly validate both the presence and correctness of the state parameter.
Previous logic:
if (storedState and state is not equal to storedState)
Updated logic:
if (storedState is missing or state is not equal to storedState)
Impact
This update significantly improves the security of the GitHub OAuth flow. The benefits include:
Prevention of Cross-Site Request Forgery (CSRF) attacks
Blocking of unauthorized access through malicious authentication attempts
Ensuring only properly validated login flows are accepted