Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessAttacker prepares malicious cross-origin page with crafted form
-
DeliveryVictim visits attacker-controlled page
-
ExploitBrowser submits cross-origin POST with manipulated Content-Type containing 'application/json' substring
-
ExecutionUnanchored regex matches substring, Rodauth skips CSRF token validation
-
PersistVictim authenticated to attacker-controlled account
-
ImpactAttacker monitors victim session actions
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V3 - Web Frontend Security Anti-CSRF tokens, SameSite cookies
MITRE ATT&CK
1 technique across 1 tactic: Initial Access The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | The target application must have Rodauth's JSON feature explicitly enabled in its Rodauth configuration block (i.e., |
| Impact | The CVSS 4.0 score of 4.9 with vector AV:N/AC:L/AT:P/PR:N/UI:P/VC:N/VI:N/VA:N/SC:H/SI:N/SA:N is broadly consistent with the vulnerability's mechanics. The SC:H (subsequent-system confidentiality high) captures the most significant real-world impact: a login CSRF attack lets an attacker observe everything the victim does while authenticated to the attacker's controlled account, potentially exposing sensitive data entered by the victim. The UI:P and AT:P constraints are meaningful risk limiters - exploitation requires the victim to visit a malicious page and actively initiate a browser action, reducing automatable, opportunistic exploitation. No CISA KEV listing and no EPSS data are available, and no public exploit tooling has been identified, so the current threat posture is best characterized as theoretical-but-straightforward. The attack is not complex once the malicious page is constructed, and the absence of any privilege requirement (PR:N) means any unauthenticated user capable of social-engineering a victim has a viable path. Applications using Rodauth's JSON feature that handle sensitive user data should treat this as a meaningful priority despite the moderate score, since the impact to an individual victim can be severe even if mass exploitation is unlikely. |
| Exploit ScenarioDerived | An attacker constructs a malicious web page that auto-submits an HTML form POST to the target application's Rodauth login endpoint, setting the form's content type to 'application/x-www-form-urlencoded; application/json' via JavaScript or a crafted enctype attribute. The victim's browser submits the form cross-origin, and Rodauth's unanchored regex matches the 'application/json' substring in the content type, bypassing CSRF token validation and logging the victim into an attacker-controlled account. The attacker can then observe sensitive data entered by the victim while they believe they are operating under their own session. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Aug 29, 2026
CSRF protection bypass in Rodauth before 2.47.0 allows remote attackers to force victims into authenticated sessions under attacker-controlled accounts by exploiting an unanchored regular expression in the JSON feature. The JSON content type detection regex used a word-boundary anchor instead of a start-of-string anchor, enabling cross-origin form submissions with content types such as 'application/x-www-form-urlencoded; application/json' to be misclassified as JSON requests, which Rodauth treats as CSRF-exempt. No active exploitation has been confirmed in CISA KEV, and no public exploit tooling has been identified at time of analysis.
RemediationAI
Upgrade to Rodauth 2.47.0 or later, which anchors the JSON content type detection regex with \A to prevent substring matching attacks; the patching commit is at https://github.com/jeremyevans/rodauth/commit/3e0d7ab2d49a5733d1afcaaf1062b8a8258aa57a and the advisory is at https://github.com/jeremyevans/rodauth/security/advisories/GHSA-hh2f-xw94-5p79. As an immediate workaround prior to upgrading, operators can override the json_request_content_type_regexp configuration value in their Rodauth block to use the fixed pattern /\Aapplication\/(?:vnd\.api\+)?json\b/i, which corrects the matching behavior without requiring a gem upgrade and has no functional side effects on well-formed JSON API clients.
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: cpe:2.3:a:jeremyevans:rodauth:*:*:*:*:*:*:*:*) is a Ruby authentication framework that offers a JSON feature allowing API-style authentication without CSRF tokens, since JSON API requests are typically protected by CORS policy rather than CSRF tokens. To determine whether an incoming request is a JSON request (and therefore exempt from CSRF validation), the framework matches the Content-Type header against the regex \bapplication\/(?:vnd\.api\+)?json\b. The \b word-boundary anchor at the start of the pattern matches the substring 'application/json' anywhere in the header value, including within compound content types like 'application/x-www-form-urlencoded; application/json'. A browser can submit a cross-origin HTML form with such a content type, bypassing the Same-Origin Policy restriction that would normally prevent JavaScript from setting arbitrary Content-Type headers. Rodauth 2.47.0 fixes this by anchoring the regex with \A (Ruby's start-of-string anchor), requiring the content type to begin with 'application/json'. The root cause class is CWE-352 (Cross-Site Request Forgery).
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:P/PR:N/UI:P/VC:N/VI:N/VA:N/SC:H/SI:N/SA:N
User interaction required to visit attacker page (UI:R); scope changes as victim's session on target application is affected (S:C); limited confidentiality and integrity impact from forced login to wrong account.
Primary rating from Vendor (VulnCheck).
CVSS VectorVendor: VulnCheck
DescriptionCVE.org
Rodauth before 2.47.0 contains a cross-site request forgery protection bypass vulnerability in the JSON request content type validation. Attackers can craft cross-origin form posts with content types containing application/json substrings to bypass CSRF token validation and force victims to authenticate to attacker-controlled accounts.
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
Cross-Site Request Forgery exploits the automatic credential inclusion behavior of web browsers.
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
JWT access token indefinite renewal in Rodauth before 2.47.0 allows an attacker who possesses a valid access token to by
Open redirect in Rodauth before 2.47.0 enables post-authentication phishing by failing to reject protocol-relative retur
EUVD-2026-68125
GHSA-8928-x2p4-43mr
NVD
CVE.org
EPSS
Vulnrichment
VulDB
Exploit-DB