Skip to main content

OpenPanel EUVDEUVD-2026-110525

| CVE-2026-116818 HIGH
SQL Injection (CWE-89)
2026-10-26 VulnCheck GHSA-wfxj-g749-hqjv
8.8
CVSS 4.0 · Vendor: VulnCheck
View

Attack ChainAIDerived

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

  1. Access
    Open WebSocket to /live/visitors/<payload>
  2. Exploit
    Break out of quoted project_id literal via projectId segment
  3. Execution
    Inject UNION/boolean count-oracle ClickHouse SQL
  4. Impact
    Exfiltrate cross-tenant events and profiles inferentially

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

Primary vector: no special conditions - remote unauthenticated exploitation against default configurations of OpenPanel before 3.0.0, because the /live/visitors/:projectId WebSocket route (live.router.ts) has no auth preHandler and wsVisitors skips the session + getProjectAccess checks that its sibling wsProjectEvents enforces; the projectId path segment is interpolated raw into the ClickHouse query with no cuid/format validation. Limiting factors: exfiltration is inferential (the sink is a uniq(profile_id) count, so data is recovered via UNION/boolean/count oracles rather than bulk dump), and the vendor's recommended read-only, single-statement-constrained ClickHouse user would confine impact to reads. Secondary vector (cohort.preview timeframe.start/end SQLi) is NOT unauthenticated - it requires a valid low-privilege project member whose own projectId is bound by enforceAccess, though the injected payload still reaches the shared ClickHouse tables for cross-tenant reads.

Impact

The vendor CVSS 4.0 vector (AV:N/AC:L/AT:N/PR:N/UI:N, VC:H) scores 8.8 and is fully consistent with the source-code evidence: the /live/visitors/:projectId WebSocket handler (wsVisitors) calls guardSocket, which the advisory confirms only attaches an error listener and performs NO session or getProjectAccess check, so the projectId path segment reaches a raw ClickHouse string interpolation with no auth and no cuid/format validation. This makes remote, unauthenticated exploitation genuinely trivial, and SSVC marks it Automatable:yes with partial Technical Impact - a combination that normally argues for fast action, matching the 'this_week' decision label. The tempering signals are real too: EPSS is only 0.43% (37th percentile), there is no CISA KEV listing, and SSVC Exploitation is 'none' (no observed in-the-wild activity). The low EPSS despite an easy unauthenticated vector most plausibly reflects the product's small deployment footprint and the inferential nature of extraction (UNION/boolean/count oracle against a uniq(profile_id) count), not any difficulty of the bug itself - so this reads as a credible this-week priority for any org actually running OpenPanel rather than a mass-internet-scan emergency. Technical impact is confidentiality-focused (cross-tenant read of events/profiles); integrity is unaffected and availability impact is minor, consistent with VI:N/VA:L.

Exploit ScenarioDerived

An unauthenticated attacker opens a WebSocket to /live/visitors/' OR 1=1 -- , whose projectId path segment breaks out of the quoted WHERE project_id = '...' literal in getActiveVisitorCount, so the returned uniq(profile_id) count reflects all tenants' events rather than one project. Using UNION/subquery or boolean count-oracle payloads, the attacker inferentially exfiltrates other tenants' events and profiles from the shared ClickHouse table with no credentials. A benign proof-of-concept demonstrating this count-oracle is published in the GHSA advisory (not verified as weaponized exploit code).

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

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

Alert me

AnalysisAIv1 – Oct 28, 2026

Unauthenticated ClickHouse SQL injection in OpenPanel before 3.0.0 lets remote attackers read other tenants' analytics data by injecting SQL through the projectId path segment of the /live/visitors/:projectId WebSocket, a handler that skips the session and project-access checks its sibling endpoints enforce. A second, authenticated variant lets any project member inject through the unescaped timeframe start/end values in cohort.preview; in both cases the payload reaches the shared ClickHouse events table that is isolated only by a WHERE project_id predicate, so extraction is cross-tenant. Exploitation requires no credentials for the primary vector and no special configuration, though data recovery is inferential (UNION or boolean/count oracles against a uniq(profile_id) count) rather than a bulk dump; the vendor advisory includes a benign demonstration query, but it is not verified as working exploit code, the vendor has released 3.0.0 as a fix, CISA KEV does not list the issue, SSVC exploitation is 'none', and EPSS is low at 0.43% (37th percentile).

RemediationAI

