Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessRetrieve server RSA public key from JWKS endpoint
-
DeliveryCraft JWE containing plain JSON authorization payload using RSA-OAEP
-
ExploitSubmit JWE as 'request' parameter to /authorize endpoint
-
ExecutionServer decrypts JWE, skips nested signature validation
-
ImpactInjected unsigned authorization parameters accepted as trusted
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A04:2025 - Cryptographic Failures
ASVS 5.0
V11 - Cryptography Signature verification
|
| Exploitation Conditions | Exploitation requires two conditions to be simultaneously true: the target Janssen deployment must accept JWE-wrapped JAR request objects at its OIDC authorization endpoint (this is a protocol feature, not the default for all deployments - verify whether the server is configured to accept the 'request' or 'request_uri' parameter with JWE content), and the attacker must be able to construct a syntactically valid JWE token encrypted to the server's RSA public key (typically obtainable from the server's JWKS endpoint at no privilege). The forceSignedRequestObject=true bypass specifically affects deployments that believe this flag enforces signed request object integrity. Limiting factors include: the attacker cannot trivially forge JWE without the server's public key (though public JWKS endpoints eliminate this barrier), JWE request object support may not be enabled by default, and the practical impact is confined to manipulation of authorization request parameters - not direct credential theft or full authentication bypass. The CVSS PR:N is consistent with the authorization endpoint being publicly accessible. |
| Impact | The CVSS 3.1 base score of 5.3 (Medium) with vector AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:N captures a network-reachable, unauthenticated, zero-complexity attack surface - a combination that is concerning for an IAM platform where authorization integrity is foundational. However, the integrity impact is rated Low, and there is no confidentiality or availability impact, reflecting the bounded consequence of parameter manipulation rather than authentication bypass. No EPSS data was provided, so probabilistic exploitation likelihood cannot be quantified from this dataset. The vulnerability is not in CISA KEV, and no public proof-of-concept exploit code has been identified, suggesting it has not seen mass exploitation. Real-world risk is further constrained by deployment conditions: the attacker must be able to construct a JWE encrypted to the server's public key (the JWKS endpoint typically makes this feasible), and the deployment must accept JAR-style JWE request objects (not universally enabled). Organizations with forceSignedRequestObject=true who believed they had a stronger security posture are the primary risk group, as that configuration was specifically bypassable. Overall this is a genuine but targeted-risk finding rather than a mass-exploitation priority. |
| Exploit ScenarioDerived | An unauthenticated attacker retrieves the Janssen server's RSA public key from its JWKS endpoint, encrypts a crafted plain JSON authorization request payload using RSA-OAEP into a valid JWE token, and submits it to the /authorize endpoint as a request object parameter. The server decrypts the JWE, finds no nested signed JWT but proceeds due to the null-check gap, and processes the attacker-supplied authorization parameters without signature verification - enabling manipulation of claims such as redirect_uri, scope, or client_id. No public proof-of-concept code has been identified at time of analysis. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Jul 16, 2026
Signature bypass in Janssen jans-auth-server's OIDC authorization request object processing allows unauthenticated remote attackers to submit JWE-wrapped authorization requests containing unsigned plain JSON payloads, circumventing the integrity guarantee that JAR (RFC 9101) is designed to enforce. Two distinct code defects enable the bypass: the server silently skips nested JWS validation when getSignedJWTPayload() returns null, and the forceSignedRequestObject enforcement fails to reject null-mapped algorithm identifiers such as RSA-OAEP (an encryption algorithm, not a signature algorithm). No public exploit code has been identified and the vulnerability is not listed in CISA KEV; it is fixed in version 2.0.0.
RemediationAI
Upgrade jans-auth-server to version 2.0.0 or later, which is confirmed as the fix release at https://github.com/JanssenProject/jans/releases/tag/v2.0.0 and implements proper nested JWS validation for JWE request objects alongside corrected forceSignedRequestObject enforcement. The upstream fix is in PR #13438 (https://github.com/JanssenProject/jans/pull/13438) and commit 0cdd214870ee30eb2186261f21c85b9e9fc63b5c. If immediate upgrade is not feasible, consider disabling JWE-wrapped JAR request object support at the server or network boundary if the application does not require it - this eliminates the vulnerable code path entirely but will break any clients relying on encrypted request objects. Additionally, if forceSignedRequestObject=true is a compliance requirement, treating it as a control until patched may create a false sense of security; network-layer restrictions on the /authorize endpoint to known client IPs can reduce exposure. Each compensating control trades interoperability against attack surface.
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
jans-auth-server implements OpenID Connect JWT-Secured Authorization Requests (JAR, RFC 9101), which requires authorization request objects to be signed JWTs. JWE (JSON Web Encryption) is legitimately used to wrap a signed JWT (JWS) as a nested token, providing both encryption and integrity. The first defect is in JwtAuthorizationRequest: when a JWE payload does not contain a nested signed JWT, getSignedJWTPayload() returns null and the code path that calls validateSignature() is skipped entirely, accepting the plain JSON payload as if it were validated. The second defect is in AuthzRequestService.processRequestObject(): when forceSignedRequestObject=true, the enforcement check calls SignatureAlgorithm.fromString('RSA-OAEP') which returns null (because RSA-OAEP is a key-encryption algorithm, not a signature algorithm), and the original code only rejected SignatureAlgorithm.NONE - not null - allowing the check to pass silently. CWE-347 (Improper Verification of Cryptographic Signature) is the root cause class. The fix in PR #13438 adds explicit isJws/isJwe type tracking, throws InvalidJwtException when no nested JWS is present in a JWE, and extends the forceSignedRequestObject check to reject both NONE and null algorithm values. The affected product is identified by CPE cpe:2.3:a:janssenproject:jans:*:*:*:*:*:*:*:* for all versions prior to 2.0.0.
Know when Jans 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
AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:N
OIDC /authorize endpoint is publicly reachable (AV:N, PR:N); server JWKS is public making JWE construction low complexity (AC:L); impact is limited to authorization parameter integrity manipulation with no confidentiality or availability effect.
Primary rating from Vendor (GitHub_M).
CVSS VectorVendor: GitHub_M
Lifecycle Timeline
1DescriptionCVE.org
The Janssen Project is an open-source identity and access management (IAM) platform. Prior to 2.0.0, jans-auth-server accepts unsigned JWE request objects because JwtAuthorizationRequest skips inner signature validation when jwe.getSignedJWTPayload() returns null, and AuthzRequestService.processRequestObject() does not reject the unrecognized RSA-OAEP algorithm when forceSignedRequestObject=true. This issue is fixed in version 2.0.0.
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-44969
NVD
CVE.org
EPSS
Vulnrichment
GitHub
Exploit-DB