Impact
OpenProject’s unauthenticated password-change endpoint (/account/change_password) was not protected by the same brute-force safeguards that apply to the normal login form.
In affected versions, an attacker who can guess or enumerate user IDs can send unlimited password-change requests for a given account without triggering lockout or other rate-limiting controls.
This allows automated password-guessing (e.g., with wordlists of common passwords) against valid accounts. Successful guessing results in full account compromise for the targeted user and, depending on that user’s role, can lead to further privilege escalation inside the application.
Patches
The issue has been fixed by applying the login brute-force protections (and, where configured, reCAPTCHA) to the /account/change_password endpoint as well:
- Failed password-change attempts now count toward the same lockout thresholds as failed login attempts.
- When reCAPTCHA is enabled, it is also enforced for the password-change flow.
Users should upgrade to OpenProject version 16.6.2 or later (and the corresponding patched releases on all supported branches). Deploying a patched version is the recommended and most reliable remediation.
You can also apply this patch manually: 69216-password-change-brute-force.patch
Workarounds
If upgrading immediately is not possible, the following measures can reduce exposure:
- Restrict or disable unauthenticated use of
/account/change_password (e.g., require an authenticated session or a one-time token delivered via a trusted channel).
- Apply rate limiting or IP-based throttling to the
/account/change_password endpoint at a reverse proxy or WAF.
- Enforce strong, unique passwords for all users to make brute-force attacks less feasible.
These workarounds are defense-in-depth only and do not fully replace upgrading to a fixed version.
References
#21272
Credits
This vulnerability has been reported by Mantodea Security GmbH, https://mantodeasecurity.de/.
Impact
OpenProject’s unauthenticated password-change endpoint (
/account/change_password) was not protected by the same brute-force safeguards that apply to the normal login form.In affected versions, an attacker who can guess or enumerate user IDs can send unlimited password-change requests for a given account without triggering lockout or other rate-limiting controls.
This allows automated password-guessing (e.g., with wordlists of common passwords) against valid accounts. Successful guessing results in full account compromise for the targeted user and, depending on that user’s role, can lead to further privilege escalation inside the application.
Patches
The issue has been fixed by applying the login brute-force protections (and, where configured, reCAPTCHA) to the
/account/change_passwordendpoint as well:Users should upgrade to OpenProject version
16.6.2or later (and the corresponding patched releases on all supported branches). Deploying a patched version is the recommended and most reliable remediation.You can also apply this patch manually: 69216-password-change-brute-force.patch
Workarounds
If upgrading immediately is not possible, the following measures can reduce exposure:
/account/change_password(e.g., require an authenticated session or a one-time token delivered via a trusted channel)./account/change_passwordendpoint at a reverse proxy or WAF.These workarounds are defense-in-depth only and do not fully replace upgrading to a fixed version.
References
#21272
Credits
This vulnerability has been reported by Mantodea Security GmbH, https://mantodeasecurity.de/.