Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessReach browser server WebSocket port
-
DeliveryForge chrome-extension Origin with 33+ chars
-
ExploitBypass unanchored re.match() gate
-
ExecutionSend start_session with attacker goal
-
PersistBroadcast start_automation to connected extension
-
ImpactBrowser exfiltrates cookies and screenshots
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V8 - Authorization Access control enforcement
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 | Requires the PraisonAI Browser Server to be running and reachable by the attacker (default listener 127.0.0.1:8765), plus at least one Chrome extension actively connected to that server for the start_session/start_automation payload to have an effect. No authentication is needed once reachable - the only gate is the forgeable Origin header, which any non-browser WebSocket client can set to 'chrome-extension://' + 32 alphanumerics + arbitrary trailing characters. Limiting factors: the default loopback bind means remote exploitation requires the operator to have exposed the port (or the attacker to have local/adjacent access or a browser-based cross-origin path), and impact is contingent on a live connected extension; genuine browsers cannot forge the Origin header, so exploitation needs a scripted client. |
| Impact | Multiple signals point to genuine severity: the supplied CVSS 3.1 vector (AV:N/AC:L/PR:N/UI:N, C:H/I:H) yields 9.1, the flaw is trivially exploitable (a one-line Origin forgery), and a PoC is public. However, these must be weighed against a key limiting factor the vector does not capture: the server binds to 127.0.0.1:8765 by default, so 'network' reachability presupposes the operator exposed the port or an attacker already has local/co-resident code execution or can leverage a browser-driven cross-origin vector - this tempers the raw AV:N. There is no EPSS score, no KEV listing, and no SSVC data in the input, so exploitation-probability and automatability cannot be quantified from the provided sources. The absence of KEV suggests no confirmed in-the-wild use, but the low exploitation complexity and high impact (session-cookie theft, arbitrary browser actions) mean any operator running the browser server on an accessible interface should treat this as an urgent patch. On balance this is a real priority for exposed deployments rather than a high-CVSS-but-low-real-risk finding, with the localhost default being the primary risk reducer for typical installs. |
| Exploit ScenarioDerived | An attacker who can reach the browser server's WebSocket port opens a raw (non-browser) WebSocket client and sets the Origin header to 'chrome-extension://' followed by 32 alphanumeric characters plus any trailing bytes, satisfying the unanchored re.match() and passing websocket.accept(). They then send a start_session command with an attacker-chosen goal, which broadcasts start_automation to every connected Chrome extension so the victim's browser silently performs the goal - exfiltrating cookies or capturing screenshots. A published PoC in the advisory demonstrates the regex bypass and low attack complexity. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Aug 25, 2026
WebSocket origin-validation bypass in PraisonAI's Browser Server (praisonai/browser/server.py) before 4.6.58 lets an attacker forge a Chrome-extension Origin header and drive connected browser extensions. The check uses re.match() against the unanchored pattern chrome-extension://[a-z0-9]{32}, so any Origin with 32+ trailing characters is accepted before websocket.accept(), after which start_session commands trigger arbitrary browser automation, cookie theft, and screenshot capture. This is a patch bypass of CVE-2026-40289 (GHSA-8x8f-54wf-vv92); a working PoC is published in the advisory, though it is not in CISA KEV - no public exploit weaponization beyond the advisory PoC is identified.
RemediationAI
Vendor-released patch: upgrade PraisonAI to 4.6.58 or later (pip install --upgrade 'praisonai>=4.6.58'), which is the definitive fix per GHSA-6g6r-q6gw-w8fg and release v4.6.58. If immediate upgrade is not possible, apply compensating controls: ensure the browser server binds only to loopback (127.0.0.1) and is not exposed on 0.0.0.0 or a routable interface - trade-off is none for local-only use but breaks any intentional remote extension pairing; add a host firewall rule blocking inbound access to TCP 8765 from all non-local sources; and where feasible, disable or do not launch the browser server (python -m praisonai browser / BrowserServer().start()) until patched, accepting loss of browser-automation functionality. Because the flawed regex is the only gate, do not rely on the Origin check itself as a control until 4.6.58 is applied. Advisory and fix references: https://github.com/MervinPraison/PraisonAI/security/advisories/GHSA-6g6r-q6gw-w8fg and https://github.com/MervinPraison/PraisonAI/releases/tag/v4.6.58.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 1 package in pypi
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
The affected component is PraisonAI's Browser Server, a WebSocket service (default 127.0.0.1:8765) that bridges a Chrome extension to a BrowserAgent for automated browsing. Its only connection gate is an HTTP Origin-header check intended to allow only the paired Chrome extension. The root cause is CWE-284 (Improper Access Control) manifesting as an anchoring bug: Python's re.match() anchors only at the string start, not the end, so chrome-extension://[a-z0-9]{32} matches any Origin whose first 32 post-scheme characters are alphanumeric regardless of trailing bytes. re.fullmatch() or a trailing $ is required to enforce exact length. Because Origin headers are freely set by any non-browser WebSocket client, and _handle_connection() has no bearer token, API key, or extension-ID allowlist, the regex is the sole authentication boundary.
Know when Praisonai 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
AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N
Forgeable Origin is the sole gate (PR:N, AC:L, UI:N); AV:N reflects the network-service intent though default loopback bind limits real reach; cookie theft and browser control give C:H/I:H, no availability impact.
Primary rating from Vendor (GitHub_M).
CVSS VectorVendor: GitHub_M
Lifecycle Timeline
2DescriptionCVE.org
PraisonAI is a multi-agent teams system. Prior to praisonai 4.6.58, Browser Server _handle_connection() checks Chrome extension origins with re.match() and the unanchored expression chrome-extension://[a-z0-9]{32}. Extra trailing characters pass before websocket.accept(), allowing start_session commands and unauthorized browser automation. This issue is fixed in version 4.6.58.
Executive ViewAI
PraisonAI's Browser Server (versions before 4.6.58) contains a critical WebSocket validation flaw that permits attackers to forge authentication headers and hijack connected browser extensions, enabling unauthorized session theft, cookie exfiltration, and screenshot capture. Organizations using PraisonAI's browser automation features face immediate risk of account compromise and sensitive data breach.
No vendor-released patch identified at time of analysis. Implement network segmentation to restrict WebSocket access to trusted networks only, disable PraisonAI browser extension functionality if not business-critical, deploy a reverse proxy with strict origin header validation before forwarding requests to PraisonAI, isolate affected systems from direct internet exposure, and establish continuous monitoring of WebSocket connection logs for suspicious patterns matching the published exploit technique.
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.
PraisonAI's TypeScript MCP server (npm package `praisonai`, versions 1.5.0 through 1.7.1) exposes an HTTP JSON-RPC trans
PraisonAI's `praisonai serve` subsystem (agents and unified modes) accepts an `--api-key` CLI flag that is parsed but ne
Unauthenticated remote agent invocation in PraisonAI versions 4.6.34 through 4.6.57 allows any network-reachable caller
SSRF protection bypass in PraisonAI's praisonaiagents library (all versions before 1.6.58) lets low-privileged users rou
Authentication fail-open in PraisonAI's Recipe HTTP server allows unauthenticated remote attackers to invoke recipe exec
Authentication bypass in PraisonAI's AgentServer component exposes all routes - /publish, /events, /info, /health - to u
Arbitrary Python code execution in PraisonAI's workflow include feature allows an attacker who controls a local recipe d
Server-side request forgery in PraisonAI's web_crawl() function (versions 1.5.128-1.6.57) allows an attacker who can inf
Cross-site request forgery against the PraisonAI MCP HTTP-stream transport allows unauthenticated remote attackers to ex
Remote unauthenticated access to PraisonAI's legacy Flask API server allows attackers to execute configured agent workfl
Path traversal in praisonaiagents prior to 1.6.58 allows a low-privileged caller to write arbitrary JSON files to any pr
Server-Side Request Forgery in PraisonAI before version 4.6.58 allows unauthenticated remote attackers to force the appl
EUVD-2026-65545
GHSA-6g6r-q6gw-w8fg
NVD
CVE.org
EPSS
Exploit-DB