CVE-2026-55735
PoC moderateUnauthenticated session revocation via forged JWT in ueberauth Guardian
CVE-2026-55735 is an improper signature-verification flaw (CWE-347) in Guardian, the ueberauth JWT authentication library for Elixir/Phoenix: Guardian.revoke/3 in lib/guardian.ex decodes the caller-supplied token with peek/1, which only base64-decodes the JWT header and payload without checking the signature, and passes the unverified claims straight to the token module's revoke and on_revoke callbacks, which mutate state. Unlike the sibling operations refresh/2 and exchange/4, which call decode_and_verify first, revoke/3 is the only state-mutating path that acts on claims without verifying the signature. An unauthenticated attacker who knows or guesses a victim's identifying claim values (jti, sub) can forge a JWT carrying those claims, sign it with any key, and submit it to any endpoint that feeds caller-supplied tokens into Guardian.revoke/3 (the standard logout/session-revocation pattern), causing a state-mutating token store such as a GuardianDb-style whitelist/blacklist to delete or blacklist the victim's legitimate session. The attacker gains an unauthenticated denial of that victim's session (forced eviction) without ever needing the signing secret; confidentiality and integrity are unaffected, consistent with the CVSS 4.0 score of 8.2 (high) with high availability impact only. Applications running Guardian versions from 1.0.0 before 2.4.1 are affected, and practically only those that expose endpoints funneling caller-supplied tokens into revoke/3 and use a stateful token store keyed on claims; no in-the-wild exploitation is currently known (not in CISA KEV), EPSS puts the 30-day exploitation probability at 0.3% (27th percentile), and one public reference (the GitHub security advisory GHSA-7975-hp3r-5qhv) is available.
What to do: Upgrade guardian to 2.4.1 or later. Until upgraded, audit any endpoint that passes caller-supplied tokens into Guardian.revoke/3 (typically logout/revoke routes), verify token signatures before revocation (e.g., run Guardian's decode_and_verify on the token first) or restrict those endpoints to authenticated callers. Prioritize applications using a state-mutating token store (GuardianDb-style whitelist/blacklist), since stateless configurations have no stored session state for the attacker to evict.
| ueberauth guardian | >= 1.0.0, < 2.4.1 |
Order-of-magnitude estimate by the model from install counts, market share and public scan data it knows; verify before quoting.
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.
- Vendors
- ueberauth
- Products
- guardian
- Weakness
- CWE-347
- Vector
- 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/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X
In the news0 stories
No ingested article mentions this CVE yet.