CVE-2025-22228 Overview
BCryptPasswordEncoder.matches(CharSequence,String) will incorrectly return true for passwords larger than 72 characters as long as the first 72 characters are the same.
Critical Impact
This vulnerability in BCryptPasswordEncoder allows unauthorized access by improperly validating passwords longer than 72 characters.
Affected Products
- Not Available
- Not Available
- Not Available
Discovery Timeline
- 2025-03-20T06:15:23.087 - CVE CVE-2025-22228 published to NVD
- 2025-04-25T23:15:16.877 - Last updated in NVD database
Technical Details for CVE-2025-22228
Vulnerability Analysis
The issue exists within the BCryptPasswordEncoder of the Spring framework, where the matches function fails to correctly compare passwords that exceed 72 characters. This defect allows an attacker to bypass authentication mechanisms if only the first 72 characters of the password match the valid credentials.
Root Cause
The root cause lies in BCrypt's handling, which only considers the first 72 characters of a string for hashing. Beyond this, characters do not influence the hash, enabling unauthorized access if excess length is mismanaged.
Attack Vector
Network-based exploits can be attempted where attackers submit passwords extending beyond 72 characters, focusing only on compromising the initial segment.
// Example exploitation scenario
String longPassword = "validPasswordUpTo72Characters" + "excessCharactersForBypass";
boolean isMatch = passwordEncoder.matches(longPassword, encodedPassword);
System.out.println("Password match: " + isMatch); // Returns true if first 72 characters are correct
Detection Methods for CVE-2025-22228
Indicators of Compromise
- Unexpected successful logins with long passwords
- Log entries showing unusually long password inputs
- Failed logins followed by successful attempts using extended passwords
Detection Strategies
Adopt logging and monitoring for authentication mechanisms to capture and flag attempts where passwords exceed the typical expected length, especially focusing on match results.
Monitoring Recommendations
Implement monitoring for authentication events, and set alerts for anomalous login attempts involving passwords longer than 72 characters.
How to Mitigate CVE-2025-22228
Immediate Actions Required
- Update BCrypt dependencies to patched versions
- Implement input validation to reject passwords longer than 72 characters
- Review authentication logs for irregularities
Patch Information
No specific patch details are available. Refer to vendor advisory: Spring Advisory.
Workarounds
Apply input validation to ensure passwords do not exceed 72 characters before processing.
// Configuration example for input validation
public class PasswordValidator {
public static boolean isValid(String password) {
return password != null && password.length() <= 72;
}
}
Disclaimer: This content was generated using AI. While we strive for accuracy, please verify critical information with official sources.

