HIGH 7.5

CVE-2026-59708: Ghostfolio Private Portfolio Authorization Bypass—Financial Data Exposure

Ghostfolio's public portfolio sharing feature contains an authentication bypass vulnerability that allows anyone with a private access ID to retrieve complete portfolio details without logging in. The flaw lies in insufficient validation of user permissions when accessing the /api/v1/public/:accessId/portfolio endpoint. An attacker who obtains a private access ID—whether through social engineering, data leaks, or enumeration—can view sensitive investment information including specific holdings, quantities purchased, entry prices, and performance metrics that the portfolio owner intended to keep private. The vulnerability requires network access but no special privileges or user interaction, making it straightforward to exploit.

Source data · NVD / CISA · public domain

CVSS
3.1 · 7.5 HIGH · CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N
Weaknesses (CWE)
CWE-862
Affected products
0 configuration(s)
Published / Modified
2026-07-07 / 2026-07-10

NVD description (verbatim)

The GET /api/v1/public/:accessId/portfolio endpoint in ghostfolio accepts private access IDs without validating granteeUserId filtering, allowing unauthenticated access to full portfolio data. Attackers with a private access ID can retrieve sensitive portfolio information including holdings, quantities, buy prices, and performance metrics without authentication.

4 reference(s) · View on NVD →

SEC.co analysis · AI-assisted, reviewed against source

Technical summary

CVE-2026-59708 is an authorization flaw in Ghostfolio's public portfolio API endpoint. The vulnerable endpoint (/api/v1/public/:accessId/portfolio) accepts private access IDs but fails to properly enforce granteeUserId filtering, resulting in improper access control (CWE-862). The API returns full portfolio data—holdings, quantities, cost basis, and performance metrics—without validating that the requester has legitimate access rights. The vulnerability is unauthenticated, network-accessible, and requires only knowledge of a valid private access ID. CVSS 3.1 score of 7.5 (HIGH) reflects the high confidentiality impact from unauthorized disclosure of financial data, with no integrity or availability compromise.

Business impact

This vulnerability exposes users' investment strategies and financial positions to unauthorized disclosure. Portfolio owners who share private access IDs with trusted parties risk exposure if those IDs are compromised, leaked, or guessed. For wealth management firms, investment advisors, or financial platforms using Ghostfolio, the breach could violate client confidentiality, trigger regulatory reporting obligations (SOX, HIPAA, GDPR, or similar), and erode client trust. The reputational damage from unauthorized financial data exposure can be substantial, particularly if high-net-worth portfolios are affected. Affected organizations may face legal liability, incident response costs, and notification obligations depending on jurisdiction and data sensitivity.

Affected systems

Ghostfolio instances are affected by this vulnerability. The specific affected versions are not detailed in the provided advisory; organizations running Ghostfolio should check the vendor's official security advisory or release notes to determine which versions are vulnerable and which patches resolve the issue. This vulnerability affects deployments where the public portfolio sharing feature is enabled and private access IDs are in circulation.

Exploitability

Exploitation is straightforward and requires minimal effort. An attacker needs only a valid private access ID and the ability to send an HTTP GET request to the vulnerable endpoint. No authentication, special privileges, or user interaction is needed. Access IDs may be obtained through social engineering, accidental disclosure (e.g., shared in chat or email), URL enumeration, or data breaches. The attack surface is broad because anyone on the internet with network access to the Ghostfolio instance can attempt exploitation. The lack of rate limiting or additional validation mechanisms makes large-scale reconnaissance feasible.

Remediation

The vendor should implement proper authorization validation that ensures the granteeUserId in the access control list matches the requesting user before returning portfolio data. Immediate mitigations include: verifying that the endpoint properly enforces access restrictions, reviewing access logs for unauthorized API calls, rotating or revoking private access IDs if compromise is suspected, and restricting portfolio sharing to trusted recipients only. Apply the vendor's security patch as soon as it is available and tested. Organizations should also audit who has received private access IDs and consider implementing additional controls such as IP whitelisting or time-limited access tokens.

Patch guidance

