Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
ReconAttacker registers localhost.attacker.com domain
-
DeliveryAttacker serves malicious webpage with cross-origin fetch payload
-
ExploitVictim developer visits attacker page while running MCP HTTP-stream server
-
InstallBrowser sends simple CORS request with Origin: http://localhost.attacker.com
-
C2Flawed startswith check accepts the origin, no preflight required
-
Executetools/call executes file-write without authentication
-
ImpactAttacker-controlled agent instructions persist to victim's rule files
-
Step 8All subsequent agent runs execute attacker-injected instructions
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A07:2025 - Authentication Failures
ASVS 5.0
V6 - Authentication Origin validation
|
| Exploitation Conditions | Exploitation requires: (1) the victim must be running |
| Impact | The CVSS 7.6 score is well-calibrated: AV:N reflects the browser-mediated delivery path, AC:L is justified because the only attacker requirement is registering a domain whose label begins with 'localhost' (trivial), PR:N is accurate since no credentials are needed on the target MCP server, and UI:R correctly captures the victim-visits-page requirement. The I:H integrity rating is appropriate given that file writes can persist attacker-controlled agent instructions indefinitely. The S:U (unchanged scope) designation may modestly understate impact - persistent prompt injection into agent instruction files means future agent runs on the victim's machine will operate under attacker control, which has cascading confidentiality and integrity implications beyond the MCP process itself. EPSS data is absent from the provided intelligence, so exploitation probability cannot be quantified from base rates alone. There is no CISA KEV listing and no confirmed public exploit code, though the GHSA advisory discloses the exact bypass technique and sufficient implementation detail that an independent researcher could reproduce the attack within hours. The vulnerability is strictly developer-facing: production deployments that do not run the HTTP-stream transport (e.g., stdio-only configurations) are not exposed. Given the low attacker effort after victim interaction and the potential for durable agent compromise, any development team running PraisonAI's HTTP-stream MCP server should prioritize this patch regardless of organization size. |
| Exploit ScenarioDerived | An attacker registers the DNS name |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Aug 25, 2026
Cross-site request forgery against the PraisonAI MCP HTTP-stream transport allows unauthenticated remote attackers to execute arbitrary MCP tools on a developer's local machine when a victim visits a malicious webpage. The attack is enabled by a flawed prefix-match origin check (startswith) in versions prior to 4.6.58 that accepts http://localhost.attacker.com as a valid localhost origin, and is further facilitated by the absence of a default API key and the CORS simple-request mechanism (Content-Type: text/plain) that bypasses browser preflight. The highest-impact consequence is persistent prompt injection: a forged request can write attacker-controlled agent instruction files that the runtime loads on every subsequent agent run. No public exploit is identified at time of analysis; vendor-released patch 4.6.58 is confirmed.
RemediationAI
Upgrade PraisonAI to version 4.6.58 or later, confirmed fixed in the tagged release at https://github.com/MervinPraison/PraisonAI/releases/tag/v4.6.58 and patch commit https://github.com/MervinPraison/PraisonAI/commit/2f9677abb2ea68eab864ee8b6a828fd0141612e1. The fix replaces the startswith prefix match with exact equality checking and introduces _authorise_request() in server.py that enforces a bearer token check on all HTTP endpoints when auth_token is configured. Until upgrade is feasible, configure an API key on the MCP HTTP server: CORS simple requests using Content-Type: text/plain cannot carry custom Authorization headers, so an API key requirement on the tools/call endpoint will block the forged cross-origin request while preserving legitimate programmatic access. As an additional control, avoid running praisonai mcp serve --transport http-stream on machines used for general web browsing, or isolate the MCP server to a dedicated, browser-free development environment. Note that the stdio transport is not affected by this origin-bypass class of vulnerability.
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
PraisonAI is a Python-based multi-agent orchestration framework that exposes a Model Context Protocol (MCP) server via an HTTP-stream transport (praisonai mcp serve --transport http-stream). The transport binds to localhost and implements an Origin allowlist as required by MCP 2025-11-25 security guidance, but the check in transports/http_stream.py uses Python's str.startswith() for each allowed origin rather than exact equality. CWE-346 (Origin Validation Error) directly applies: the code fails to validate that a browser-supplied Origin header is actually a localhost address, because 'http://localhost.attacker.com'.startswith('http://localhost') evaluates to True in Python. Compounding this, the CORS simple-request mechanism permits Content-Type: text/plain cross-origin requests without a preflight OPTIONS check, so the browser delivers the forged request directly. The MCP tools/call endpoint requires no session token and the default server configuration has no API key, meaning origin validation is the sole access control layer. The affected CPE is cpe:2.3:a:mervinpraison:praisonai:*:*:*:*:*:*:*:* for all versions prior to 4.6.58.
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:R/S:U/C:L/I:H/A:L
Network delivery via browser (AV:N), trivial domain registration (AC:L), no server credentials required (PR:N), victim page visit required (UI:R); persistent file writes yield high integrity impact with low confidentiality and availability side effects.
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, MCP HTTP Stream _validate_origin uses request_origin.startswith(allowed), allowing the attacker-controlled localhost.attacker.com HTTP origin to satisfy the localhost allowlist. A webpage can send Content-Type: text/plain requests without preflight and invoke tools/call without an API key, including file writes that persist agent instructions. This issue is fixed in version 4.6.58.
Executive ViewAI
PraisonAI versions prior to 4.6.58 contain a vulnerability allowing attackers to compromise developer machines without authentication by injecting malicious instructions that persist across all future sessions. This creates supply chain risk where compromised developer environments can corrupt artifacts, introduce backdoors, or exfiltrate sensitive data. Development teams using versions before 4.6.58 require immediate patching. No public exploit identified at time of analysis.
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
Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.
PraisonAI's TypeScript MCP server (npm package `praisonai`, versions 1.5.0 through 1.7.1) exposes an HTTP JSON-RPC trans
WebSocket origin-validation bypass in PraisonAI's Browser Server (praisonai/browser/server.py) before 4.6.58 lets an att
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
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-65544
GHSA-pvph-5j39-v8qc
NVD
CVE.org
EPSS
Vulnrichment
Exploit-DB