{"id":"CVE-2026-40585","summary":"blueprintUE: Password Reset Tokens Have No Expiry Window","details":"blueprintUE is a tool to help Unreal Engine developers. Prior to 4.2.0, when a password reset is initiated, a 128-character CSPRNG token is generated and stored alongside a password_reset_at timestamp. However, the token redemption function findUserIDFromEmailAndToken() queries only for a matching email + password_reset token pair — it does not check whether the password_reset_at timestamp has elapsed any maximum window. A generated reset token is valid indefinitely until it is explicitly consumed or overwritten by a subsequent reset request. This vulnerability is fixed in 4.2.0.","aliases":["GHSA-qr65-6vp8-whjf"],"modified":"2026-07-08T08:13:12.505432355Z","published":"2026-04-21T17:09:17.982Z","database_specific":{"cwe_ids":["CWE-640"],"osv_generated_from":"https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/40xxx/CVE-2026-40585.json","cna_assigner":"GitHub_M"},"references":[{"type":"ADVISORY","url":"https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/40xxx/CVE-2026-40585.json"},{"type":"ADVISORY","url":"https://github.com/blueprintue/blueprintue-self-hosted-edition/security/advisories/GHSA-qr65-6vp8-whjf"},{"type":"ADVISORY","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-40585"}],"affected":[{"ranges":[{"type":"GIT","repo":"https://github.com/blueprintue/blueprintue-self-hosted-edition","events":[{"introduced":"0"},{"fixed":"28689950b0fc1c6a0c5db2a034a03fdc9747467c"}],"database_specific":{"extracted_events":[{"introduced":"0"},{"fixed":"4.2.0"}],"source":"AFFECTED_FIELD"}}],"versions":["v4.1.2","v4.1.1","v4.1.0","v4.0.0","v3.2.0","v3.1.0","v3.0.0","v2.1.0","v2.0.1","v2.0.0","v1.0.6","v1.0.5","v1.0.4","v1.0.3","v1.0.2","v1.0.1","v1.0.0"],"database_specific":{"source":"https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-40585.json"}}],"schema_version":"1.7.5","severity":[{"type":"CVSS_V3","score":"CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:N"}]}