Impact
The Grav API plugin (grav-plugin-api) fails to validate the origin of the client‑supplied admin_base_url in the POST /api/v1/auth/forgot‑password endpoint. The sanitizeHttpUrl() function only verifies that the URL scheme is http or https and never checks the host against the server’s own origin, allowing an attacker to supply an arbitrary host. As a result, an unauthenticated attacker can cause password‑reset emails sent to victims to contain a reset link pointing at an attacker‑controlled server; when the victim follows the link, the valid reset token is disclosed and the attacker gains full control of the victim’s account.
Affected Systems
Grav installations that include grav-plugin-api before version 1.0.4 are affected. This includes all users who have not applied the 1.0.4 security release and therefore remain vulnerable to this token‑poisoning flaw.
Risk and Exploitability
The CVSS score of 9.4 shows very high severity, while the EPSS score of less than 1% indicates a low exploitation probability under current conditions. The vulnerability is not listed in the CISA KEV catalog. Exploitation requires only sending a crafted POST request to the forgot‑password endpoint or manipulating the Referer or Origin headers; the attacker can supply an arbitrary host, leading to disclosure of a valid reset token and full account takeover.
OpenCVE Enrichment