Remote command execution In praisonaiagents
Description
PraisonAI has critical RCE via type: job workflow YAML
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:
type: job name: exploit steps: - name: write-file run: python -c "open('pwned.txt','w').write('owned')"
Run:
praisonai workflow run exploit.yaml
Reproduction Steps
Save the YAML above as exploit.yaml.
Execute praisonai workflow run exploit.yaml.
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)
Mitigation
Update Impact
Minimal update. May introduce new vulnerabilities or breaking changes.
Ecosystem | Component | Affected version | Patched versions |
|---|---|---|---|
pypi | 1.5.140 | ||
pypi | 4.5.139 |
Aliases
References