/

CVE-2026-104991

Severity:

HIGH RISK

(7.1)

Broken Access Control (CWE-862) in Phproject REST API

CVE-2026-104991

Deferred

Vulnerability type

Category:

Broken Object-Level Authorization

CWE:

CWE-862

Impact:

Unauthorized disclosure and modification of restricted issue data

Severity:

HIGH RISK

(7.1)

CVSS version:

3.1

Catch this CVE while code is being written

Detect vulnerable code directly in pull requests, so CVEs are fixed before merge.

Summary

Phproject's REST API issue endpoints may fail to enforce object-level authorization before returning restricted issue data or accepting comments. An authenticated user with a valid API key could read protected issue content and comments, including email addresses, or post comments to issues outside their permitted access.

Affected context

The vulnerability occurs in Phproject deployments before 1.8.7 when the REST API endpoints for retrieving issues, reading comments, or posting comments do not invoke the application's access-control routine. The risk depends on the API being reachable by a user who possesses a valid API key and on restricted issues being available through the affected endpoints.

Exploit preconditions

  • Attack surface: REST API issue endpoints, including single issue retrieval and comment operations
  • Required access: A valid authenticated API key
  • Trigger point: Requests to retrieve restricted issues or comments, or to submit comments
  • Authorization condition: The target issue must be subject to access restrictions
  • Why exploitation is possible: Endpoint handling may omit the required object-level authorization check before reading or modifying the issue resource

Why this happens

The underlying flaw is a missing authorization check on individual resources. The affected endpoints do not consistently invoke the application's access-control routine before processing requests, allowing authentication to be treated as sufficient permission for actions that require authorization against a specific issue. This maps to CWE-862: Missing Authorization, with the object-level failure commonly described as broken object-level authorization.

Potential impact

  • Attackers may read restricted issue descriptions and comments
  • Sensitive owner or author email addresses could be disclosed
  • Unauthorized comments may be added to protected issues
  • Confidentiality and integrity of project discussions may be reduced
  • Exposed information could support further targeted attacks

General mitigation guidance

Mitigation generally focuses on enforcing authorization for every object-level API operation rather than relying on authentication alone.

Common defensive patterns include:

  • Applying centralized, deny-by-default authorization checks to read and write operations
  • Verifying the requesting principal's relationship to the specific issue before returning or modifying it
  • Ensuring all equivalent endpoint variants use the same authorization policy
  • Minimizing sensitive fields returned to clients, including unnecessary email addresses
  • Using least-privilege API keys with narrowly scoped permissions
  • Treating authorization failures consistently and avoiding resource existence leakage

How teams detect issues like this

Organizations can look for missing object-level authorization through:

  • Static analysis and code review checks for endpoint handlers that access issue records without calling a shared authorization function
  • Tests that compare access to authorized, unauthorized, and nonexistent issue identifiers
  • API integration tests covering read, comment retrieval, and comment creation paths
  • Monitoring for authenticated requests accessing many unrelated or restricted issue identifiers
  • Policy enforcement requiring explicit authorization checks before sensitive database reads or writes

Automated review tools may help identify endpoint paths where authentication checks are present but resource-level authorization is absent.

Sources

SourceLink
github.comgithub.com/Alanaktion/phproject/releases/tag/v1.8.7
github.comgithub.com/Alanaktion/phproject/security/advisories/GHSA-mpq9-v47x-3hw8
vulncheck.comvulncheck.com/advisories/phproject-missing-authorization-via-issues-rest-api

Frequently asked

questions

Yes, where the affected REST API is reachable and the attacker has a valid API key. Exploitation does not necessarily require administrative privileges.

The attacker needs authenticated API access and an issue identifier or endpoint path that can be queried. The key's permissions may be broader than intended if object-level checks are missing.

Enforce a centralized, deny-by-default authorization decision for the specific issue before every read, comment lookup, and comment creation operation.

Use resource-level authorization tests, review every API operation for authentication and authorization separately, apply least-privilege API scopes, and avoid returning unnecessary sensitive fields.

Find out what's already
exploitable in your codebase.