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.
The MCP server (`praisonai mcp serve`) registers four file handling tools that accept a path or filename parameter from JSON-RPC call arguments and combine it directly with the `~/.praison/rules/` directory without any containment check. The JSON-RPC dispatcher passes the `params["arguments"]` parameters directly to each handler without validation against the declared input schema. An attacker can set the value `rule_name="../../<any-path>"`, which allows escaping the rules directory and writing a file to any location accessible to the current user. Placing a malicious `.pth` file in the user's `site-packages` directory results in execution of arbitrary Python code every time a Python process is subsequently launched — including when invoking the `praisonai` CLI, running a script in an IDE, a REPL session, or a background-running Python service.
An attacker can write arbitrary files within the scope of permissions of the running user, and by writing a malicious `.pth` file to the `site-packages` directory, can gain persistent and automatic execution of arbitrary code in all subsequent Python processes of that user.
PraisonAI must be updated to version 4.6.34 or later, in which the vendor introduced appropriate path validation mechanisms. Details are available in the vendor's references: https://github.com/MervinPraison/PraisonAI/security/advisories/GHSA-9mqq-jqxf-grvw
PraisonAI (Praison product) in versions prior to 4.6.34 that use the MCP server functionality (`praisonai mcp serve`).
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/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:XPraison Praisonai
APPPraison< 4.6.34
Related vulnerabilities
Command Injection w PraisonAI — brak walidacji poleceń MCP
PraisonAI — RCE i command injection przez niezaufowane pliki YAML
PraisonAI – wyciek tokenów GitHub przez atak ArtiPACKED w CI/CD
PraisonAI – nieuwierzytelnione przejęcie sesji przeglądarki przez WebSocket
Path traversal w PraisonAI — nadpisywanie plików przez złośliwy pakiet .praison