Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessAuthenticate as member of any organization
-
DeliveryObtain or enumerate foreign organization's dashboardId
-
ExploitCall report.list tRPC endpoint with own projectId and foreign dashboardId
-
ExecutionMiddleware validates projectId membership and passes
-
PersistgetReportsByDashboardId queries by dashboardId alone
-
ImpactReceive all cross-organization dashboard reports
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V8 - Authorization Object-level authorization, IDOR prevention
|
| Exploitation Conditions | Exploitation requires an authenticated session with membership in at least one project within the target OpenPanel instance - the enforceAccess middleware must be satisfied, meaning anonymous access is not sufficient. The attacker must additionally know or enumerate a valid dashboardId belonging to a different organization on the same instance; if dashboardIds are random UUIDs this requires a secondary information disclosure or insider knowledge, while sequential numeric IDs would be trivially guessable. Exploitation is limited to multi-tenant OpenPanel deployments where multiple organizations coexist on a single instance - single-tenant deployments are not meaningfully exposed. No administrative privileges, special feature flags, or non-default configuration are required beyond basic authenticated membership. |
| Impact | The CVSS 4.0 vector (AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:N/VA:N/SC:N/SI:N/SA:N, score 7.1) accurately characterizes the risk profile: network-accessible, low complexity, requiring only a standard authenticated session, with high confidentiality impact and no integrity or availability consequences. No EPSS score was provided in the available intelligence, and the vulnerability is not listed in the CISA KEV catalog. No public proof-of-concept exploit has been identified. The practical risk is highest for multi-tenant OpenPanel deployments where multiple organizations share a single instance; single-tenant deployments face no meaningful cross-organization exposure. The prerequisite of knowing a foreign dashboardId is the primary limiting factor - if dashboardIds are non-guessable UUIDs, exploitation requires prior reconnaissance or a secondary information leak. The fix commit was targeted and the correct pattern already existed in the codebase, suggesting the vulnerability was a localized oversight with a well-understood remediation path. |
| Exploit ScenarioDerived | An attacker with a legitimate account in Organization A enumerates or obtains a dashboardId belonging to Organization B - through a shared public link, sequential ID guessing if IDs are numeric, or a prior information leak. The attacker calls the report.list tRPC endpoint, supplying their own valid projectId from Organization A to satisfy the middleware check and the foreign dashboardId from Organization B, and receives the full set of analytics reports from Organization B's dashboard with no error or audit trail distinguishing this call from a legitimate one. No public exploit code has been identified, but the attack requires only standard HTTP tooling and a valid session token. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Aug 21, 2026
Cross-organization report data exposure in OpenPanel allows any authenticated user to read all analytics reports belonging to another organization's dashboard by supplying a mismatched projectId and dashboardId pair to the report.list tRPC procedure. The enforceAccess middleware validated only project membership, not dashboard ownership, while the underlying getReportsByDashboardId query applied no project-scoping filter - enabling a classic IDOR across tenant boundaries. No public exploit has been identified and no CISA KEV listing exists, but the attack requires only a valid session and knowledge of a foreign dashboardId, making it low-friction in multi-tenant deployments.
RemediationAI
The upstream fix is available in commit 0a51b6805eed0b3da8376175acd5fa3d26819cb6 on the Openpanel-dev/openpanel repository (https://github.com/Openpanel-dev/openpanel/commit/0a51b6805eed0b3da8376175acd5fa3d26819cb6), which adds a getDashboardById(dashboardId, projectId) ownership check in the report.list procedure before returning any data, throwing a TRPCNotFoundError if the dashboard does not belong to the supplied project. The same commit also fixes analogous gaps in the share and notification routers. Operators should update to a release incorporating this commit; the GitHub security advisory at https://github.com/Openpanel-dev/openpanel/security/advisories/GHSA-3q95-vc6f-vc9v should be consulted for a confirmed patched release tag, as a specific release version number is not independently confirmed from available data. If immediate patching is not feasible, restricting the OpenPanel instance to a single organization (eliminating multi-tenancy) removes the cross-organization exposure vector entirely, though this may not be operationally viable. No other compensating controls are available that would address the root cause without code changes.
Affected VersionsENISA
Affects your stack
Find out whether the stacks and servers you run are on an affected version.
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
OpenPanel is an open-source product analytics platform whose API layer is built on tRPC. The vulnerable procedure, report.list in packages/trpc/src/routers/report.ts, accepted two caller-controlled parameters: projectId (routed through enforceAccess middleware to confirm organizational membership) and dashboardId (passed directly to getReportsByDashboardId in packages/db/src/services/reports.service.ts). The database query function selected reports filtered solely by dashboardId with no join or filter on projectId, meaning the authorization boundary enforced by the middleware was entirely bypassed at the data layer. CWE-639 (Authorization Bypass Through User-Controlled Key) is the precise root cause class: a trusted resource identifier (dashboardId) is accepted from an untrusted caller and used as the sole access control key without verifying ownership. A correctly scoped alternative, listReportsCore, already existed in the same service file and resolved the dashboard through getDashboardById(dashboardId, projectId) before returning reports, confirming this was a developer oversight rather than a missing capability.
Know when the next one hits your stack
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:N/VA:N/SC:N/SI:N/SA:N
Requires authenticated session (PR:L), network-accessible with no complexity (AV:N/AC:L), read-only data exposure with no scope change or integrity/availability impact (S:U/C:H/I:N/A:N).
Primary rating from Vendor (vulncheck).
CVSS VectorVendor: vulncheck
Lifecycle Timeline
2DescriptionCVE.org
The report.list procedure in packages/trpc/src/routers/report.ts accepted a projectId and a dashboardId and returned getReportsByDashboardId(dashboardId). The enforceAccess middleware in packages/trpc/src/trpc.ts verified membership for the supplied projectId, but nothing verified that the supplied dashboardId belonged to that project, and getReportsByDashboardId in packages/db/src/services/reports.service.ts selects reports by dashboardId alone with no project scoping. An authenticated user could therefore pair a projectId from their own organization, which satisfies the middleware, with a dashboardId belonging to another organization and receive every report in that dashboard. A correctly scoped helper, listReportsCore, already existed in the same service file and resolves the dashboard through getDashboardById(dashboardId, projectId) before returning reports, but the router did not use it.
Executive ViewAI
OpenPanel contains a cross-organization data exposure vulnerability (CVE-2026-77769) allowing any authenticated user to access analytics reports and dashboards belonging to other organizations through insecure direct object reference. In multi-tenant deployments, this creates a confidentiality breach where customer data could be accessed by competitors or unauthorized users holding valid platform credentials, exposing sensitive business analytics and reporting information across organizational boundaries.
No vendor-released patch identified at time of analysis. Interim mitigations: (1) Restrict OpenPanel access to essential personnel only with mandatory authentication via a trusted identity provider; (2) Implement automated alerting on report.list tRPC calls that include mismatched projectId and dashboardId values to catch exploitation attempts; (3) Enforce network segmentation using firewall or VPN restrictions on OpenPanel access; (4) Conduct forensic review of application audit logs spanning the last 90 days to identify any confirmed unauthorized cross-organization report access; (5) If vendor source code access is available, implement custom middleware validation in the enforceAccess function to verify dashboard ownership before returning results to the calling user.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Authentication bypass attacks exploit flaws in the verification mechanisms that control access to systems and applications.
EUVD-2026-63902
GHSA-mrm7-hxjw-vff5
NVD
CVE.org
EPSS
Exploit-DB