Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessObtain valid JWT access token via login or capture
-
DeliverySend non-POST request (e.g., GET) to jwt_refresh route
-
ExploitServer returns 405 but leaks new JWT in Authorization header
-
ExecutionExtract fresh token from response
-
ImpactRepeat to maintain indefinite authenticated access
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A07:2025 - Authentication Failures
ASVS 5.0
V7 - Session Management Session expiration enforcement
|
| Exploitation Conditions | The attacker must possess at least one valid JWT access token for the target account - the bypass does not work without an existing token, eliminating unauthenticated exploitation. The target application must have Rodauth's jwt_refresh feature explicitly enabled in its configuration; applications using only the core jwt feature without jwt_refresh are not exposed. The application must run Rodauth below version 2.47.0. Non-POST HTTP methods must reach the jwt_refresh route, meaning a reverse proxy or WAF that enforces POST-only on that path would block the attack. The scope is limited to the account associated with the possessed token; there is no privilege escalation or cross-account impact. |
| Impact | The CVSS 4.0 base score of 5.1 (AV:N/AC:L/AT:N/PR:H/UI:N/VC:L/VI:L/VA:N) reflects a network-reachable but limited-impact vulnerability. PR:H signals that exploitation requires prior possession of a valid JWT access token - the attacker must already have authenticated at some point. The low confidentiality and integrity sub-scores indicate the impact is confined to unauthorized session prolongation rather than data exfiltration or system compromise. No EPSS data was provided. The absence of CISA KEV listing and no observed public exploit code suggest this is not being actively mass-exploited. The real-world risk is meaningful primarily in scenarios where short-lived JWT tokens are relied upon as a compensating control - for instance, post-revocation or post-logout access containment - since the bypass undermines that guarantee. For applications that do not use JWT-based sessions or do not have the jwt_refresh route enabled, there is no exposure. |
| Exploit ScenarioDerived | An attacker who obtained a short-lived JWT access token - through legitimate login, session capture, or credential theft - sends a GET request to the application's jwt_refresh endpoint with that token in the Authorization header. Rodauth processes the request, and despite returning a 405 error body, inadvertently includes a fresh JWT in the response Authorization header. The attacker extracts this new token and repeats the process indefinitely, maintaining persistent access even after the original token's intended expiry. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Aug 29, 2026
JWT access token indefinite renewal in Rodauth before 2.47.0 allows an attacker who possesses a valid access token to bypass the refresh token requirement entirely. By sending a non-POST HTTP request to the jwt_refresh route, the library still issues a new valid JWT access token without validating a refresh token, enabling perpetual session extension. No public exploit code has been identified and the vulnerability is not listed in CISA KEV, but the patch is available in version 2.47.0.
RemediationAI
Upgrade to Rodauth 2.47.0 or later, which resolves the issue by stripping the Authorization response header from non-POST and non-JSON-accepting requests to JWT routes. The fixing commit is 8174690cef743177111fb1d9184d129ff4700933 (https://github.com/jeremyevans/rodauth/commit/8174690cef743177111fb1d9184d129ff4700933). If an immediate upgrade is not feasible, a compensating control is to apply a middleware or reverse-proxy rule that restricts the jwt_refresh route to POST requests only, rejecting GET/PUT/PATCH/DELETE with 405 before they reach Rodauth; this prevents the non-POST bypass path without disabling JWT functionality. Note that disabling the jwt_refresh feature entirely removes the attack surface at the cost of forcing re-authentication when access tokens expire.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 1 package in euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
Rodauth (cpe:2.3:a:jeremyevans:rodauth:*:*:*:*:*:*:*:*) is a Ruby authentication framework supporting JWT-based sessions via its optional jwt and jwt_refresh features. The root cause is CWE-613 (Insufficient Session Expiration): the jwt_refresh route failed to gate JWT issuance on the HTTP method being POST. The commit diff shows that prior to 2.47.0, the set_jwt helper was called unconditionally in the response handler, even when the request used GET or other non-POST methods. The fix adds a guard checking for HTTP 405/406 status codes and deletes the Authorization response header in those cases, preventing a new token from being silently included in the error response.
Know when Rodauth gets its next vulnerability
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
CVSS:4.0/AV:N/AC:L/AT:N/PR:H/UI:N/VC:L/VI:L/VA:N/SC:N/SI:N/SA:N
Network-reachable but requires a valid access token (PR:L); limited confidentiality and integrity impact confined to session prolongation; no availability impact.
Primary rating from Vendor (VulnCheck).
CVSS VectorVendor: VulnCheck
DescriptionCVE.org
Rodauth before 2.47.0 contains an authentication bypass vulnerability in the jwt_refresh route that issues new JWT access tokens without requiring a refresh token. Attackers can present an access token to the refresh route via non-POST methods to obtain a new valid access token, enabling indefinite account access with temporary token possession.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Authentication bypass attacks exploit flaws in the verification mechanisms that control access to systems and applications.
Authentication bypass in Rodauth (the Ruby authentication framework by Jeremy Evans, jeremyevans:rodauth) before 2.46.0
TOTP code replay in Rodauth before 2.47.0 allows an attacker who has already obtained a victim's credentials and observe
Open redirect in Rodauth before 2.47.0 enables post-authentication phishing by failing to reject protocol-relative retur
CSRF protection bypass in Rodauth before 2.47.0 allows remote attackers to force victims into authenticated sessions und
EUVD-2026-68126
GHSA-mhhp-hxcr-939w
NVD
CVE.org
EPSS
Vulnrichment
VulDB
Exploit-DB