Vendor-released patch: 3.0.0 - upgrade OpenPanel to 3.0.0 or later, which applies sqlstring.escape to projectId in EventBuffer.getActiveVisitorCount and to timeframe.start/end in cohort.service.ts buildTimeConstraint, and adds regression tests covering hostile values (see the upstream fix at https://github.com/Openpanel-dev/openpanel/commit/35ddc8ebbcd4ed0767933de61f014f153d68442a and the advisory https://github.com/Openpanel-dev/openpanel/security/advisories/GHSA-8wr9-x797-f238). If upgrading immediately is not possible, the same commit can be applied as a hotfix, and the vendor's accompanying hardening steps should be adopted: validate projectId against the expected cuid format before use and restore the session plus getProjectAccess checks in wsVisitors so /live/visitors matches its authenticated siblings - note that adding an auth gate breaks live-visitor counts for any embed or widget that currently relies on the unauthenticated route, so those callers need a credential or session path. As an interim containment, block or disable the /live/visitors WebSocket path at the reverse proxy, at the cost of losing the live-visitors view entirely. Independently, run the ClickHouse client used by OpenPanel with a read-only, single-statement-constrained user so injected payloads cannot write or chain statements; this confines the impact to reads but does not remove the injection itself. For the cohort.preview variant, restricting project membership lowers exposure but does not fix the cross-tenant read, since any valid member's payload still reaches the shared events table.

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 a TypeScript analytics platform whose monorepo splits an API app (apps/api), a tRPC layer (packages/trpc), shared DB services (packages/db) and validation schemas (packages/validation); product telemetry is stored in ClickHouse, where every tenant's events and profiles live in shared tables disambiguated only by a WHERE project_id = ... clause. CWE-89 applies because user-controlled strings are concatenated directly into ClickHouse SQL instead of being passed as bound parameters (ClickHouse {name:Type} query parameters) or escaped with sqlstring.escape, which the same codebase already uses elsewhere in the same query builders. The primary sink is EventBuffer.getActiveVisitorCount in packages/db/src/buffers/event-buffer.ts, which interpolates projectId into a SELECT uniq(profile_id) ... WHERE project_id = '${projectId}' statement; that value arrives from the WebSocket URL path via live.controller.ts wsVisitors, which calls guardSocket (confirmed to only attach an 'error' listener, not to authenticate) and then calls the sink without the req.session?.userId check or getProjectAccess lookup that wsProjectEvents performs, and live.router.ts registers the route with no auth preHandler while performing no cuid/format validation on the segment. The secondary sink is buildTimeConstraint in packages/db/src/services/cohort.service.ts, where timeframe.start and timeframe.end are validated only as z.string() in cohort.validation.ts and interpolated raw into toDate('${start}') / BETWEEN clauses reachable from cohort.preview; enforceAccess binds the caller's own projectId there, so that variant is a SQL injection and cross-tenant read rather than a project-ID access-control break. Because the primary sink returns a uniq count, cross-tenant recovery is inferential rather than a bulk dump, and the advisory's recommended read-only, single-statement-constrained ClickHouse user would confine impact to reads.

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

Unauthenticated WebSocket reachable sink with no validation gives AV:N/AC:L/PR:N/UI:N; cross-tenant read yields C:H, no write path (I:N), minor A:L from expensive injected queries.

3.1 AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:L
4.0 AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:N/VA:L/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
None
User Interaction
None
Vulnerable system: Confidentiality
High
Vulnerable system: Integrity
None
Vulnerable system: Availability
Low
Subsequent system: Confidentiality
None
Subsequent system: Integrity
None
Subsequent system: Availability
None

DescriptionCVE.org

OpenPanel before 3.0.0 contains an unauthenticated ClickHouse sql injection vulnerability that allows remote attackers to inject SQL through the projectId parameter of the /live/visitors/:projectId WebSocket, which lacks session and project-access checks. Attackers can use UNION or boolean count oracles to read other tenants' events and profiles, and project members can similarly inject via the cohort.preview timeframe values.

Executive ViewAI

Why It Matters

OpenPanel releases before 3.0.0 contain a high-severity flaw that allows an unauthenticated remote attacker to bypass tenant isolation and read other customers' analytics data through ClickHouse SQL injection. Because the vulnerable components are public-facing WebSocket and cohort-preview endpoints with no special configuration required, any internet-exposed deployment is at risk of cross-tenant data exposure affecting customer trust, contractual data-separation guarantees, and regulatory obligations. Leadership should care because the impact is confidentiality of multi-tenant customer data, not just application availability.

Business Impact: High
Compensating Controls

Apply vendor patch.

Threat Intelligence Overview

EPSS Score
0.4%
Top 63% exploitable
Prevalence
Low
niche self-hosted open-source analytics tool, limited enterprise footprint
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.4%
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
None
System Exposure· derived
Open
Automatable
Yes
Human Impact
High
Technical Impact
Partial

Priority Score

44
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +44
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-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

CVE-2026-88890 HIGH
8.4 Sep 10

Cross-tenant SQL injection in OpenPanel's analytics filter builder allows authenticated attackers with project-scoped re

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