Skip to main content

OpenPanel CVE-2026-77768

| EUVDEUVD-2026-63901 HIGH
Authorization Bypass Through User-Controlled Key (CWE-639)
2026-08-21 disclosure@vulncheck.com GHSA-g8mq-qr24-3qv3
7.1
CVSS 4.0 · Vendor: vulncheck
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Authenticate to OpenPanel instance
  2. Delivery
    Obtain or guess target reportId
  3. Exploit
    Call report.get tRPC procedure with reportId only
  4. Execution
    enforceAccess middleware skips project check
  5. Persist
    getReportById returns full report object
  6. Impact
    Attacker reads cross-project analytics configuration

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 a valid authenticated session on the target OpenPanel instance (PR:L per CVSS 4.0). The attacker must supply a known reportId; because IDs appear to be UUIDs, random enumeration is not practical - a realistic attacker obtains the ID through a shared link, referral, or insider access. The flaw is confined to the report.get tRPC procedure; the report.update, report.delete, and report.duplicate procedures all perform getProjectAccess checks against the report's projectId and are not affected. Multi-tenant deployments where users across different projects or organisations share one OpenPanel instance represent the primary risk scenario. Single-tenant deployments where all authenticated users already belong to the same project have no meaningful cross-boundary exposure from this flaw.

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) accurately characterises a network-exploitable flaw requiring only a valid authenticated session (PR:L) with high confidentiality impact and no integrity or availability impact. Attack complexity is genuinely low - the exploitation pattern is a single authenticated API call with a known or enumerated reportId. Report identifiers in OpenPanel appear to be UUIDs, so brute-force enumeration is impractical, but IDs can plausibly be obtained from shared dashboard URLs or application logging. No EPSS score was provided in the input data, and the vulnerability is not listed in CISA KEV, indicating no confirmed widespread exploitation at time of analysis. Real-world impact is highest in multi-tenant deployments where teams from different organisations share one instance, as their analytics configurations - potentially encoding proprietary KPIs, segmentation logic, and business-sensitive filter criteria - are mutually readable by any authenticated user. Single-tenant or single-organisation deployments face negligible cross-boundary exposure.

Exploit ScenarioDerived

An authenticated user on a shared OpenPanel instance obtains a target reportId - for example, extracted from a dashboard share link sent by a colleague in a different project - and issues a direct tRPC call to report.get with that identifier. The server returns the complete report object including event series, breakdowns, and formula definitions belonging to the foreign project, with no authorization error. No public exploit code has been identified, but the technique requires only standard HTTP tooling and knowledge of the tRPC endpoint structure.

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.9).
Patch available 0.2% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – Aug 21, 2026

Insecure direct object reference in OpenPanel's tRPC report.get procedure exposes any saved report's full configuration to any authenticated instance user. The enforceAccess middleware in packages/trpc/src/trpc.ts conditionally evaluates project membership only when the input carries a projectId or organizationId key; since report.get accepted only a reportId, it bypassed all authorization checks, and the underlying getReportById query performed no project-level scoping. No public exploit or active exploitation (CISA KEV) has been identified at time of analysis, though the attack pattern is trivially reproducible by any authenticated developer familiar with tRPC.

RemediationAI

