Summary
CVE-2026-59708 is a Missing Authorization vulnerability (CWE-862) in Ghostfolio, an open-source self-hosted wealth management web application built with Angular, NestJS, and Prisma. The flaw exists in the GET /api/v1/public/:accessId/portfolio endpoint, which fails to enforce granteeUserId filtering, allowing unauthenticated access to private portfolio data when a private access ID is known. The CVSS 4.0 score is 8.7 (HIGH) and CVSS 3.1 score is 7.5 (HIGH), reflecting a fully network-accessible, unauthenticated, high-confidentiality-impact vulnerability.
Technical details
- Root cause: The public portfolio controller queries access records using only the provided
accessId—this.accessService.access({ id: accessId })— without appending agranteeUserId: nullfilter. Ghostfolio distinguishes public shares (wheregranteeUserIdis NULL) from private shares (wheregranteeUserIdis a specific user ID). The missing filter means private access records pass through the public endpoint unchallenged. - Trigger conditions: An attacker must possess a private portfolio access ID. These IDs may be leaked, shared out-of-band, or otherwise obtained by a motivated attacker.
- Attack vector: An unauthenticated HTTP GET request to
/api/v1/public/<privateAccessId>/portfolioon any internet-exposed Ghostfolio instance. No credentials, session tokens, or prior access are required. - Impact: Full disclosure of the target portfolio, including asset holdings, quantities, purchase prices, and performance metrics — sensitive personal wealth data belonging to another user.
Affected software
- Ghostfolio versions up to and including 3.6.0
Severity
- CVSS 3.1 Base Score: 7.5 HIGH
- Vector:
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N
Mitigation and recommended actions
- Patch: Update to Ghostfolio 3.20.0 or later. Version 3.20.0 (released July 4, 2026) explicitly hardens the public portfolio sharing endpoint by restricting it to public access records only, closing the missing authorization gap.
- If immediate patching is not possible: Disable portfolio sharing features within Ghostfolio settings, or apply network-level controls (firewall rules, reverse-proxy authentication) to restrict access to the
/api/v1/public/API path until the instance can be upgraded.
IONIX Status
The IONIX research team is tracking ongoing exploitation attempts and recommends immediate patching. Potentially affected assets are outlined in this post.

