Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessVictim visits attacker web page
-
ExploitPage opens cross-site WebSocket to loopback dashboard
-
ExecutionInvoke terminalManager.spawn with crafted cwd
-
ImpactUnauthorized terminal spawn in victim context
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V8 - Authorization Authorization verification
MITRE ATT&CK
1 technique across 1 tactic: Defense Evasion The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Exploitation requires the victim to be actively running pi-agent-dashboard (version up to 0.8.0, which listens on loopback ws://127.0.0.1:8000/ws) AND to visit an attacker-controlled web page in the same browser, which then issues a cross-site WebSocket connection or blind cross-origin request that reaches terminalManager.spawn with an attacker-supplied cwd. The vulnerable pre-patch builds lack an Origin-based admission gate on the WebSocket upgrade and /api/* mutations. LIMITING FACTORS: mandatory user interaction (victim must browse to the malicious page, UI:P); the service is bound to localhost, so the attacker cannot connect directly and must pivot through the victim's browser; and only versions through 0.8.0 before patch 48fd0bad are affected. These constraints materially reduce real-world exploitability despite network reachability. |
| Impact | This is a genuinely low-priority issue despite being remotely reachable. The vendor-supplied CVSS 4.0 vector (AV:N/AC:L/AT:N/PR:N/UI:P, score 2.1 LOW) tells the real story: although the attack vector is network and no privileges are required, successful exploitation hinges on user interaction (UI:P) - a victim must be lured into visiting an attacker-controlled web page while running the dashboard locally. The source evidence confirms this is a cross-site request / cross-site WebSocket hijacking (CSWSH) class flaw (fix branch 'fix-ws-origin-cswsh', issue #625): any page the victim visited could open ws://127.0.0.1:8000/ws and spawn a terminal or blind-POST /api/* routes with ambient trust. Impact is bounded (VC:L/VI:L/VA:L, no scope change), consistent with CWE-285 improper authorization rather than direct code execution. Signal cross-reference: POC is publicly available (increasing opportunistic risk), but there is NO CISA KEV listing and NO EPSS score in the provided data, so there is no evidence of active or widespread exploitation. The combination of mandatory user interaction, low technical impact, and a loopback-bound niche developer tool means the practical risk is minimal and far below what a 'network, unauthenticated, public POC' summary might superficially suggest. Note: EPSS data is absent and cannot be used to gauge exploitation probability. |
| Exploit ScenarioDerived | A developer running pi-agent-dashboard locally (loopback port 8000) is tricked into visiting a malicious web page in the same browser. That page silently opens a cross-site WebSocket to the dashboard and invokes terminalManager.spawn with an attacker-chosen cwd, abusing the victim's ambient local trust to perform an unauthorized terminal spawn. A public proof-of-concept exists (hosted via the disclosed Google Drive link), but exploitation still requires the victim to actively browse to the attacker's page (UI:P). |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 12, 2026
Cross-site request attacks can reach the terminal-spawn handler in BlackBeltTechnology pi-agent-dashboard 0.8.0 and earlier, letting a malicious web page open a WebSocket or blind-POST to the loopback service and invoke terminalManager.spawn with an attacker-chosen working directory, because pre-patch builds enforce no Origin-based authorization gate on the WebSocket upgrade or on /api/* mutation routes. Exploitation is unauthenticated from the network's perspective but requires the victim to have the dashboard running and to visit an attacker-controlled page in the same browser, making user interaction mandatory; publicly available exploit code exists (disclosed via VulDB and a linked public drive folder), but there is no CISA KEV listing and no confirmed active exploitation, and our assessment rates this a genuinely low-priority issue despite remote reachability given the loopback binding, mandatory interaction, and only low confidentiality/integrity/availability impact.
RemediationAI
Install a build that contains upstream commit 48fd0bad5adfe76af9736599699d51a5f60019f6 (pull request #636, changelog entry fix-ws-origin-cswsh); the vendor was contacted early and states a fixed version was released, though the exact release tag is not confirmed in the available data, so the practical instruction is to upgrade to the first release at or above 0.8.0 that includes that commit. Until then, actionable compensating controls are: run the dashboard only while actively used and shut it down when idle, since the service is loopback-bound and the attack requires the victim to browse to an attacker page while it is live; avoid browsing untrusted sites in the same browser profile that has the dashboard loaded; and prefer header-less clients (the pi-dashboard CLI, curl, the bridge, the skill), which the patched admission logic explicitly treats as unaffected. If a manually started zrok share (zrok share public, not the dashboard's own tunnel) is required, its origin must be added to cors.allowedOrigins in ~/.pi/dashboard/config.json - but be aware this escape hatch deliberately re-admits that origin and partially reopens the gap, whereas dashboard-run tunnels remain covered automatically. Note the trade-off in the upstream design: the live-preview scope must keep admitting Origin: null for the sandboxed iframe, so any attempt to fully disable that carve-out breaks live-preview HMR. After patching, monitor the [ws-gate], [csrf-gate], and [pi-gateway] log lines for attempted cross-origin dials and mutations. No CISA KEV entry exists for this CVE, so no emergency out-of-band remediation cadence is indicated.
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
The flaw is a broken authorization control (CWE-285) in the Node/Fastify server component of pi-agent-dashboard, specifically the terminalManager.spawn function in packages/server/src/browser-handlers/terminal-handler.ts, where the cwd argument supplied by a caller is trusted without validating that the request originates from a permitted origin. The dashboard binds to loopback (ws://127.0.0.1:8000/ws and /api/* routes), and its original design relied on CORS, which hides responses from cross-origin readers but never blocks the request itself - the classic cross-site WebSocket hijacking (CSWSH) and CSRF gap. Any page the victim visits can therefore dial the local WebSocket, receive the session snapshot broadcast, and drive terminal spawn with an arbitrary working directory, or blind-POST every /api/* route with the ambient trust of the local context. The upstream fix (PR #636, commit 48fd0bad) adds three gates on a single shared origin-admission decision: an upgrade-handler Origin check that refuses untrusted dials before any ticket is consumed, a Fastify onRequest hook returning 403 {"error":"untrusted origin"} for untrusted-Origin mutations on /api/* and POST /auth/logout, and a pi-gateway refusal of any TCP upgrade carrying an Origin header. The gate deliberately omits the *.share.zrok.io wildcard for admission (a stranger's free zrok share should not be same-site to the victim's tunnel) and admits Origin: null only for the sandboxed live-preview iframe HMR scope, with header-less local clients (CLI, curl, bridge, skill) remaining unaffected.
Know when Pi Agent Dashboard 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:N/UI:P/VC:L/VI:L/VA:L/SC:N/SI:N/SA:N/E:P
Attacker delivers a malicious page over the network (AV:N) with no privileges (PR:N), but the victim must visit it to trigger the cross-site request (UI:R); impact is limited and scope-unchanged.
Primary rating from Vendor (VulDB).
CVSS VectorVendor: VulDB
Lifecycle Timeline
3DescriptionCVE.org
A vulnerability has been found in BlackBeltTechnology pi-agent-dashboard up to 0.8.0. Affected by this issue is the function terminalManager.spawn of the file packages/server/src/browser-handlers/terminal-handler.ts of the component Terminal Handler. The manipulation of the argument cwd leads to improper authorization. The attack can be initiated remotely. The exploit has been disclosed to the public and may be used. The identifier of the patch is 48fd0bad5adfe76af9736599699d51a5f60019f6. It is suggested to install a patch to address this issue. The vendor was contacted early, responded in a very professional manner and quickly released a fixed version of the affected product.
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
Authentication bypass attacks exploit flaws in the verification mechanisms that control access to systems and applications.
EUVD-2026-97451
GHSA-q84p-gr6q-mp6g
NVD
CVE.org
EPSS
VulDB
Exploit-DB