Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
ReconEnumerate victim's JWT sub or jti claim values
-
DeliveryForge JWT payload with victim's claims, sign with arbitrary key
-
ExploitSubmit forged token to application logout endpoint
-
InstallGuardian.revoke/3 calls peek/1, skipping signature verification
-
C2Unverified claims forwarded to token store revoke callback
-
ExecuteVictim's active session record deleted from persistent store
-
ImpactVictim forced to re-authenticate on next request
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A04:2025 - Cryptographic Failures
ASVS 5.0
V11 - Cryptography Signature verification
|
| Exploitation Conditions | Exploitation requires three concurrent conditions: (1) the application runs Guardian 1.0.0-2.4.0 with a persistent, claim-keyed token store - any token module whose revoke callback mutates state keyed by jti or sub, such as GuardianDb; (2) the application exposes an endpoint that accepts a caller-supplied token and passes it to Guardian.revoke/3, which is the standard logout/session-revocation pattern; and (3) the attacker can determine the victim's JWT sub (user identifier) or jti (token identifier) - through enumeration, prior token exposure, or public profile data. Applications that do not persist revocation state (stateless JWT validation only) are not vulnerable because the revoke callback has no durable side effect to exploit. No authentication is required; exploitation is entirely unauthenticated and does not grant access to the victim's account - the impact is limited to forced session termination. |
| Impact | The CVSS 4.0 base score of 8.2 with vector AV:N/AC:L/AT:P/PR:N/UI:N/VC:N/VI:N/VA:H correctly characterizes this as a high-availability-impact, network-accessible flaw requiring no privileges or user interaction. The AT:P (partial attack requirements) modifier acknowledges a real prerequisite: the attacker must know or enumerate the victim's JWT claim values (sub, jti); jti is typically a UUID and is difficult to guess without prior token exposure, while sub is often a user ID or email that may be enumerable from public surfaces. Impact is strictly limited to availability - forcible session expiry - with no confidentiality or integrity compromise; the attacker cannot impersonate the victim or read session content. No CISA KEV listing exists and no public POC code has been identified, meaning exploitation remains theoretical at this time. However, the attack is mechanically trivial for any attacker who has obtained claim values through prior reconnaissance, intercepted JWTs, or enumerable sub values. Organizations using GuardianDb or equivalent persistent stores should treat this as an urgent upgrade given the complete lack of required privileges. |
| Exploit ScenarioDerived | An attacker who knows or infers a target user's JWT sub claim (for example, by knowing their account email or user ID from a public profile or prior data exposure) constructs a forged JWT payload containing that sub and an arbitrary jti, signs it with a self-generated key, and submits it to the application's standard logout endpoint. The endpoint calls Guardian.revoke/3 with the forged token; peek/1 extracts the attacker-controlled claims without signature verification, and those claims are forwarded to the GuardianDb revocation callback, which deletes the victim's active session record. On their next authenticated request the victim receives an authorization error and is forced to re-authenticate, constituting a repeatable, targeted session-eviction denial-of-service. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Aug 01, 2026
Session revocation denial-of-service in ueberauth Guardian (Elixir) allows an unauthenticated network attacker to forcibly terminate any user's active session by submitting a cryptographically forged JWT to a logout endpoint. Guardian.revoke/3 extracted claims via peek/1 - which only base64-decodes the JWT without verifying the signature - and passed those unverified claims directly to the token store's revocation callback, enabling a forged token carrying a victim's jti or sub values to evict a legitimate session. The vulnerability spans all production releases 1.0.0 through pre-2.4.1; no public exploit or CISA KEV listing exists at time of analysis, but the attack requires only knowledge of a victim's identifying JWT claims.
RemediationAI
Upgrade to Guardian 2.4.1 or later; this version replaces the peek/1 call in revoke/3 with decode_token/3, which verifies the token signature before any revocation callback is invoked. Claim validation (including expiry) is intentionally still skipped in the patched code, preserving the ability to revoke already-expired tokens. The fix is confirmed in commit 2bd7a8c29770d423d855c0a4965caa6c3e486901 (https://github.com/ueberauth/guardian/commit/2bd7a8c29770d423d855c0a4965caa6c3e486901) and documented in GHSA-7975-hp3r-5qhv. If an immediate upgrade is not feasible, add an explicit signature verification step in your application's logout controller: call Guardian.decode_and_verify/3 on the incoming token before forwarding it to Guardian.revoke/3, and reject any token that fails verification. The trade-off of this workaround is that legitimately expired tokens will also fail decode_and_verify and will need a separate code path to remain revocable; applications that do not need to explicitly revoke expired tokens can accept this trade-off without impact.
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
The root cause is CWE-347 (Improper Verification of Cryptographic Signature) in the Guardian Elixir JWT authentication library (cpe:2.3:a:ueberauth:guardian). Guardian.revoke/3 in lib/guardian.ex used peek/1 to extract claims from the caller-supplied token; peek/1 merely base64-decodes the JWT header and payload without performing any HMAC or asymmetric signature verification. The sibling state-mutating operations refresh/2 and exchange/4 both correctly call decode_and_verify before acting on claims, making revoke/3 the sole code path that operated on unverified claim data. In deployments using a persistent, claim-keyed token store such as GuardianDb, passing unverified claims to the revoke callback triggers a real database write - deleting the victim's session record - because the store keys revocation state on jti or sub values that the attacker fully controls in the forged JWT payload.
Know when Guardian 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:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N
Network-accessible with no required privileges or interaction; sole impact is availability (forced session revocation); AC:L because the forging mechanism is technically trivial once claim values are known.
Primary rating from Vendor (EEF).
CVSS VectorVendor: EEF
DescriptionCVE.org
Improper Verification of Cryptographic Signature in ueberauth guardian allows an unauthenticated attacker to revoke a victim's session with a forged token.
Guardian.revoke/3 in lib/guardian.ex decodes the supplied token with peek/1, which performs no signature verification (it only base64-decodes the JWT header and payload). The resulting unverified claims are forwarded directly to the configured token module's revoke callback and the implementation's on_revoke callback, a state-mutating sink. The sibling operations refresh/2 and exchange/4 both call decode_and_verify first, so the signature is checked before anything acts on the claims; revoke/3 is the only state-mutating path that acts on claims without verifying the signature.
An attacker who knows or guesses a victim's identifying claim values (jti, sub) can forge a JWT carrying those claims, sign it with an arbitrary key, and submit it to any endpoint that funnels a caller-supplied token into Guardian.revoke/3 (the standard logout / session-revocation pattern). When the token module mutates state keyed by the claims (whitelist deletion or blacklist insertion, for example a GuardianDb-style store), the victim's legitimate session is evicted. This is an unauthenticated session-revocation denial of service; the attacker never needs the signing secret.
This issue affects guardian: from 1.0.0 before 2.4.1.
Executive ViewAI
ueberauth Guardian, the authentication library used in Elixir web applications, contains a session termination vulnerability that allows attackers to forcibly log out any active user without credentials. This directly compromises application availability and user experience, as attackers can disrupt sessions for any user in affected deployments. Organizations running Guardian versions 1.0.0 through 2.4.0 face immediate risk to business operations and customer trust.
Apply vendor patch.
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
Denial of Service attacks render applications or systems unavailable by overwhelming resources or triggering failure conditions.
OS command injection in Guardian language-system lets unauthenticated remote attackers run arbitrary shell commands by i
Remote code execution in Guardian language-system allows unauthenticated attackers to run arbitrary OS commands by injec
Unauthenticated SQL injection in Guardian Language System lets remote attackers manipulate the backend database by injec
Error-based SQL injection in Guardian Language-System allows a network-accessible authenticated attacker to extract the
SQL injection in Guardian Language-System's designer.php (line 124) allows attackers to extract, modify, or destroy the
Error-based SQL injection in Guardian language-system's subtitles.php exposes full database contents to low-privileged a
Error-based SQL injection in Guardian Language-System exposes the full database to low-privileged authenticated attacker
Error-based SQL injection in Guardian language-system's text_file.php exposes the full database to extraction via a triv
SQL injection in Guardian language-system's media.php endpoint allows low-privilege authenticated attackers to extract t
Nozomi Networks OS before 19.0.4 allows /#/network?tab=network_node_list.html CSV Injection. Rated high severity (CVSS 7
Nozomi Guardian before 19.0.4 allows attackers to achieve stored XSS (in the web front end) by leveraging the ability to
A SQL Injection vulnerability in Nozomi Networks Guardian and CMC, due to improper input validation in certain fields us
EUVD-2026-51914
NVD
CVE.org
EPSS
Vulnrichment
GitHub
VulDB
Exploit-DB