Skip to main content

OpenPanel EUVDEUVD-2026-110515

| CVE-2026-116807 HIGH
SQL Injection (CWE-89)
2026-10-26 VulnCheck GHSA-4c79-56xr-vg4w
7.0
CVSS 4.0 · Vendor: VulnCheck
View

Attack ChainAIDerived

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

  1. Access
    Authenticate as low-privilege tenant user
  2. Delivery
    Craft profile filter name with trailing '--' SQL comment
  3. Exploit
    Send tRPC event.events query to backend
  4. Execution
    ClickHouse JOIN subquery closes and comments out project_id scope
  5. Impact
    Read event data across all tenant projects

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A05:2025 - Injection
ASVS 5.0
V1 - Encoding and Sanitization Parameterized queries, prepared statements
MITRE ATT&CK

2 techniques across 2 tactics: Initial Access, Persistence

The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up.

Exploitation Conditions

Requires an authenticated OpenPanel account with read access to at least one project (PR:L); there is no privilege escalation step and no victim interaction. The attacker sends a crafted zChartEventFilter.name (an unconstrained z.string()) through the tRPC event.events query (the same flaw also reaches getEventsCount and the funnel service), using a 'profile.'-prefixed value whose fragment after the first dot contains spaces, parentheses, ClickHouse USING(...) syntax and a trailing '-- ' comment to close the profiles JOIN subquery and comment out the outer 'WHERE project_id' scope. No special or non-default configuration is needed - default deployments of OpenPanel before 3.0.0 are vulnerable. The only limiting factor is that the attacker must hold a valid authenticated session; exploitation is otherwise remote, single-request, and returns cross-tenant results directly.

Impact

This is a genuine but moderate-priority data-confidentiality flaw, not a top-tier emergency. The vendor CVSS 4.0 vector (AV:N/AC:L/AT:N/PR:L/UI:P) and the 7.0 (High) score reflect network-reachable, low-complexity exploitation that requires authentication (PR:L). The impact is cross-tenant read: an authenticated user of one project can dump event data from every project/tenant, which maps to high confidentiality impact (VC:H) with only incidental integrity effect and no availability impact. The signals are consistent with 'important but not critical': EPSS is low at 0.27% (19th percentile), the CVE is NOT on CISA KEV (no confirmed active exploitation), and the vuln.today decision label is 'this_week' rather than act_now/emergency. The one signal that raises attention is the detailed, working proof-of-concept published in the vendor's own GHSA advisory, which lowers the barrier to opportunistic abuse by any user who already has an account. Note two conflicts to verify: (1) the vendor 4.0 vector sets UI:P (passive user interaction), yet the described attack is a direct attacker-issued tRPC request with no victim interaction - UI:P appears unjustified and likely overstates one mitigating factor; (2) the GHSA 'source code evidence' block states 'fixed in: not yet patched,' which conflicts with the EUVD/vendor 'patch available' status and the presence of fixing commit a2aa053 - treat 3.0.0 as the fixed release but confirm with the vendor. Overall: real priority for any multi-tenant OpenPanel deployment because tenant isolation is broken and a PoC is public, but the authentication requirement and low EPSS argue against emergency ranking.

Exploit ScenarioDerived

A legitimate low-privilege OpenPanel user with read access to a single project calls the tRPC event.events query and supplies a crafted profile filter name containing a trailing SQL comment (e.g. 'profile.email, project_id FROM profiles) AS p USING (project_id) -- '), which closes the profiles JOIN subquery and comments out the outer 'WHERE project_id' tenant scope. The response then returns events belonging to all other projects/tenants (paths, geo, profile_id, revenue, etc.). A step-by-step working PoC is published in the vendor GHSA advisory, so exploitation requires only a valid account and a single crafted API request (AV:N/AC:L).

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

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

Alert me

AnalysisAIv1 – Oct 28, 2026

OpenPanel deployments before 3.0.0 are exposed to SQL injection through the tRPC event.events query, which splices an unconstrained profile.* filter name directly into the profiles-JOIN subquery, letting any authenticated user with read access to a single project comment out the WHERE project_id scoping and read events (path, country, city, profile_id, revenue) from every other tenant. The same unsanitized JOIN construction also appears in getEventsCount and the funnel service, so the exposure is not limited to a single endpoint. A public PoC reference with reproduction steps accompanies the GitHub advisory (GHSA-pc3q-gw7f-p2x2); it is not verified as working exploit code and there is no KEV entry. EPSS is low at 0.27% (19th percentile), and the vendor fixed the flaw with an allowlist in the 3.0.0 release.

RemediationAI

Upgrade OpenPanel to 3.0.0 or later, which is the vendor-released fix per the GHSA and the commit at https://github.com/Openpanel-dev/openpanel/commit/a2aa053cb23e92967e812d3be5fb0f1d606d9fdc; that commit replaces the raw uniq(profileFilters.map(f => f.split('.')[0])) construction with a profileJoinColumns() allowlist (PROFILE_TABLE_COLUMNS) in event.service.ts, funnel.service.ts and cohort.service.ts. If an immediate upgrade is not possible, reduce exposure by restricting who can hold an authenticated account and read access to a project (the flaw requires a valid session with read on at least one project), or by blocking or rate-limiting the tRPC event.events, event-count and funnel routes at the proxy - the trade-off is that legitimate dashboard and funnel functionality depends on those same endpoints, so blocking breaks reporting. Detection can rely on reviewing tRPC request logs for profile. filter names containing spaces, parentheses, USING( or -- sequences coming from non-administrative users. Note that upgrading is the only complete fix; log monitoring and access restriction only narrow the attack surface.

Affected VersionsENISA

openpanel 0 <3.0.0

Affected Packages

