Account takeover via reusable password-reset token
app.example.com
POST /api/auth/reset HTTP/1.1Host: app.example.com{"token":"7f3c9a0e…e21b","password":"********"}HTTP/1.1 200 OK{"status":"password_updated"}# same token, first used 9 days earlier- Impact
- Reset links never expire and stay valid after use. Anyone who later sees one, in a forwarded email or a proxy log, can take over the account.
- Fix
- Make reset tokens single-use with a short expiry, and revoke open tokens and sessions when the password changes.