GHSA-2cjv-6wg9-f4f3
Strapi Password Hashing is Missing Maximum Password Length Validation
Packages
| Ecosystem | Package | Affected | Fixed in |
|---|---|---|---|
| npm | @strapi/core | < 5.10.3 | 5.10.3 |
Details
As written in the advisory (Markdown source, shown as plain text).
## Summary
Strapi's password hashing implementation using bcryptjs lacks maximum password length validation. Since bcryptjs truncates passwords exceeding 72 bytes, this creates potential vulnerabilities such as authentication bypass and performance degradation.
## POC
Create an admin user with a password exceeding 72 characters like 85,
Log in using only the first 72 characters of the password.
Authentication is successful, confirming the issue.
Proposed Solution Based on discussions:
Add a maximum password length validation (72 characters) during password creation and updates for both Admin and U&P users.
Truncate passwords exceeding 72 bytes on the server before passing them to bcryptjs during login.
Optionally, issue a warning to users with passwords longer than 72 bytes during login, informing them of truncation.
## Impact
This issue affects all Strapi installations using bcryptjs for password hashing. Until resolved, it can lead to:
Authentication Bypass: Users may unknowingly set passwords exceeding 72 bytes, leading to truncated, predictable hashes.
Performance Issues: Excessively long passwords can degrade server performance.
References
External links from the advisory. They lead to third-party sites.