Skip to main content

PraisonAI EUVDEUVD-2026-65544

| CVE-2026-55532 HIGH
Origin Validation Error (CWE-346)
2026-08-25 GitHub_M GHSA-pvph-5j39-v8qc
7.6
CVSS 3.1 · Vendor: GitHub_M
View

Attack ChainAIDerived

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

  1. Recon
    Attacker registers localhost.attacker.com domain
  2. Delivery
    Attacker serves malicious webpage with cross-origin fetch payload
  3. Exploit
    Victim developer visits attacker page while running MCP HTTP-stream server
  4. Install
    Browser sends simple CORS request with Origin: http://localhost.attacker.com
  5. C2
    Flawed startswith check accepts the origin, no preflight required
  6. Execute
    tools/call executes file-write without authentication
  7. Impact
    Attacker-controlled agent instructions persist to victim's rule files
  8. Step 8
    All 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 praisonai mcp serve --transport http-stream - other transports such as stdio are not affected; (2) the MCP server must be in its default no-API-key configuration, which is the out-of-box state; (3) the victim must visit a webpage served from a domain whose DNS hostname begins with localhost or 127.0.0.1 (e.g., localhost.attacker.com), which causes modern browsers to send a matching Origin header; and (4) the attacker must control such a domain. Exploitation is bounded by the following limiting factors: user interaction is mandatory (victim must navigate to the attacker's page); the tools/call endpoint must be reachable from the victim's browser (default localhost binding satisfies this); and if the operator has configured an API key (auth_token), exploitation is blocked because CORS simple requests cannot include custom Authorization headers. Non-default transport configurations (stdio, WebSocket with independent auth) are not susceptible to this origin-bypass attack vector.

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 localhost.attacker.com and hosts a webpage containing JavaScript that issues a fetch POST to http://localhost:<port>/mcp with Content-Type: text/plain (a CORS simple request). When a developer running PraisonAI's MCP HTTP-stream server visits this page, their browser sends Origin: http://localhost.attacker.com, which the server's _validate_origin accepts because it starts with http://localhost. The forged request invokes a file-write MCP tool to create an agent instruction file with attacker-controlled content under the agent's rules directory, causing the victim's agent runtime to silently execute attacker instructions on every subsequent agent invocation. No public exploit code has been identified at time of analysis, but the GHSA advisory provides sufficient technical detail for straightforward reproduction.

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.9).
Patch available 0.1% exploitation probability (EPSS)

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

Alert me

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

PraisonAI < 4.6.58

Affected Packages

pypi praisonai fix: 4.6.58

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

Vendor (GitHub_M) PRIMARY 7.6 HIGH
AV:N/AC:L/PR:N/UI:R/S:U/C:L/I:H/A:L
vuln.today AI 7.6 HIGH

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.

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

Primary rating from Vendor (GitHub_M).

CVSS VectorVendor: GitHub_M

Attack Vector
Network
Attack Complexity
Low
Privileges Required
None
User Interaction
Required
Scope
Unchanged
Confidentiality
Low
Integrity
High
Availability
Low

Lifecycle Timeline

2
Patch available
Aug 25, 2026 - 17:17 EUVD
CVE Published
Aug 25, 2026 - 15:17 cve.org
HIGH 7.6

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

Why It Matters

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.

Business Impact: High
Compensating Controls

Apply vendor patch.

Threat Intelligence Overview

EPSS Score
0.1%
Top 97% exploitable
Prevalence
Low
niche AI developer tooling, limited production deployment footprint
Threat Intel
1
1 sources
Exploit
POC
Public exploit code exists
Data Quality
6 sources
Confidence: High
EUVD NVD CVE.org EPSS Vulnrichment GHSA GitHub

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 HIGH
CISA KEV No
Public POC Yes
EPSS 0.1%
Patch available Yes
Active threat No
Deciding rule
HIGH severity (CVSS 7.0-8.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
Scheduled
Exploitation
Poc
System Exposure· derived
Open
Automatable
No
Human Impact
High
Technical Impact
Partial

Priority Score

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

Attack Technique

Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.

CVE-2026-57139 CRITICAL POC
9.8 Sep 15

PraisonAI's TypeScript MCP server (npm package `praisonai`, versions 1.5.0 through 1.7.1) exposes an HTTP JSON-RPC trans

CVE-2026-55536 CRITICAL POC
9.1 Aug 25

WebSocket origin-validation bypass in PraisonAI's Browser Server (praisonai/browser/server.py) before 4.6.58 lets an att

CVE-2026-55541 HIGH POC
8.8 Aug 25

PraisonAI's `praisonai serve` subsystem (agents and unified modes) accepts an `--api-key` CLI flag that is parsed but ne

CVE-2026-55534 HIGH POC
8.6 Aug 25

Unauthenticated remote agent invocation in PraisonAI versions 4.6.34 through 4.6.57 allows any network-reachable caller

CVE-2026-55526 HIGH POC
8.5 Aug 25

SSRF protection bypass in PraisonAI's praisonaiagents library (all versions before 1.6.58) lets low-privileged users rou

CVE-2026-55533 HIGH POC
8.2 Aug 25

Authentication fail-open in PraisonAI's Recipe HTTP server allows unauthenticated remote attackers to invoke recipe exec

CVE-2026-55528 HIGH POC
8.2 Aug 25

Authentication bypass in PraisonAI's AgentServer component exposes all routes - /publish, /events, /info, /health - to u

CVE-2026-55522 HIGH POC
7.8 Aug 05

Arbitrary Python code execution in PraisonAI's workflow include feature allows an attacker who controls a local recipe d

CVE-2026-55523 HIGH POC
7.7 Aug 05

Server-side request forgery in PraisonAI's web_crawl() function (versions 1.5.128-1.6.57) allows an attacker who can inf

CVE-2026-44338 HIGH POC
7.3 May 08

Remote unauthenticated access to PraisonAI's legacy Flask API server allows attackers to execute configured agent workfl

CVE-2026-55527 HIGH POC
7.1 Aug 25

Path traversal in praisonaiagents prior to 1.6.58 allows a low-privileged caller to write arbitrary JSON files to any pr

CVE-2026-55535 MEDIUM POC
6.8 Aug 25

Server-Side Request Forgery in PraisonAI before version 4.6.58 allows unauthenticated remote attackers to force the appl

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