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
3DescriptionCVE.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.
AnalysisAI
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.
Technical ContextAI
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.
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.
More in Jwt Attack
View allWhy is Microsoft republishing a CVE from 2013? We are republishing CVE-2013-3900 in the Security Update Guide to update
Authentication bypass in SimpleHelp 5.5.15 and prior (plus 6.0 pre-release builds) allows remote unauthenticated attacke
Authentication bypass in Fortinet FortiOS, FortiProxy, and FortiSwitchManager allows unauthenticated remote attackers to
ruby-saml provides security assertion markup language (SAML) single sign-on (SSO) for Ruby. Rated critical severity (CVS
ruby-saml provides security assertion markup language (SAML) single sign-on (SSO) for Ruby. Rated critical severity (CVS
The package jsrsasign before 10.5.25 are vulnerable to Improper Verification of Cryptographic Signature when JWS or JWT
A library injection vulnerability exists in Microsoft Teams (work or school) 24046.2813.2770.1094 for macOS. Rated criti
A library injection vulnerability exists in the WebView.app helper app of Microsoft Teams (work or school) 24046.2813.27
A library injection vulnerability exists in the com.microsoft.teams2.modulehost.app helper app of Microsoft Teams (work
The Ruby SAML library is for implementing the client side of a SAML authorization. Rated critical severity (CVSS 9.8), t
cosign is a container signing and verification utility. Rated critical severity (CVSS 9.8), this vulnerability is remote
Biscuit is an authentication and authorization token for microservices architectures. Rated critical severity (CVSS 9.8)
Same technique Information Disclosure
View allShare
External POC / Exploit Code
Leaving vuln.today
EUVD-2026-44969