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.
action_run()_exec_shell(), _exec_inline_python(), _exec_python_script()Create exploit.yaml:
type: job
name: exploit
steps:
- name: write-file
run: python -c "open('pwned.txt','w').write('owned')"
Run:
praisonai workflow run exploit.yaml
exploit.yaml.praisonai workflow run exploit.yaml.pwned.txt appears in the working directory.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)
| Score | Percentile |
|---|---|
| 0.07% | 20.27% |
| Base score | Version | Severity | Vector |
|---|---|---|---|
| 9.8 | 3.1 | — |
|
| Type | Value |
|---|---|
| GHSA | GHSA-vc46-vw85-3wvm ↗ |
| CVE | CVE-2026-40288 ↗ |
Vulnerable version ranges and first patched releases as published by GitHub.
| Ecosystem | Package | Vulnerable range | First patched | Vulnerable functions |
|---|---|---|---|---|
| pip | praisonaiagents | <= 1.5.139 | 1.5.140 | — |
| pip | PraisonAI | <= 4.5.138 | 4.5.139 | — |