Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessRetrieve relying party public encryption key from JWKS URI
-
DeliveryCraft unsigned JWE encoding arbitrary sub/iss/aud claims
-
ExploitTrigger victim authentication flow at relying party
-
ExecutionInject forged JWE via browser front-channel JARM or token response
-
Persistoidcc decrypts token and accepts unsigned claims as validated
-
ImpactAttacker authenticated as impersonated user
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 target application runs oidcc versions 3.2.0-beta.1 through before 3.9.0; (2) the OpenID Provider or relying party configuration enables encrypted ID tokens (id_token_encryption_alg_values_supported is set, e.g., to RSA-OAEP) or JARM is in use for authorization responses; and (3) the attacker can obtain the relying party's public encryption key, which in standard deployments is publicly accessible via the JWKS URI. User interaction is required: the victim must initiate a legitimate authentication flow through the relying party, as the forged token must be delivered through the browser front-channel callback. Exploitation is NOT possible against the UserInfo endpoint (explicitly excluded by the OpenID Connect specification and confirmed in the vendor advisory), against deployments using signed-only ID tokens (no encryption configured), or against oidcc versions before 3.2.0-beta.1 or 3.9.0 and later. |
| Impact | The CVSS 4.0 score of 7.6 (AV:N/AC:L/AT:P/PR:N/UI:P/VC:H/VI:H/VA:N) captures a network-reachable, unauthenticated flaw with high confidentiality and integrity impact, tempered by two limiting factors: AT:P (specific attack prerequisites - encrypted token support must be configured) and UI:P (victim must initiate an authentication flow). In practice, the AT:P constraint is weaker than it appears: OpenID Connect relying parties routinely publish their JWKS endpoint publicly, meaning the encryption key an attacker needs is freely accessible in any standard deployment that supports ID token encryption. The UI:P constraint is also inherent to browser-based OAuth/OIDC flows and should not be treated as a meaningful barrier for targeted attacks. No EPSS score was provided in the input data; no CISA KEV listing is present, and no public POC was referenced, indicating no confirmed active exploitation at time of analysis. The impact is critical for any deployment using encrypted ID tokens or JARM (common in FAPI 2.0 and financial-grade API contexts, as suggested by the test fixtures referencing FAPI 2.0 client contexts), but deployments using signed-only ID token flows are entirely unaffected. The absence of a public exploit and the narrow deployment surface (Erlang/Elixir ecosystem, encrypted token feature enabled) suggest moderate real-world urgency, though the authentication bypass impact justifies priority patching where the feature is in use. |
| Exploit ScenarioDerived | An attacker retrieves the relying party application's public encryption key from its published JWKS endpoint, then constructs a JWE token containing fabricated claims (sub set to the target victim's user identifier, iss set to the legitimate provider's issuer URL, aud set to the relying party's client ID) without applying any nested signature. The attacker delivers this token through the browser front-channel authentication callback - for example, as a JARM-encoded authorization response - and oidcc, in vulnerable versions, decrypts the token and returns the unsigned claims as fully validated, granting the attacker a session as the impersonated user. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAI
Authentication bypass in oidcc (Erlang/Elixir OpenID Connect library) versions 3.2.0-beta.1 through before 3.9.0 allows unauthenticated attackers to impersonate arbitrary users by presenting a JWE-encrypted ID token or JARM response that wraps unsigned claims, which the library incorrectly accepted as fully validated. The relying party's public encryption key - typically published at a well-known JWKS endpoint - is all an attacker needs to forge tokens with arbitrary sub, iss, and aud values, bypassing provider signing-key possession entirely. No public exploit has been identified at time of analysis, and this CVE is not listed in CISA KEV; however, the impact for affected deployments using encrypted ID tokens or JARM is complete authentication bypass.
RemediationAI
Upgrade oidcc to version 3.9.0 or later, which incorporates the fix committed at https://github.com/erlef/oidcc/commit/5f62fbccdae8526ff62653b8901657a6c1400fd9 and detailed in the vendor advisory at https://github.com/erlef/oidcc/security/advisories/GHSA-533g-4vf3-xwrj. The patch adds rejection of #jose_jwe{} structures in verify_not_none_alg/1 with a signature_required error, and updates both int_validate_jwt/4 and validate_jarm/3 to propagate that error rather than returning success. If an immediate upgrade is not feasible, a compensating control is to disable encrypted ID token support at the provider or relying-party configuration level, reverting to signed-only ID tokens - note this may conflict with FAPI 2.0 compliance requirements or provider mandates for encryption, so assess the trade-off before applying. JARM support should likewise be disabled or restricted to signed responses only if the upgrade cannot be applied promptly.
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 affected library is oidcc by the Erlang Ecosystem Foundation (EEF), CPE cpe:2.3:a:erlef:oidcc:*:*:*:*:*:*:*:*, an OpenID Connect relying-party implementation for Erlang/Elixir applications. CWE-347 (Improper Verification of Cryptographic Signature) precisely describes the root cause: in oidcc_jwt_util:verify_decrypted_token/4, when the decrypted JWT payload was a bare JWE (encrypted-only) rather than a nested JWS, the code parsed the plaintext claims and returned them with no verifying key attached. oidcc_token:int_validate_jwt/4 then dispatched on the JOSE structure type (#jose_jwe{} vs #jose_jws{}) rather than on whether a signature had actually been verified, and returned success. The fix, visible in commit 5f62fbccdae8526ff62653b8901657a6c1400fd9, extends verify_not_none_alg/1 to match on #jose_jwe{} and return {error, signature_required}, and changes int_validate_jwt/4 to propagate that error instead of returning {ok, {Claims, none}}. OpenID Connect Core 1.0 section 2 mandates that encrypted ID tokens MUST be Nested JWTs (sign-then-encrypt); JARM processing rule 5 requires signature validation unconditionally. UserInfo responses are deliberately excluded from the fix because section 5.3.2 of the same specification explicitly permits them to be encrypted without signing.
Know when Oidcc 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:H/VI:H/VA:N/SC:N/SI:N/SA:N
Network-delivered via browser callback (AV:N); encrypted token support is non-default, mapping AT:P to AC:H; no authentication required (PR:N); victim must initiate the auth flow (UI:R); full account impersonation yields C:H/I:H with no availability impact.
Primary rating from Vendor (EEF).
CVSS VectorVendor: EEF
DescriptionCVE.org
Improper Verification of Cryptographic Signature vulnerability in erlef oidcc allows an unauthenticated attacker to impersonate an arbitrary user via an encrypted ID token or JARM response carrying no nested signature. OpenID Connect Core 1.0 section 2 requires that an encrypted ID token be signed then encrypted, with the result being a Nested JWT, and JARM processing rule 5 requires the client to check the signature unconditionally. oidcc instead accepted a JWE wrapping unsigned claims as fully validated, so anyone holding the relying party's public encryption key could mint a token with an arbitrary sub, iss, and aud without possessing the provider's signing key.
In oidcc_jwt_util:verify_decrypted_token/4, a decrypted payload that is not a signed JWS fell back to parsing the plaintext claims and returning them with no verifying key. oidcc_token:int_validate_jwt/4 then matched on the JOSE structure type rather than on whether a signature had been verified, and returned success. The JARM path in oidcc_token:validate_jarm/3 is reachable through the browser front channel. UserInfo responses are not affected, because OpenID Connect Core 1.0 section 5.3.2 permits them to be encrypted without also being signed.
This issue affects oidcc: from 3.2.0-beta.1 before 3.9.0.
Technical POC Analysis
CWE-347 (Improper Verification of Cryptographic Signature).
Full technical POC analysis - root cause, step-by-step exploitation and patch breakdown - is part of the Pro and Business plans.
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
Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.
EUVD-2026-68145
NVD
CVE.org
EPSS
Vulnrichment
GitHub
VulDB
Exploit-DB