Miggo Logo

CVE-2025-62256: Liferay Portal and DXP do not properly restrict access to OpenAPI

N/A

CVSS Score

Basic Information

EPSS Score
-
Published
10/23/2025
Updated
10/23/2025
KEV Status
No
Technology
TechnologyJava

Technical Details

CVSS Vector
-
Package NameEcosystemVulnerable VersionsFirst Patched Version
com.liferay:com.liferay.portal.security.auth.verifiermaven< 6.0.266.0.26

Vulnerability Intelligence
Miggo AIMiggo AI

Miggo AIRoot Cause Analysis

The vulnerability allows remote attackers to access the OpenAPI YAML file without proper authorization. The root cause of this issue lies in the improper configuration of the authentication filter, which failed to apply to all relevant request dispatch types, such as FORWARD.

The analysis of the provided patches reveals that the core of the vulnerability is in the com.liferay.portal.security.auth.verifier.internal.tracker.AuthVerifierFilterTracker._toDictionary method. Before the patch, this method would overwrite configuration properties if multiple properties had the same key. The fix applied in commit 27b51dbae35bd6e4b415fb33ecf14b2144b5038f corrects this behavior by accumulating values for the same key into a list. This is crucial for correctly setting up the AuthVerifierFilter for multiple dispatchers, as specified in the component's properties.

When this vulnerability is exploited, a crafted URL would likely cause the application server to forward the request to the OpenAPI endpoint. Due to the bug in _toDictionary, the authentication filter would not have been configured to intercept forwarded requests, thus allowing unauthorized access. Therefore, the _toDictionary function is the primary vulnerable function as its incorrect logic leads to the security misconfiguration.

Another related change in com.liferay.portal.vulcan.internal.template.servlet.RESTClientHttpRequest (commit bc6138ce1be22babbd90dc2190f4dbe91c039334) adds a CSRF token to internal REST calls. This appears to be a secondary fix to ensure that internal services can still function correctly after the primary security gap was closed, rather than being the source of the vulnerability itself.

Vulnerable functions

com.liferay.portal.security.auth.verifier.internal.tracker.AuthVerifierFilterTracker._toDictionary
modules/apps/portal-security/portal-security-auth-verifier/src/main/java/com/liferay/portal/security/auth/verifier/internal/tracker/AuthVerifierFilterTracker.java
The `_toDictionary` method was responsible for parsing filter configuration properties. The original implementation would overwrite properties with the same key. This was particularly problematic for the 'dispatcher' property of the authentication filter. The fix introduces logic to handle multiple values for the same key by creating a list of values. This ensures that the authentication filter is registered for all necessary dispatch types (e.g., REQUEST, FORWARD), preventing an authorization bypass when a request is forwarded to a protected resource like the OpenAPI YAML file.

WAF Protection Rules

WAF Rule

Li**r*y Port*l *.*.* t*rou** *.*.*.***, *n* Li**r*y *XP ****.Q*.* t*rou** ****.Q*.*, ****.Q*.* t*rou** ****.Q*.*, *.* ** t*rou** up**t* **, *n* ol**r unsupport** v*rsions *o*s not prop*rly r*stri*t ****ss to Op*n*PI in **rt*in *ir*umst*n**s, w*i** *l

Reasoning

T** vuln*r**ility *llows r*mot* *tt**k*rs to ****ss t** Op*n*PI Y*ML *il* wit*out prop*r *ut*oriz*tion. T** root **us* o* t*is issu* li*s in t** improp*r *on*i*ur*tion o* t** *ut**nti**tion *ilt*r, w*i** **il** to *pply to *ll r*l*v*nt r*qu*st *isp*t