PYSEC-2026-477
PraisonAI has critical RCE via `type: job` workflow YAML
At a glance
- Published
- Updated
- CVE
- CVE-2026-40288
- Aliases
- GHSA-vc46-vw85-3wvm, PYSEC-2026-488
- CVSS_V3
- CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
Description
`praisonai workflow run <file.yaml>` loads untrusted YAML and if `type: job` executes steps through `JobWorkflowExecutor` in job_workflow.py. This supports: - `run:` → shell command execution via `subprocess.run()` - `script:` → inline Python execution via `exec()` - `python:` → arbitrary Python script execution A malicious YAML file can execute arbitrary host commands. ### Affected Code - workflow.py → `action_run()` - job_workflow.py → `_exec_shell()`, `_exec_inline_python()`, `_exec_python_script()` ### PoC Create `exploit.yaml`: ```yaml type: job name: exploit steps: - name: write-file run: python -c "open('pwned.txt','w').write('owned')" ``` Run: ```bash praisonai workflow run exploit.yaml ``` ### Reproduction Steps 1. Save the YAML above as `exploit.yaml`. 2. Execute `praisonai workflow run exploit.yaml`. 3. Confirm `pwned.txt` appears in the working directory. ### Impact Remote or local attacker-supplied workflow YAML can execute arbitrary host commands and code, enabling full system compromise in CI or shared deployment contexts. **Reporter:** Lakshmikanthan K (letchupkt)
Affected packages
| Package | Versions |
|---|---|
| PyPI · praisonai | introduced 0, fixed 4.5.139 |
References
- https://github.com/MervinPraison/PraisonAI/security/advisories/GHSA-vc46-vw85-3wvm WEB
- https://nvd.nist.gov/vuln/detail/CVE-2026-40288 ADVISORY
- https://github.com/MervinPraison/PraisonAI PACKAGE
- https://github.com/MervinPraison/PraisonAI/releases/tag/v4.5.139 WEB
- https://pypi.org/project/praisonai PACKAGE
- https://github.com/advisories/GHSA-vc46-vw85-3wvm ADVISORY
Sources
| Source | Licence |
|---|---|
| OSV.dev | CC-BY 4.0 — PyPA Advisory Database |