Findings

CVE-2026-34937

PraisonAI is a multi-agent teams system.

Published Apr 3, 2026 · updated Jul 24, 2026 · praison praisonaiagents

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 " " 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.

Code

The project this record applies to. Exploit listings stay in References.

No public source repository is identified for this product.

Timeline

Detection, updates, and resolution for this record.

  1. Apr 3, 2026 · NIST NVD

    Detected

    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 " " 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 iss

  2. Jul 24, 2026 · NIST NVD

    Updated

    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 " " 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 iss

Affected

  • cpe praison/praisonaiagentsversion unspecified

Sources

  • CVE.orgVulnerability recordCVE-2026-34937

    Official CVE identifier

    cve.org
  • NIST NVDVulnerability recordCVE-2026-34937

    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 " " and passing it to subprocess.run(..., shell=True). The escaping logic only handles \ and ",

    nvd.nist.gov

References