CVE-2025-62243: Liferay Publications is vulnerable to Incorrect Authorization
N/A
Basic Information
Technical Details
| Package Name | Ecosystem | Vulnerable Versions | First Patched Version |
|---|---|---|---|
| com.liferay:com.liferay.change.tracking.web | maven | < 2.0.122 | 2.0.122 |
Vulnerability Intelligence
Miggo AI
Root Cause Analysis
The vulnerability is an Insecure Direct Object Reference (IDOR) within the Liferay Publications feature, affecting comment management. The root cause is a failure to enforce proper authorization checks in the backend MVCResourceCommand classes that handle viewing, updating, and deleting comments.
-
Viewing Comments (
GetCTCommentsMVCResourceCommand): ThegetCTCommentsJSONObjectmethod fetched comments using actCollectionIdfrom the request without checking if the user hadVIEWpermissions on that collection. This allowed any authenticated user to read comments from any publication. -
Editing Comments (
UpdateCTCommentMVCResourceCommand): ThedoServeResourcemethod allowed a user to update a comment's content based on itsctCommentId. It did not verify that the user making the request was the original author of the comment, allowing unauthorized modification of any comment. -
Deleting Comments (
DeleteCTCommentMVCResourceCommand): Similarly, thedoServeResourcemethod for deleting comments only required actCommentId. It lacked a check to ensure the request came from the comment's author or an administrator, allowing any authenticated user to delete any comment.
The patches fix these issues by adding the necessary permission checks. For viewing, it now checks for VIEW permission on the collection. For editing and deleting, it verifies that the user's ID matches the comment's author ID or that the user has administrative privileges. The identified vulnerable functions are the doServeResource methods in these command classes, as they are the entry points for the vulnerable operations.
Vulnerable functions
com.liferay.change.tracking.web.internal.portlet.action.GetCTCommentsMVCResourceCommand.doServeResourcemodules/apps/change-tracking/change-tracking-web/src/main/java/com/liferay/change/tracking/web/internal/portlet/action/GetCTCommentsMVCResourceCommand.java
com.liferay.change.tracking.web.internal.portlet.action.GetCTCommentsMVCResourceCommand.getCTCommentsJSONObjectmodules/apps/change-tracking/change-tracking-web/src/main/java/com/liferay/change/tracking/web/internal/portlet/action/GetCTCommentsMVCResourceCommand.java
com.liferay.change.tracking.web.internal.portlet.action.UpdateCTCommentMVCResourceCommand.doServeResourcemodules/apps/change-tracking/change-tracking-web/src/main/java/com/liferay/change/tracking/web/internal/portlet/action/UpdateCTCommentMVCResourceCommand.java
com.liferay.change.tracking.web.internal.portlet.action.DeleteCTCommentMVCResourceCommand.doServeResourcemodules/apps/change-tracking/change-tracking-web/src/main/java/com/liferay/change/tracking/web/internal/portlet/action/DeleteCTCommentMVCResourceCommand.java