The upstream fix is available in commit 0a51b6805eed0b3da8376175acd5fa3d26819cb6 (https://github.com/Openpanel-dev/openpanel/commit/0a51b6805eed0b3da8376175acd5fa3d26819cb6), which adds a getProjectAccess call immediately after fetching the report in report.get and throws a TRPCForbiddenError if the authenticated user lacks membership in the report's owning project. Operators should upgrade to a release incorporating this commit; no specific patched release version number was confirmed in the available data, so the GitHub advisory at https://github.com/Openpanel-dev/openpanel/security/advisories/GHSA-9x7c-f87x-2243 should be consulted for the canonical fixed version. As a compensating control prior to patching, operators can restrict network-layer access to the tRPC API so that only users within the same organisational boundary can reach report.get endpoints; this reduces cross-tenant exposure but does not eliminate the flaw for same-instance multi-tenant configurations and may break legitimate cross-team workflows.

Affected VersionsENISA

openpanel 0 <0a51b6805eed0b3da8376175acd5fa3d26819cb6

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 backend API is built on tRPC. The root cause (CWE-639: Authorization Bypass Through User-Controlled Key) is an architectural gap in the enforceAccess middleware located at packages/trpc/src/trpc.ts: the middleware gates project membership checks on the presence of a projectId or organizationId key in the procedure input. The report.get procedure at packages/trpc/src/routers/report.ts was defined to accept only a reportId input, so it never triggered that gate. The downstream data access function getReportById in packages/db/src/services/reports.service.ts executes a Prisma findUnique on the report ID alone with no project-scoped WHERE clause, returning the complete report object - including owning projectId, event series, filters, breakdowns, and formulas - to any caller that reaches it. Adjacent procedures (update, delete, duplicate) resolve the report first and then explicitly call getProjectAccess against the report's own projectId, confirming the omission was isolated to the get procedure.

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

Vendor (vulncheck) PRIMARY 7.1 MEDIUM
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
vuln.today AI 6.5 MEDIUM

Network-exploitable IDOR requiring an authenticated session (PR:L); high confidentiality impact as complete report configurations are disclosed, with no integrity or availability impact and no scope change.

3.1 AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N
4.0 AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:N/VA:N/SC:N/SI:N/SA:N

Primary rating from Vendor (vulncheck).

CVSS VectorVendor: vulncheck

Attack Vector
Network
Attack Complexity
Low
Attack Requirements
None
Privileges Required
Low
User Interaction
None
Vulnerable system: Confidentiality
High
Vulnerable system: Integrity
None
Vulnerable system: Availability
None
Subsequent system: Confidentiality
None
Subsequent system: Integrity
None
Subsequent system: Availability
None

Lifecycle Timeline

2
Patch available
Aug 21, 2026 - 12:01 EUVD
CVE Published
Aug 21, 2026 - 11:17 cve.org
HIGH 7.1

DescriptionCVE.org

The report.get procedure in packages/trpc/src/routers/report.ts accepted only a reportId and returned getReportById(reportId) directly. The enforceAccess middleware in packages/trpc/src/trpc.ts evaluates membership only when the input carries a projectId or organizationId key, so an input consisting of a reportId alone passed through unchecked, and getReportById in packages/db/src/services/reports.service.ts performs a findUnique on the report id with no project scoping. Any authenticated user could therefore read the full configuration of any saved report on the instance, including the owning projectId, event series, filters, breakdowns and formulas, by supplying its identifier. The adjacent update, delete and duplicate procedures resolve the report first and check getProjectAccess against the report's own projectId, so the omission was specific to this procedure.

Executive ViewAI

Why It Matters

OpenPanel's report.get function contains an authorization bypass allowing any authenticated user to access all saved reports and their full configurations, regardless of role or project membership. No public exploit has been identified at time of analysis, but this trivial attack pattern creates a high-risk data exposure affecting all users with instance access. Without a released patch, immediate access controls are required to limit exposure until the vendor provides remediation.

Business Impact: High
Compensating Controls

No vendor-released patch identified at time of analysis. Interim mitigations: (1) restrict OpenPanel instance access to only personnel with legitimate business need for full report visibility; (2) audit and monitor access logs for report.get API calls to detect unauthorized viewing patterns; (3) implement network-level access controls to limit OpenPanel connectivity; (4) if operationally feasible, temporarily disable report.get functionality; (5) engage with OpenPanel development team to implement additional application-level authorization checks validating project membership before returning report data.

Threat Intelligence Overview

EPSS Score
0.2%
Top 84% exploitable
Prevalence
Low
open-source analytics platform with limited known enterprise adoption
Social Media
1
Sightings
Data Quality
6 sources
Confidence: High

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.

SignalValue
Severity HIGH
CISA KEV No
Public POC No
EPSS 0.2%
Patch available Yes
Active threat No
Deciding rule
HIGH severity (CVSS 7.0-8.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision
Scheduled
Exploitation
Poc
System Exposure· derived
Open
Automatable
No
Human Impact
High
Technical Impact
Partial

Priority Score

36
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +36
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Authentication bypass attacks exploit flaws in the verification mechanisms that control access to systems and applications.

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy