Description
PraisonAI is a multi-agent teams system. Prior to version 1.5.90, run_python() in praisonai constructs a shell command string by interpolating user-controlled code into python3 -c "<code>" and passing it to subprocess.run(..., shell=True). The escaping logic only handles \ and ", leaving $() and backtick substitutions unescaped, allowing arbitrary OS command execution before Python is invoked. This issue has been patched in version 1.5.90.
Published: 2026-04-03
Score: 7.8 High
EPSS: < 1% Very Low
KEV: No
Impact: Remote Code Execution
Action: Immediate Patch
AI Analysis

Impact

PraisonAI's run_python() function constructs a shell command by directly interpolating potentially untrusted Python code into a string passed to subprocess.run with shell=True. The escape routine only handles backslashes and double quotes, leaving $() and backtick substitutions untouched. An attacker can inject these shell substitutions to trigger arbitrary operating system commands before Python even starts, thereby achieving complete code execution on the host where the agent runs. The vulnerability is scored CVSS 7.8, indicating a high impact on confidentiality, integrity, and availability.

Affected Systems

The affected product is PraisonAI from MervinPraison. Any installation running a version earlier than 1.5.90 is vulnerable. The issue has been fixed by upgrading to version 1.5.90 or later.

Risk and Exploitability

Although the exploitation probability (EPSS) is less than 1% and the vulnerability is not listed in the CISA KEV catalog, the nature of the flaw—arbitrary command execution—makes it a serious threat. An attacker only needs to supply malicious code to run_python, which, if interpreted by the vulnerable agent, will run arbitrary OS commands. The risk is considerable, especially in environments where PraisonAI agents have elevated privileges or handle sensitive data.

Generated by OpenCVE AI on April 14, 2026 at 21:05 UTC.

Remediation

No vendor fix or workaround currently provided.

OpenCVE Recommended Actions

  • Apply the vendor-provided update to PraisonAI version 1.5.90 or newer.

Generated by OpenCVE AI on April 14, 2026 at 21:05 UTC.

Tracking

Sign in to view the affected projects.

Advisories
Source ID Title
Github GHSA Github GHSA GHSA-w37c-qqfp-c67f PraisonAI: Shell Injection in run_python() via Unescaped $() Substitution
History

Tue, 14 Apr 2026 18:15:00 +0000

Type Values Removed Values Added
First Time appeared Praison
Praison praisonaiagents
CPEs cpe:2.3:a:praison:praisonaiagents:*:*:*:*:*:*:*:*
Vendors & Products Praison
Praison praisonaiagents

Tue, 07 Apr 2026 00:00:00 +0000

Type Values Removed Values Added
First Time appeared Mervinpraison
Mervinpraison praisonai
Vendors & Products Mervinpraison
Mervinpraison praisonai

Mon, 06 Apr 2026 16:45:00 +0000

Type Values Removed Values Added
Metrics ssvc

{'options': {'Automatable': 'no', 'Exploitation': 'poc', 'Technical Impact': 'total'}, 'version': '2.0.3'}


Sat, 04 Apr 2026 00:00:00 +0000

Type Values Removed Values Added
Description PraisonAI is a multi-agent teams system. Prior to version 1.5.90, run_python() in praisonai constructs a shell command string by interpolating user-controlled code into python3 -c "<code>" and passing it to subprocess.run(..., shell=True). The escaping logic only handles \ and ", leaving $() and backtick substitutions unescaped, allowing arbitrary OS command execution before Python is invoked. This issue has been patched in version 1.5.90.
Title PraisonAI: Shell Injection in run_python() via Unescaped $() Substitution
Weaknesses CWE-78
References
Metrics cvssV3_1

{'score': 7.8, 'vector': 'CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H'}


Subscriptions

Mervinpraison Praisonai
Praison Praisonaiagents
cve-icon MITRE

Status: PUBLISHED

Assigner: GitHub_M

Published:

Updated: 2026-04-06T16:08:09.657Z

Reserved: 2026-03-31T17:27:08.660Z

Link: CVE-2026-34937

cve-icon Vulnrichment

Updated: 2026-04-06T16:07:59.743Z

cve-icon NVD

Status : Analyzed

Published: 2026-04-03T23:17:06.020

Modified: 2026-04-14T18:09:51.993

Link: CVE-2026-34937

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-04-15T16:30:09Z

Weaknesses