The OAuth access token issued by the application does not expire, making it persistently valid. This allows an attacker who captures a valid token; through insecure storage, interception, or another attack vector; to reuse it indefinitely without needing the user’s password.
In this issue, the application generates OAuth access tokens that do not expire or lack proper expiration handling. This means that once an attacker gets hold of a valid token (ex, through session hijacking, XSS, or insecure storage), they can continue to use it indefinitely to access the victim's account; without needing to know the user's password.
Since OAuth tokens are meant to be temporary, long-lived or never-expiring tokens defeat the core principle of access token security. Tokens must expire to limit the impact of their theft or misuse.
A typical attack scenario involves capturing a valid token from a legitimate login (via browser traffic or insecure storage) and then replaying it from another browser. Even after a failed login attempt, the attacker can forcefully inject the captured token to bypass authentication and gain access.
This vulnerability allows persistent unauthorized access if a stolen token is reused. It enables attackers to compromise user accounts without knowing their passwords and significantly increases the risk of session hijacking or impersonation. Additionally, it breaks the intended OAuth token lifecycle and trust model, making token revocation and session control ineffective.