Skip to main content

Pi Agent Dashboard CVE-2026-108890

| EUVDEUVD-2026-97451 LOW
Improper Authorization (CWE-285)
2026-10-12 VulDB GHSA-q84p-gr6q-mp6g
2.1
CVSS 4.0 · Vendor: VulDB
View

Attack ChainAIDerived

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

  1. Access
    Victim visits attacker web page
  2. Exploit
    Page opens cross-site WebSocket to loopback dashboard
  3. Execution
    Invoke terminalManager.spawn with crafted cwd
  4. Impact
    Unauthorized 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).

Monitor Track and reassess. Why: LOW severity (CVSS 0.1-3.9).
Patch available 0.5% exploitation probability (EPSS)

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

Alert me

AnalysisAIv1 – 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

pi-agent-dashboard 0.5
pi-agent-dashboard 0.7
pi-agent-dashboard 0.1
pi-agent-dashboard 0.8.0
pi-agent-dashboard 0.6
pi-agent-dashboard 0.2
pi-agent-dashboard 0.4
pi-agent-dashboard 0.3

Affected Packages

euvd pi_agent_dashboard no fix

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

Vendor (VulDB) PRIMARY 2.1 MEDIUM
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
vuln.today AI 6.3 MEDIUM

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.

3.1 AV:N/AC:L/PR:N/UI:R/S:U/C:L/I:L/A:L
4.0 AV:N/AC:L/AT:N/PR:N/UI:P/VC:L/VI:L/VA:L/SC:N/SI:N/SA:N

Primary rating from Vendor (VulDB).

CVSS VectorVendor: VulDB

Attack Vector
Network
Attack Complexity
Low
Attack Requirements
None
Privileges Required
None
User Interaction
Passive
Vulnerable system: Confidentiality
Low
Vulnerable system: Integrity
Low
Vulnerable system: Availability
Low
Subsequent system: Confidentiality
None
Subsequent system: Integrity
None
Subsequent system: Availability
None

Lifecycle Timeline

3
Severity Changed
Oct 12, 2026 - 14:22 NVD
MEDIUM LOW
CVSS changed
Oct 12, 2026 - 14:22 NVD
5.3 (MEDIUM) 2.1 (LOW)
CVE Published
Oct 12, 2026 - 13:15 cve.org
LOW 2.1

DescriptionCVE.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

EPSS Score
0.5%
Top 59% exploitable
Prevalence
Rare
niche self-hosted developer dashboard, loopback-bound, tiny footprint
Exploit
POC
Public exploit code exists
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 LOW
CISA KEV No
Public POC Yes
EPSS 0.5%
Patch available Yes
Active threat No
Deciding rule
LOW severity (CVSS 0.1-3.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
Poc
System Exposure· derived
Open
Automatable· derived
No
Human Impact· derived
Low

Priority Score

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

Attack Technique

Authentication bypass attacks exploit flaws in the verification mechanisms that control access to systems and applications.

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