euvd openpanel fix: 3.0.0

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 1 package in euvd

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 analytics platform backed by ClickHouse; its tRPC API accepts chart/event filters typed as zChartEventFilter, where the name field is an unconstrained z.string(). When a filter is prefixed with profile. (e.g. profile.email), the event-list query builder in packages/db/src/services/event.service.ts constructs a LEFT ANY JOIN (SELECT id, <column list> FROM profiles FINAL WHERE project_id = ...) ON profile.id = profile_id subquery by string-concatenating the segment after profile. into the SELECT column list. Column names are SQL identifiers and therefore cannot be escaped, and while the bare-column WHERE branch validates against an EVENT_TOP_LEVEL_COLUMNS allowlist, that guard was never applied to the JOIN column list - split('.')[0] is a truncation, not a sanitizer, and the surviving fragment can still contain spaces, parentheses, quotes, ClickHouse USING(...) join syntax and -- comments. Splitting on the dot does not remove these characters. Because the JOIN and the outer WHERE project_id = '<caller>' are emitted on a single line, a trailing -- inside the injected fragment comments out the tenant scope, so the outer SELECT ... FROM events returns rows for all projects. The root cause class is CWE-89 (SQL injection). The upstream fix (commit a2aa053) introduces a PROFILE_TABLE_COLUMNS allowlist and a profileJoinColumns() helper in filter-where.service.ts that drops any non-allowlisted identifier before it reaches SQL text, and applies it in event.service.ts (getEventList, getEventsCount, the EventService query path), funnel.service.ts and cohort.service.ts.

Know when Openpanel gets its next vulnerability

  • 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.0 HIGH
CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:P/VC:H/VI:L/VA:N/SC:N/SI:N/SA:N
vuln.today AI 6.5 MEDIUM

Authenticated API user (PR:L), single crafted network request with no victim interaction (UI:N, AV:N, AC:L); read-only cross-tenant data disclosure gives C:H with no write or availability impact.

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
Passive
Vulnerable system: Confidentiality
High
Vulnerable system: Integrity
Low
Vulnerable system: Availability
None
Subsequent system: Confidentiality
None
Subsequent system: Integrity
None
Subsequent system: Availability
None

DescriptionCVE.org

OpenPanel before 3.0.0 contains an sql injection vulnerability that allows authenticated users to bypass tenant scoping by injecting unescaped profile filter names into a JOIN subquery. Attackers can supply a crafted filter name with a trailing comment to bypass the project_id WHERE clause and read events from all projects.

Executive ViewAI

Why It Matters

OpenPanel versions before 3.0.0 contain a high-severity SQL injection vulnerability that allows any authenticated user with basic project read access to bypass tenant isolation and access sensitive event data-including paths, locations, and revenue-from all other customers. This poses a significant multi-tenant data breach risk, potentially eroding customer trust and triggering regulatory scrutiny. Immediate patching to version 3.0.0 is critical to prevent unauthorized cross-tenant data exposure.

Business Impact: High
Compensating Controls

Apply vendor patch.

Threat Intelligence Overview

EPSS Score
0.3%
Top 81% exploitable
Prevalence
Low
self-hosted open-source analytics platform, limited production footprint
Social Media
1
Sightings
Data Quality
5 sources
Confidence: Medium

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.3%
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· derived
Scheduled
Exploitation· derived
None
System Exposure· derived
Open
Automatable· derived
No
Human Impact
High

Priority Score

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

Attack Technique

SQL injection exploits the way applications construct database queries by mixing user input directly into SQL statements.

CVE-2026-93985 CRITICAL POC
9.4 Sep 19

Code execution in OpenPanel's js-runtime component lets an authenticated user who holds project write access escape the

CVE-2025-25871 HIGH POC
8.0 Mar 14

An issue in Open Panel v.0.3.4 allows a remote attacker to escalate privileges via the Fix Permissions function. Rated h

CVE-2025-25872 MEDIUM POC
5.5 Mar 14

An issue in Open Panel v.0.3.4 allows a remote attacker to escalate privileges via the Fix Permissions function. Rated m

CVE-2025-25873 MEDIUM POC
5.5 Mar 14

Cross Site Request Forgery vulnerability in Open Panel OpenAdmin v.0.3.4 allows a remote attacker to escalate privileges

CVE-2026-85614 CRITICAL
9.2 Sep 04

Server-side request forgery in OpenPanel before 2.3.0 lets unauthenticated remote attackers coerce the panel server into

CVE-2026-116818 HIGH
8.8 Oct 26

Unauthenticated ClickHouse SQL injection in OpenPanel before 3.0.0 lets remote attackers read other tenants' analytics d

CVE-2026-116811 HIGH
8.7 Oct 26

Sandbox escape in OpenPanel's JavaScript webhook-template runtime (packages/js-runtime) allows an authenticated project

CVE-2026-85610 HIGH
8.7 Sep 04

Authenticated remote code execution in OpenPanel before 2.3.0 allows any project member with read access to escape the m

CVE-2026-88893 HIGH
8.7 Sep 10

Unauthenticated information disclosure in OpenPanel (openpanel-dev/openpanel) exposes argon2id password hashes and full

CVE-2026-85612 HIGH
8.7 Sep 04

Unauthenticated SSRF in OpenPanel before 2.3.0 exposes two utility endpoints - /misc/favicon and /misc/og - that blindly

CVE-2026-116808 HIGH
8.6 Oct 26

Cross-tenant data exposure in OpenPanel before 3.0.0 lets any authenticated user read other projects' profiles, events a

CVE-2026-116819 HIGH
8.4 Oct 26

Read-level project members in OpenPanel before 3.0.0 can retrieve plaintext integration secrets - Slack bot tokens, inco

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