Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessIdentify exposed MCP HTTP Stream endpoint
-
DeliverySend unauthenticated initialize POST requests in high volume
-
ExploitAccumulate unbounded session dict entries in self._sessions
-
ExecutionExhaust process heap memory
-
ImpactOOM killer terminates PraisonAI service
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A06:2025 - Insecure Design
ASVS 5.0
V2 - Validation and Business Logic Resource consumption limits
MITRE ATT&CK
1 technique across 1 tactic: Impact The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | The MCP HTTP Stream server component must be running and network-reachable. In the default configuration no API key is set, so the server accepts initialize requests from any caller without authentication. The Origin header check is the only access gate, but the GHSA advisory confirms that requests with no Origin header are accepted unconditionally, and a separate startswith bypass exists for malformed Origin values. Exploitation requires only the ability to send HTTP POST requests to the MCP endpoint. What limits exploitation: the vulnerability is only present when the MCP HTTP Stream transport is actively deployed, not in base PraisonAI installations that do not use this component; configuring auth_token introduces required Bearer token validation and is an effective compensating control; binding the MCP server to localhost or a private interface restricts the attacker surface to co-located or local-network parties. |
| Impact | The NVD-provided CVSS 3.1 vector scores 6.5 (Medium) with UI:R, suggesting the original scorer weighted the browser-based CSRF-like attack path that exploits a companion Origin-header startswith validation bypass requiring a victim to visit a malicious page. However, the GHSA advisory explicitly states that HTTP requests carrying no Origin header are accepted by the server, establishing a direct unauthenticated attack path with no user interaction required - correctly characterized as UI:N, which yields 7.5 (High). No EPSS data was provided in the input and the CVE is absent from CISA KEV, so active exploitation is unconfirmed. The attack is trivially automatable in default configurations because no API key is required unless explicitly set, and the only guard (Origin validation) is bypassable or entirely absent for direct HTTP clients. The blast radius is limited to availability - there is no known confidentiality or integrity impact - but a single attacker can crash an exposed PraisonAI MCP service without any credentials, making this a real operational priority for internet-facing deployments. |
| Exploit ScenarioDerived | An attacker with network access to the exposed PraisonAI MCP HTTP Stream port sends a high-volume loop of HTTP POST initialize requests using any standard HTTP client or scripting tool. Because no API key is configured by default and no Origin header is required for direct requests, each request is accepted and a new dictionary is inserted into self._sessions with no eviction. After sufficient volume, the Python process heap is exhausted and the operating system OOM killer terminates it, taking down the multi-agent service. No public proof-of-concept has been identified at time of analysis. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Aug 25, 2026
Memory exhaustion in PraisonAI's MCP HTTP Stream server allows remote unauthenticated attackers to crash the service by flooding the initialize endpoint with requests. Each initialize call unconditionally appends a new dictionary to self._sessions with no eviction: the cleanup routine _cleanup_sessions is defined but has zero call sites in versions prior to 4.6.58, and the configured TTL is stored but never enforced. No public exploit is identified at time of analysis, but the attack requires only standard HTTP tooling against default deployments where no API key is configured.
RemediationAI
Upgrade to PraisonAI 4.6.58 or later via pip install 'praisonai>=4.6.58'; the patched release is confirmed at https://github.com/MervinPraison/PraisonAI/releases/tag/v4.6.58. The fix (commit 2f9677abb2ea68eab864ee8b6a828fd0141612e1) wires _cleanup_sessions into actual request processing and introduces the PRAISONAI_MCP_MAX_SESSIONS environment variable to enforce a session ceiling. If immediate upgrade is not possible, two compensating controls are available: first, configure an API key (auth_token) so that the new _authorise_request enforcement requires a valid Bearer token for all MCP requests - this eliminates the unauthenticated surface but requires all legitimate clients to be updated with credentials; second, restrict network access to the MCP HTTP Stream port using firewall rules or a reverse proxy ACL so only trusted source IPs can reach the endpoint - this reduces exposure without modifying application configuration but does not protect against insider or co-located threats.
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 (CPE: cpe:2.3:a:mervinpraison:praisonai) that implements a Model Context Protocol (MCP) HTTP Stream transport in transports/http_stream.py. The root cause is CWE-400 (Uncontrolled Resource Consumption): the mcp_post handler unconditionally appends a new session dictionary to self._sessions on every initialize message without invoking _cleanup_sessions or checking a session count ceiling. The session_ttl field (default 3600 seconds) is stored as an instance attribute but is never evaluated at request time or on a background timer. A parallel defect exists in the notifications/cancelled handler inside server.py, which accumulates cancellation IDs in an unbounded self._cancelled_requests set that is never cleared. Both structures grow in proportion to attacker-controlled request volume, consuming heap memory until the OS OOM killer terminates the process.
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:N/I:N/A:H
Direct HTTP requests with no Origin header are accepted per the advisory, making UI:N correct; no auth required by default (PR:N); impact is availability only.
Primary rating from Vendor (GitHub_M).
CVSS VectorVendor: GitHub_M
Lifecycle Timeline
1DescriptionCVE.org
PraisonAI is a multi-agent teams system. Prior to praisonai 4.6.58, the MCP HTTP Stream mcp_post handler creates a new _sessions entry for every initialize request but does not call _cleanup_sessions or enforce a maximum. An unauthenticated caller can exhaust memory. The fix invokes cleanup and limits sessions through PRAISONAI_MCP_MAX_SESSIONS. This issue is fixed in version 4.6.58.
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
Denial of Service attacks render applications or systems unavailable by overwhelming resources or triggering failure conditions.
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
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
EUVD-2026-65498
GHSA-wv94-5qcp-6m36
NVD
CVE.org
EPSS
Vulnrichment
Exploit-DB