Read the docs
TI-2026-28937 Aliases CVE-2026-40111GHSA-v7px-3835-7gjx

PraisonAIAgents has an OS Command Injection via shell=True in Memory Hooks Executor (memory/hooks.py)

Priority HIGH 75CWE-78Published · Updated

Key facts

Attack vector
Local
Privileges required
Low
User interaction
None
Attack complexity
Low
Attack requirements
None
Impact type
Code execution
Confidentiality · integrity · availability
High · High · High
Fix status
Fixed

Attack profile from CVSS 4.0 · CNA. Fix status from CNA and GitHub. Impact type from CWE-78.

Summary

PraisonAIAgents is a multi-agent teams system. Prior to 1.5.128, he memory hooks executor in praisonaiagents passes a user-controlled command string directly to subprocess.run() with shell=True at src/praisonai-agents/praisonaiagents/memory/hooks.py. No sanitization is performed and shell metacharacters are interpreted by /bin/sh before the intended command executes. Two independent attack surfaces exist. The first is via pre_run_command and post_run_command hook event types registered through the hooks configuration. The second and more severe surface is the .praisonai/hooks.json lifecycle configuration, where hooks registered for events such as BEFORE_TOOL and AFTER_TOOL fire automatically during agent operation. An agent that gains file-write access through prompt injection can overwrite .praisonai/hooks.json and have its payload execute silently at every subsequent lifecycle event without further user interaction. This vulnerability is fixed in 1.5.128.

Why it matters now

Exploitation Proof of concept CISA SSVC · not in CISA KEV
EPSS 0.00238 14th percentileScored 2026-11-07
Public exploit Yes 1 exploit referenceTagged by NVD
Fix Fixed PraisonAIAgents (MervinPraison): 1.5.128praisonaiagents (PyPI): 1.5.128

SSVC decision points

CISA ADP · SSVC 2.0.3

Exploitation
Poc
Automatable
No
Technical impact
Total

The decision (Track, Attend, Act) also depends on your mission and well-being impact; see CISA's SSVC guide.

Affected products

VendorProductAffected versionsFixed inStatusSource
MervinPraisonPraisonAIAgentsbefore 1.5.1281.5.128Patch availableCNA
—praisonaiagents (PyPI)before 1.5.1281.5.128Patch availableGHSA-v7px-3835-7gjx
  • PraisonAIAgents VendorMervinPraison Affected before 1.5.128 Fixed in 1.5.128 Patch available CNA
  • praisonaiagents (PyPI) Vendor— Affected before 1.5.128 Fixed in 1.5.128 Patch available GHSA-v7px-3835-7gjx

CPE configurations NVD · 1

CPEVersionsRoleVendor
cpe:2.3:a:praison:praisonaiagents:*:*:*:*:*:*:*:*before 1.5.128VulnerableMervinPraison
  • cpe:2.3:a:praison:praisonaiagents:*:*:*:*:*:*:*:* Versions before 1.5.128 Vulnerable ·MervinPraison

Remediation

  • Fix · CNA PraisonAIAgents (MervinPraison) Fixed in 1.5.128
  • Fix · GHSA-v7px-3835-7gjx praisonaiagents (PyPI) Fixed in 1.5.128 Advisory →

Timeline

  1. 2026-10-02 Threatist record created from CVE-2026-40111
  2. 2026-10-03 Alias added: GHSA-v7px-3835-7gjx

References

  • TI-2026-29070 PraisonAI: Critical RCE via `type: job` workflow YAML CVSS 3.1CRITICAL 9.8
  • TI-2026-27162 PraisonAI: Python Sandbox Escape via str Subclass startswith() Override in execute_code CVSS 3.1CRITICAL 10.0
  • TI-2026-29071 PraisonAI Browser Server allows unauthenticated WebSocket clients to hijack connected extension sessions CVSS 3.1CRITICAL 9.1
  • TI-2026-32306 PraisonAI has unsafe tool resolution in `ToolExecutionMixin.execute_tool`: undeclared `__main__` callables execute CVSS 3.1HIGH 8.6
  • TI-2026-27178 PraisonAI: SSRF in FileTools.download_file() via Unvalidated URL CVSS 3.1HIGH 8.6
  • TI-2026-27161 PraisonAI: Shell Injection in run_python() via Unescaped $() Substitution CVSS 3.1CRITICAL 9.8
See all 14 →

Sources