Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessObtain project write access
-
DeliverySubmit JavaScript webhook template aliasing Function constructor
-
ExploitBypass AST allowlist validator (read not call)
-
ExecutionAttach notification rule and send matching event
-
PersistWorker compiles and runs template
-
ImpactExecute arbitrary code with worker credentials
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A05:2025 - Injection
ASVS 5.0
V1 - Encoding and Sanitization Code injection prevention, sandbox exec
MITRE ATT&CK
2 techniques across 2 tactics: Execution, Initial Access The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | The attacker must be an authenticated OpenPanel project member with write or admin access level (WRITE_LEVELS) on at least one project - this is not remote-unauthenticated. The deployment must expose the webhook integration feature used with mode:'javascript' and a javascriptTemplate, which is present in every build since commit 286f8e16 (2026-01-23); no other non-default configuration is needed. Execution is triggered by attaching a notification rule to the integration and then having one matching event ingested through the public /track endpoint, at which point the worker evaluates and runs the template. The key limiting factor is the write-access precondition (PR:L), which confines realistic risk to insider threats and multi-tenant installs that grant project write access to non-fully-trusted users; the escape itself requires no user interaction and no special timing. |
| Impact | This is best characterized as an authenticated privilege-to-RCE escalation rather than a drive-by remote flaw. The CVSS 4.0 vector (AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:H/VA:H, score 8.7) confirms network reach, low complexity, no user interaction and no attack requirements, but PR:L means the attacker must already be an authenticated project member with write (or admin) access - so this is an insider or multi-tenant threat, not an anonymous internet attack. The payoff is high: full code execution in the worker process that holds the database, ClickHouse, Redis and third-party integration credentials (hence VC/VI/VA:H). Signals are only mildly conflicting: a complete, reproduced proof-of-concept is published in the vendor's GHSA advisory (demonstrated RCE with verbatim output), yet EPSS is low at 0.49% (42nd percentile) and the CVE is NOT in CISA KEV, indicating no evidence of widespread active exploitation - consistent with a niche, self-hosted product and a precondition of write access. The vuln.today decision label is 'this_week', which should drive the urgency: this is a genuine priority for any operator who grants project write access to semi-trusted users or runs OpenPanel multi-tenant, but materially lower risk for a single-tenant deployment where every project member is already fully trusted. The low EPSS despite a working PoC reflects limited deployment footprint plus the authentication precondition, not a weak vulnerability. |
| Exploit ScenarioDerived | A user holding write access to a single OpenPanel project configures a webhook integration in JavaScript mode and submits a transform template that reads payload.constructor.constructor into a local variable to recover the real Function constructor, then calls it to run arbitrary code; a full working proof-of-concept is published in the vendor's GHSA advisory with reproduced command output. The template passes the AST allowlist validator at save time, and when any matching tracked event is ingested the worker compiles and runs it, executing attacker code with the worker's privileges and access to its stored credentials. Attack complexity is low and no user interaction is required, but the attacker must already be an authenticated project member. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 28, 2026
Sandbox escape in OpenPanel's JavaScript webhook-template runtime (packages/js-runtime) allows an authenticated project member holding write or admin access on at least one project to execute arbitrary commands inside the worker process, which holds the database, ClickHouse, Redis and third-party integration credentials. The AST allowlist in validate() only inspects member-expression call targets and assignment left-hand sides, so a template can copy payload.constructor.constructor into a local and invoke it as a plain identifier, and execute() then compiled that template with new Function() in the worker itself. Every build since the JavaScript template feature landed in commit 286f8e16 (2026-01-23) through 61a92453 (2026-09-18) is affected; the trigger requires the attacker to attach a notification rule to the malicious webhook integration and have one matching event ingested via the public /track endpoint, with no user interaction and no special timing. No CISA KEV entry exists and EPSS is modest (0.49%, 42nd percentile), consistent with a flaw gated behind project write access rather than a drive-by remote attack; the vendor advisory nonetheless publishes a working proof-of-concept harness that demonstrates validator bypass and host command execution.
RemediationAI
Vendor-released patch: upgrade to OpenPanel 3.0.0 or later, which replaces new Function() with node:vm runInNewContext, crosses payload and result as JSON, disables string and wasm code generation, and enforces a 250 ms timeout and 1 MB output cap; the upstream fix commit is 42fc8623b5c5c30f0b89686451c0c5ab13046b81 and the advisory is https://github.com/Openpanel-dev/openpanel/security/advisories/GHSA-mc99-9jf5-22cq. Because exploitation is gated on project write access, the most effective pre-patch compensating control is to restrict project membership with write or admin level (WRITE_LEVELS) to fully trusted users, since the escape needs only that role and one ingested event - the trade-off is reduced self-service for analytics configuration. Independently, disable or refuse webhook integrations configured with mode 'javascript' (the javascriptTemplate field is the only path into the vulnerable compiler; plain URL/header webhook delivery does not reach it), which costs teams the template-transform feature. Audit existing webhook integrations for javascriptTemplate values that alias constructor, __proto__ or prototype reads into locals followed by identifier-style calls, noting that save-time validation in packages/integrations/src/registry.ts accepts these payloads and therefore provides no signal. Beware that once a template has run, the worker's database, ClickHouse, Redis and third-party credentials should be treated as potentially exposed, so rotate them after an upgrade on any instance where untrusted users could write integrations.
Affected VersionsENISA
Affected Packages
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 lets project members attach a JavaScript transform to a webhook integration (mode: 'javascript' plus javascriptTemplate). The template is screened by an AST allowlist implemented in packages/js-runtime/src/validate.ts and then compiled with new Function() in packages/js-runtime/src/execute.ts inside apps/worker, the notification-delivery process that holds database, ClickHouse, Redis and integration credentials. The root cause is CWE-94 code injection enabled by shape-based rather than value-based validation (the advisory also classifies it under CWE-693): the call-target guard (validate.ts:276-331) only fires when the callee is a MemberExpression or OptionalMemberExpression, and only the final property is checked against ALLOWED_INSTANCE_METHODS, while the assignment/update guard (validate.ts:356-366) rejects __proto__, constructor and prototype only on left-hand-side targets. A pure read such as const F = payload.constructor.constructor; is neither a member call nor an assignment, so no rule matches, and the subsequent F('...')() is an Identifier callee the walker never inspects. Reading .constructor off a plain object yields Object and off Object yields Function, giving the real Function constructor evaluated in global scope. The advisory's harness confirms six accepted escape variants (aliased read, sequence-expression callee, aliased read off an allowed instance method, off an allowed global, via destructuring, and off an array literal), and the fix commit 42fc8623 replaces new Function() with node:vm runInNewContext, crossing the payload and result as JSON, disabling contextCodeGeneration for strings and wasm, and imposing a 250 ms execution timeout and a 1 MB output cap. The advisory explicitly notes this VM context is not itself the security boundary - the validator remains it - but a validator miss now lands in an empty realm instead of the worker process.
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
CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N
Authenticated project member with write access gives PR:L; network-reachable save/trigger path and reliable aliasing give AV:N/AC:L/UI:N; code execution in the worker yields C/I/A:H with no scope change.
Primary rating from Vendor (VulnCheck).
CVSS VectorVendor: VulnCheck
DescriptionCVE.org
OpenPanel before 3.0.0 contains a sandbox escape vulnerability in the js-runtime validator that allows a project member to bypass the AST allowlist by aliasing the Function constructor. Attackers with write access can read payload.constructor.constructor into a local and call it to run arbitrary code in the worker process.
Executive ViewAI
CVE-2026-116811 enables authenticated project members with write or admin access to escape the sandbox in OpenPanel's JavaScript webhook-template runtime, executing arbitrary commands that expose database, ClickHouse, Redis, and third-party integration credentials. This affects any organization running OpenPanel builds from January 23, 2026 through September 18, 2026, requiring immediate patching to prevent credential compromise and potential lateral movement.
Apply vendor patch.
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
Code injection occurs when an application accepts user input and passes it directly into a language interpreter or evaluator without proper sanitization.
Remote Code Execution represents the critical moment when an attacker successfully runs arbitrary code on a target system without physical access.
Code execution in OpenPanel's js-runtime component lets an authenticated user who holds project write access escape the
An issue in Open Panel v.0.3.4 allows a remote attacker to escalate privileges via the Fix Permissions function. Rated h
An issue in Open Panel v.0.3.4 allows a remote attacker to escalate privileges via the Fix Permissions function. Rated m
Cross Site Request Forgery vulnerability in Open Panel OpenAdmin v.0.3.4 allows a remote attacker to escalate privileges
Server-side request forgery in OpenPanel before 2.3.0 lets unauthenticated remote attackers coerce the panel server into
Unauthenticated ClickHouse SQL injection in OpenPanel before 3.0.0 lets remote attackers read other tenants' analytics d
Authenticated remote code execution in OpenPanel before 2.3.0 allows any project member with read access to escape the m
Unauthenticated information disclosure in OpenPanel (openpanel-dev/openpanel) exposes argon2id password hashes and full
Unauthenticated SSRF in OpenPanel before 2.3.0 exposes two utility endpoints - /misc/favicon and /misc/og - that blindly
Cross-tenant data exposure in OpenPanel before 3.0.0 lets any authenticated user read other projects' profiles, events a
Read-level project members in OpenPanel before 3.0.0 can retrieve plaintext integration secrets - Slack bot tokens, inco
Cross-tenant SQL injection in OpenPanel's analytics filter builder allows authenticated attackers with project-scoped re
EUVD-2026-110519
GHSA-r85r-mvjp-f5x7
NVD
CVE.org
EPSS
Exploit-DB