Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessCraft malicious MCP JSON-RPC request
-
DeliveryUser/agent triggers tool call with traversal path
-
ExploitServer writes .pth file to site-packages
-
ExecutionUser spawns new Python process
-
PersistInterpreter executes .pth payload
-
ImpactArbitrary code runs as user
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A05:2025 - Injection
ASVS 5.0
V2 - Validation and Business Logic Input validation, allowlisting
|
| Exploitation Conditions | Requires the PraisonAI MCP server component to be actively running via 'praisonai mcp serve' command - this is NOT enabled by default and must be explicitly started by the user. The victim user or an AI agent under their control must invoke one of the vulnerable MCP tools (praisonai.rules.create, praisonai.rules.delete, or praisonai.workflow.show) with attacker-controlled path arguments, typically through a compromised AI workflow, malicious integration, or social engineering of the user to process untrusted MCP commands. The running user must have write permissions to Python site-packages directories (~/.local/lib/python*/site-packages on Linux/macOS or AppData\Roaming\Python on Windows) for full code execution escalation; without site-packages access, the impact reduces to arbitrary file write in user-writable locations. Exploitation is limited to scenarios where MCP tool call parameters can be influenced by untrusted sources, which constrains the attack to multi-tenant AI platforms, AI agent systems processing external inputs, or environments where users are tricked into running malicious MCP commands. |
| Impact | Real-world risk requires careful contextualization of the 9.4 CVSS score. The CVSS:4.0 vector shows maximum impact (VC:H/VI:H/VA:H/SC:H/SI:H/SA:H) across confidentiality, integrity, and availability for both vulnerable and subsequent systems, indicating full system compromise potential. Attack vector is network-based (AV:N) with low complexity (AC:L) and no required privileges (PR:N), but critically requires user interaction (UI:P) - the user must trigger MCP tool calls with attacker-controlled arguments, likely through a compromised AI agent workflow or social engineering. No EPSS score provided, but absence from CISA KEV and no public POC suggests limited current exploitation. The detailed GitHub security advisory (GHSA-9mqq-jqxf-grvw) provides exploitation mechanics, lowering the barrier for capable attackers. Primary risk is in environments where untrusted users or AI agents can invoke PraisonAI MCP tools with arbitrary parameters, particularly multi-tenant AI development platforms or systems processing untrusted AI workflows. Organizations not running the mcp serve component or not exposing MCP tool calls to untrusted sources face minimal risk despite the high CVSS. |
| Exploit ScenarioDerived | An attacker crafts a malicious MCP tool call JSON-RPC request targeting a PraisonAI MCP server, setting rule_name parameter to '../../.local/lib/python3.11/site-packages/malicious.pth' in the praisonai.rules.create tool. The server writes attacker-controlled content (Python code) to this traversed path without validation. When the victim user next launches any Python process (running 'praisonai' command, opening a Python IDE, or executing background Python services), the Python interpreter loads malicious.pth during initialization and executes the embedded code with the user's full privileges, establishing persistence and potentially pivoting to other systems accessible from the compromised account. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – May 08, 2026
Arbitrary file write in PraisonAI's MCP server escalates to remote code execution through path traversal when user interaction triggers malicious tool calls. The praisonai mcp serve daemon accepts attacker-controlled path arguments without validation, allowing writes outside the intended ~/.praison/rules/ directory. Attackers can drop Python .pth files into site-packages to achieve code execution in any subsequent Python process run by the victim user. CVSS 9.4 with network vector and low complexity, though exploitation requires user interaction (PR:N/UI:P). No active exploitation confirmed (not in CISA KEV) and no public POC identified at time of analysis, but the detailed advisory provides sufficient information for weaponization.
RemediationAI
Upgrade to PraisonAI version 4.6.34 or later, which patches the path traversal vulnerability through input validation and path containment checks in MCP tool handlers. Installation via pip: 'pip install --upgrade praisonai>=4.6.34'. If immediate patching is not possible, implement these compensating controls with noted trade-offs: (1) Disable the MCP server component entirely by not running 'praisonai mcp serve' - this breaks MCP-dependent workflows but eliminates the attack surface. (2) Run the MCP server under a restricted user account with no write access to Python site-packages directories (typically ~/.local/lib/python*/site-packages or system /usr/lib/python*) - this prevents privilege escalation to code execution but still allows arbitrary file writes in user-writable locations, potentially corrupting application data. (3) Deploy mandatory access control (AppArmor/SELinux profiles) restricting the praisonai process from writing outside ~/.praison/ - requires kernel-level MAC support and custom profile development. Verify the patch by reviewing https://github.com/MervinPraison/PraisonAI/security/advisories/GHSA-9mqq-jqxf-grvw for the specific commit implementing path validation.
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 implements a Model Context Protocol (MCP) server that exposes file-handling tools through JSON-RPC interfaces. The vulnerability stems from CWE-20 (Improper Input Validation) where the server's tool handlers (praisonai.rules.create, praisonai.rules.show, praisonai.rules.delete, praisonai.workflow.show) accept filename parameters and perform path concatenation using os.path.join or similar without canonicalization or containment checks. The JSON-RPC dispatcher passes params['arguments'] directly to handler functions via **kwargs unpacking, bypassing any schema validation that may exist in the tool definitions. Python's site-packages .pth mechanism executes arbitrary code during interpreter initialization by processing each line as executable Python or as import statements, converting a path traversal primitive into reliable code execution. This affects the PraisonAI Python package when the MCP server component is running.
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
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:P/VC:H/VI:H/VA:H/SC:H/SI:H/SA:H
Primary rating from GitHub Advisory · only source for this CVE.
CVSS VectorGitHub Advisory
Lifecycle Timeline
2DescriptionGitHub Advisory
PraisonAI is a multi-agent teams system. Prior to version 4.6.34, PraisonAI's MCP (Model Context Protocol) server (praisonai mcp serve) registers four file-handling tools by default - praisonai.rules.create, praisonai.rules.show, praisonai.rules.delete, and praisonai.workflow.show. Each accepts a path or filename string from MCP tools/call arguments and joins it onto ~/.praison/rules/ (or, for workflow.show, accepts an absolute path) with no containment check. The JSON-RPC dispatcher passes params["arguments"] blind to each handler via **kwargs without validating against the advertised input schema. By setting rule_name="../../<some-path>" an attacker walks out of the rules directory and writes any file the running user can write. Dropping a Python .pth file into the user site-packages directory escalates this primitive to arbitrary code execution in any subsequent Python process the user spawns - the next praisonai CLI invocation, an IDE script run, the user's python REPL, or any background Python service. This issue has been patched in version 4.6.34.
Executive ViewAI
CVE-2026-44336 is a critical arbitrary file write vulnerability in PraisonAI's MCP server that allows unauthenticated attackers to achieve remote code execution on systems running the affected daemon. An attacker can manipulate file paths to write malicious Python files into system directories, compromising any Python processes executed by the victim user. This poses significant risk to organizations using PraisonAI for AI-assisted development or automation, as successful exploitation grants persistent code execution capabilities.
No vendor-released patch identified at time of analysis. Interim mitigations: (1) Disable praisonai mcp serve daemon entirely until patch availability; (2) If daemon must remain active, enforce strict input validation on tool call parameters and reject any path arguments containing traversal sequences (../, .., encoded variants); (3) Restrict daemon execution to isolated user accounts with minimal Python package directories; (4) Monitor site-packages directories for unauthorized .pth file creation; (5) Implement file integrity monitoring on Python installation directories.
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
Remote Code Execution represents the critical moment when an attacker successfully runs arbitrary code on a target system without physical access.
Remote code execution in PraisonAI before 1.6.78 allows attackers to run arbitrary Python on the host by manipulating th
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
System prompt extraction and unauthorized tool invocation in PraisonAI before 4.6.78 arise because the prompt-injection
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
Server-side request forgery in PraisonAI's Crawl4AI/Chromium crawling backend (all versions before 1.6.78) lets low-priv
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
EUVD-2026-28639
GHSA-9mqq-jqxf-grvw
NVD
CVE.org
EPSS
Vulnrichment
Exploit-DB