Description
LimeSurvey constructs account password-reset links from the client-supplied HTTP Host header without validating it. The optional allowedHosts allowlist that would constrain this is undefined in the default (and documented) configuration, so LSHttpRequest::checkIsAllowedHost() results in no operation. A remote, unauthenticated attacker who submits a forgotten-password request for a known account (requiring only the target's username and email) with a spoofed Host header causes LimeSurvey to email that account a reset link whose hostname is attacker-controlled while embedding the genuine validation_key. When the recipient or an automated inbound mail-security link scanner dereferences the link, the valid reset token is disclosed to the attacker, who replays it against the legitimate host's newPassword endpoint to set a new password and take over the account.
Affected products
| Vendor | Product | Affected | Fixed |
|---|---|---|---|
| LimeSurvey | LimeSurvey | ≤ 7.0 | 7.0.1 |
Affected packages
| Ecosystem | Package | Affected | Fixed | Record |
|---|---|---|---|---|
| Packagist | limesurvey/limesurvey | <= 7.0.0-beta1 | — | GHSA-5c37-5j7w-8mh8 |
References
- GitHub Pull Request 5032 issue-tracking patch
- Official Product Homepage product
- VulnCheck Advisory: LimeSurvey Password Reset Host Header Injection Discloses Reset Token third-party-advisory