Miggo Logo

CVE-2025-53003: Janssen Config API returns results without scope verification

8.2

CVSS Score
4.0

Basic Information

EPSS Score
0.16916%
Published
6/30/2025
Updated
6/30/2025
KEV Status
No
Technology
TechnologyJava

Technical Details

CVSS Vector
CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:H/VI:N/VA:N/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
Package NameEcosystemVulnerable VersionsFirst Patched Version
io.jans:jans-config-api-servermaven< 1.8.01.8.0

Vulnerability Intelligence
Miggo AIMiggo AI

Miggo AIRoot Cause Analysis

The vulnerability is an improper access control issue in the Janssen Config API. The root cause is located in the io.jans.configapi.util.AuthUtil.findMissingElements function, which is responsible for checking if a client's access token contains the required scopes to access a given API endpoint.

The flawed logic in findMissingElements considered a token with no scopes as valid for an endpoint that required scopes. Specifically, if the list of scopes from the token was empty, the function would incorrectly return that there were no 'missing' scopes, thus bypassing the authorization check. An attacker could exploit this by presenting a valid access token that was issued with no scopes, gaining unauthorized access to sensitive configuration data such as clients, users, and scripts.

The patch rectifies this by changing the logic in findMissingElements. The updated code now checks if the token's scope list is empty and, if so, returns the full list of required scopes as 'missing', correctly denying access.

The io.jans.configapi.security.service.OpenIdAuthorizationService.validateScope function is the higher-level method that initiates this entire validation process for an API resource. Therefore, it would appear in any runtime profile or stack trace when the vulnerability is triggered, as it is the gateway to the flawed authorization logic.

Vulnerable functions

Only Mi**o us*rs **n s** t*is s**tion

WAF Protection Rules

WAF Rule

### Imp**t _W**t kin* o* vuln*r**ility is it? W*o is imp**t**?_ T** *on*i**PI is *n int*rn*l s*rvi** *n* **n** s*oul* n*v*r ** *xpos** to t** int*rn*t. Wit* t**t s*i*, t*is is * s*rious vuln*r**ility t**t **s * l*r** int*rn*l sur**** *tt**k *r** t**t

Reasoning

T** vuln*r**ility is *n improp*r ****ss *ontrol issu* in t** J*nss*n *on*i* *PI. T** root **us* is lo**t** in t** `io.j*ns.*on*i**pi.util.*ut*Util.*in*Missin**l*m*nts` *un*tion, w*i** is r*sponsi*l* *or ****kin* i* * *li*nt's ****ss tok*n *ont*ins t*