Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessGain adjacent-network position
-
DeliveryConnect to unauthenticated WebSocket bridge port
-
ExploitImpersonate Penpot browser plugin
-
ExecutionIntercept task payloads and inject forged results
-
ImpactCorrupt MCP client output / disclose task data
Vulnerability Assessment
| Weakness |
CWE
ASVS 5.0
V15 - Secure Coding and Architecture Hardware binding mechanism
|
| Exploitation Conditions | Requires the Penpot MCP server plugin to be running in single-user mode, where the plugin WebSocket bridge (PluginBridge.ts) is created without a host argument and defaults to binding all interfaces (0.0.0.0) with no authentication token or auth middleware. The attacker must have adjacent-network reachability (AV:A) to the WebSocket port - remote Internet exploitation is not implied. Limiting factors: exposure only in single-user mode with the MCP bridge feature active; impact is capped at plugin impersonation (intercept payloads, return forged results), not code execution; and versions binding to localhost/host are unaffected. Note the separate ReplServer /execute RCE (GHSA-22qr) is a different flaw with different conditions. |
| Impact | This is a genuine but modest-severity issue, not a top priority. The vendor CVSS 4.0 vector (AV:A/AC:L/PR:N/UI:N/VC:L/VI:L/VA:L, base 5.3) is internally consistent with the description: adjacent-network, unauthenticated, no user interaction, and low-not-high impact on all three of C/I/A because the flaw only lets an attacker impersonate the browser plugin over the MCP WebSocket bridge - intercepting task payloads (confidentiality) and returning forged task results (integrity), rather than achieving full compromise. No EPSS score, no CISA KEV listing, and no POC exists for THIS specific WebSocket-impersonation flaw. IMPORTANT DATA CONFLICT: the bundled advisory GHSA-22qr-rp27-j9wm describes a DIFFERENT and far more severe issue - an unauthenticated /execute RCE in ReplServer.ts (binds 0.0.0.0:4403, arbitrary Node code execution) with a working PoC - but the CVE description, CVSS vector, CWE-1327 (improper binding to all interfaces), and the fix commit b5274a44 (adds host:mcpServer.host to PluginBridge.ts WebSocketServer) all point to the lower-severity PluginBridge WebSocket flaw. The RCE PoC should NOT be attributed to this CVE. Treated on its own signals, this is a low-real-risk misconfiguration exposure gated behind adjacent-network positioning and single-user mode. |
| Exploit ScenarioDerived | An attacker on the same LAN/adjacent network segment as a developer running Penpot's MCP server in single-user mode connects to the exposed WebSocket port (bound to 0.0.0.0 with no auth), impersonates the legitimate Penpot browser plugin, and observes MCP task payloads while injecting forged task results back to the MCP client. No public PoC exists for this WebSocket-impersonation path (the PoC in the bundled advisory targets a separate ReplServer /execute RCE endpoint). |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Sep 27, 2026
Unauthenticated WebSocket access in the Penpot MCP server plugin's browser bridge (PluginBridge) lets attackers on adjacent networks impersonate the Penpot browser plugin, intercept MCP task payloads, and return forged results when Penpot runs in single-user mode. Affected versions are before 2.18.0, and exploitation requires local network reachability to the exposed WebSocket port, with impact capped at plugin impersonation and confidentiality/integrity loss (CVSS 5.3) rather than code execution. No public exploit code or CISA KEV listing was identified at time of analysis, and the separate ReplServer /execute RCE (GHSA-22qr) is an unrelated defect with different prerequisites.
RemediationAI
Upgrade to Penpot 2.18.0, which includes the upstream fix commit b5274a44766d095247037be18c1d1918ac67ddeb that binds the PluginBridge WebSocket server to mcpServer.host instead of all interfaces; after upgrading, verify the WebSocketServer constructor passes a host value. Where immediate upgrade is not possible, configure the MCP server so the bridge binds to localhost or the intended interface and ensure the WebSocket port is unreachable from adjacent networks - enforce this with host firewall rules or by running the bridge inside a container/namespace - accepting the trade-off that binding to localhost prevents the browser plugin from connecting from other hosts. Avoid running the MCP server in a single-user configuration on untrusted LANs, and consult the vendor advisory GHSA-ch2q-6x56-qg5r for official guidance. Address the separate ReplServer /execute RCE (GHSA-22qr, fixed in @penpot/mcp 2.15.0) independently, as it is a distinct flaw with different conditions.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 2 packages in euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
The flaw is CWE-1327 (Binding to an Unrestricted IP Address) within Penpot's Model Context Protocol (MCP) server package (mcp/packages/server). In single-user mode the PluginBridge constructs a Node WebSocketServer without a host argument, so it binds to all interfaces (0.0.0.0) and accepts connections from the local network with no authentication token or middleware. That bridge is the transport linking the MCP client to the Penpot browser plugin, carrying plugin tasks and their results; absent authentication, an attacker can assume the plugin role, observe or tamper with in-flight payloads, and feed forged responses back to the MCP client. The referenced upstream commit b5274a44766d095247037be18c1d1918ac67ddeb changes the constructor to new WebSocketServer({ port: port, host: mcpServer.host }), constraining the bind to the configured host (default localhost). The same misconfiguration class was previously corrected in PenpotMcpServer.ts, which already binds to this.host; ReplServer.ts still exhibits a related binding error but is tracked as a distinct, higher-impact flaw (GHSA-22qr).
Know when Node.js 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:A/AC:L/AT:N/PR:N/UI:N/VC:L/VI:L/VA:L/SC:N/SI:N/SA:N
Adjacent-network unauthenticated access to an unauthenticated WebSocket (AV:A/PR:N); impersonation yields limited payload disclosure, forged results, and disruption - hence C:L/I:L/A:L, scope unchanged.
Primary rating from Vendor (vulncheck).
CVSS VectorVendor: vulncheck
Lifecycle Timeline
1DescriptionCVE.org
Penpot before 2.18.0 binds the MCP server plugin WebSocket bridge to all network interfaces without authentication in single-user mode. Unauthenticated attackers on adjacent networks can connect to the WebSocket port to impersonate the Penpot browser plugin, intercept task payloads, and return forged results to the MCP client.
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
Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.
Remote code execution in n8n's workflow expression evaluation system allows an authenticated user with workflow creation
A vulnerability in the NuPoint Unified Messaging (NPM) component of Mitel MiCollab through 9.8 SP1 FP2 (9.8.1.201) could
FortiOS and FortiProxy contain an authentication bypass via the Node.js websocket module allowing unauthenticated remote
Denial of service against HTTP/2 server implementations allows remote unauthenticated attackers to exhaust server resour
Eval injection vulnerability in the internals.batch function in lib/batch.js in the bassmaster plugin before 1.5.2 for t
Flowise version 3.0.5 contains a remote code execution vulnerability in the CustomMCP node. The mcpServerConfig paramete
Node.js 8.5.0 before 8.6.0 allows remote attackers to access unintended files, because a change to ".." handling was inc
An issue was discovered in the node-serialize package 0.0.4 for Node.js. Rated critical severity (CVSS 9.8), this vulner
OpenSSL before 0.9.8za, 1.0.0 before 1.0.0m, and 1.0.1 before 1.0.1h does not properly restrict processing of ChangeCiph
Directory traversal vulnerability in the st module before 0.2.5 for Node.js allows remote attackers to read arbitrary fi
Multiple SQL injection vulnerabilities in the Manage Accounts page in the AccountManagement.asmx service in the Solarwin
The JS-YAML module before 2.0.5 for Node.js parses input without properly considering the unsafe !!js/function tag, whic
EUVD-2026-87940
GHSA-hm3w-7xgf-hfwf
NVD
CVE.org
EPSS
Vulnrichment
Exploit-DB