Consult the Ghostfolio vendor advisory for specific patched versions and deployment instructions. After patching, verify that the authorization checks are functioning correctly by testing access to a private portfolio with an unauthorized access ID—the system should deny the request. Update all instances of Ghostfolio, including development, staging, and production environments. Test the patch in a non-production environment first to ensure compatibility with your deployment. If running Ghostfolio as a service (e.g., in Docker or Kubernetes), ensure container images and orchestration configs are updated to pull the patched version.

Detection guidance

Monitor API access logs for GET requests to /api/v1/public/:accessId/portfolio endpoints with unusual access patterns: requests from unexpected IP addresses, high request volumes to the same endpoint, sequential accessId enumeration attempts, or requests outside normal business hours. Set up alerting for unauthorized access attempts or 200-status responses to portfolio endpoints. Review recent access logs to identify if the vulnerability was exploited before patching. Implement Web Application Firewall (WAF) rules to rate-limit or block repeated requests to the endpoint if they appear suspicious. Consider enabling API gateway logging and correlation with user activity to detect compromised access IDs.

Why prioritize this

This vulnerability warrants high-priority patching because it enables direct, unauthenticated access to sensitive financial data with minimal attacker effort. The high CVSS score (7.5) reflects the confidentiality impact of portfolio disclosure. Financial data is a target for competitive intelligence gathering, blackmail, and market manipulation. The ease of exploitation and broad attack surface mean that active exploitation is likely if the vulnerability becomes public. Organizations managing investment portfolios or providing portfolio analytics should treat this as a critical security issue.

Risk score, explained

The CVSS 3.1 score of 7.5 (HIGH) is calculated from: Attack Vector: Network (AV:N)—the vulnerability is exploitable over the network without physical access; Attack Complexity: Low (AC:L)—no special conditions are required; Privileges Required: None (PR:N)—unauthenticated attackers can exploit it; User Interaction: None (UI:N)—no user action is needed; Scope: Unchanged (S:U)—the vulnerability does not affect resources outside the affected portfolio; Confidentiality Impact: High (C:H)—sensitive financial data is disclosed; Integrity Impact: None (I:N)—no data modification occurs; Availability Impact: None (A:N)—no service disruption results. The high confidentiality impact combined with low barriers to exploitation drives the HIGH severity rating.

Frequently asked questions

How do I know if my Ghostfolio instance is vulnerable?

Check your Ghostfolio version against the vendor's security advisory. If you are running an affected version, assume your instance is vulnerable. Verify by testing: attempt to access a private portfolio endpoint using a private access ID from an unauthenticated context (e.g., an incognito browser window or without logging in). If you can view portfolio data, the vulnerability is present.

What should I do if I think my private access IDs have been compromised?

Immediately revoke or rotate the affected private access IDs in Ghostfolio's settings. Review access logs for unauthorized requests to the portfolio endpoint. If sensitive portfolios were exposed, follow your incident response plan and consider notifying affected users. Apply the security patch as soon as it is available.

Can this vulnerability lead to data modification or service outages?

No. This vulnerability is limited to unauthorized read access (confidentiality impact). It does not allow attackers to modify portfolio data, delete holdings, or disrupt the service. However, disclosure of financial information can have serious business consequences.

Is there a workaround if I cannot patch immediately?

Temporary mitigations include: disabling public portfolio sharing until patched, rotating all active private access IDs and limiting their distribution, implementing network-level restrictions (firewall rules or IP whitelisting), and monitoring API logs for suspicious access patterns. However, patching is the only reliable fix.

This analysis is based on the CVE-2026-59708 description and publicly available CVSS information as of July 2026. Specific affected versions, patch version numbers, and detailed vendor guidance should be verified directly with the Ghostfolio vendor's official security advisory. Organizations are responsible for testing patches in their environments before production deployment. SEC.co does not provide legal advice; consult your compliance and legal teams regarding regulatory notification obligations related to financial data exposure. No exploit code or weaponized proof-of-concept is provided; this analysis is for defensive security purposes only. Source: NVD (public-domain), retrieved 2026-08-16. Analysis generated by SEC.co (claude-haiku-4-5).