Skip to main content

PraisonAI EUVDEUVD-2026-108896

| CVE-2026-57142 HIGH
OS Command Injection (CWE-78)
2026-10-23 GitHub_M GHSA-7qw2-w5rc-37x2 PYSEC-2026-3505
7.8
CVSS 3.1 · Vendor: GitHub_M
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Operator runs untrusted steps recipe
  2. Exploit
    workflow.yaml self-approves execute_command via approve:
  3. Execution
    Bypass recipe dangerous-tool policy
  4. Impact
    Execute arbitrary shell as PraisonAI process

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A05:2025 - Injection
ASVS 5.0
V1 - Encoding and Sanitization OS command sanitization, avoid shell exec
MITRE ATT&CK

2 techniques across 1 tactic: Execution

The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up.

Exploitation Conditions

Requires an operator to execute an untrusted, attacker-authored steps-based recipe (hence UI:R) on an affected version (>=4.5.87, <4.6.61). The crafted recipe must: omit execute_command from TEMPLATE.yaml requires.tools (so it passes _check_tool_policy, which only inspects TEMPLATE.yaml), declare execute_command under workflow.yaml agents.*.tools, and set a top-level approve:[execute_command] that YAMLWorkflowParser preserves and Workflow.start()/set_yaml_approved_tools installs as approved. The caller must NOT have passed allow_dangerous_tools=True (if they had, the behavior is the intended opt-in). Limiting factors: exploitation is local by default and depends on the operator choosing to run the untrusted recipe, and actual command execution still depends on the model/agent tool-call path reaching execute_command - though the policy boundary is bypassed before that point. The bundled HTTP recipe runner defaults to localhost/no-auth and requires auth for non-localhost binding, so remote exploitation is only possible in non-default deployments that expose the API to users who can select recipe names/URIs.

Impact

Signals point to a real but conditional priority rather than a mass-exploitation emergency. The CVSS 3.1 base score is 7.8 (High) with vector AV:L/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H, so the headline severity is driven by full compromise (C:H/I:H/A:H via arbitrary shell execution) but gated by local vector and required user interaction - specifically an operator who runs an untrusted recipe. The vuln.today decision label is 'this_week', consistent with a serious issue that is not act_now/emergency. No EPSS score was supplied and the CVE is not listed in CISA KEV, so there is no evidence of active or widespread exploitation; the only exploitation artifact is the local PoV described in the GHSA advisory (a harmless printf canary with PRAISONAI_AUTO_APPROVE unset), which demonstrates the policy bypass deterministically but is a researcher reproduction rather than confirmed in-the-wild use. One tension to verify: the CVSS vector encodes AV:L, yet the advisory explicitly notes that an HTTP recipe-runner deployment exposed to authenticated users who choose recipe names/URIs could turn this into an authenticated remote recipe-execution issue - the vendor deliberately chose local/UI-required severity as the default claim, so network exploitability depends on non-default deployment and should be assessed per environment. Net: treat as a high-value supply-chain/untrusted-recipe risk for anyone running recipes from untrusted sources, but not an unauthenticated internet-facing RCE by default.

Exploit ScenarioDerived

An operator (or a user allowed to pick recipe names/URIs on a recipe-runner deployment) executes an attacker-authored steps-based recipe. The recipe omits execute_command from TEMPLATE.yaml requires.tools so it passes the dangerous-tool policy, but declares execute_command under workflow.yaml agents.*.tools with top-level approve:[execute_command]; Workflow.start() self-approves the critical shell tool and runs commands with the PraisonAI process privileges, even though the caller never set allow_dangerous_tools=True. A vendor PoV in the GHSA advisory reproduces the bypass locally (harmless printf canary), though it is not verified as weaponized exploit code.

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.9).
Patch available 0.2% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – Oct 23, 2026

PraisonAI recipe execution in versions 4.5.87 through 4.6.60 allows an untrusted steps-based recipe to self-approve the default-denied execute_command shell tool, so an operator who never set allow_dangerous_tools=True can still end up running arbitrary OS commands with the PraisonAI process's privileges. The recipe-level gate (CWE-78/CWE-863) inspects only TEMPLATE.yaml requires.tools, while workflow.yaml agents.*.tools declarations and a top-level approve: list are parsed by YAMLWorkflowParser and installed into the approval registry as already approved. Exploitation is local and user-interaction driven (CVSS 7.8, AV:L/UI:R, PR:N), a public proof-of-value reference exists in the advisory demonstrating the bypass with a harmless printf canary rather than verified working exploit code, and no active exploitation (CISA KEV) is reported for this this_week-priority issue.

RemediationAI

Vendor-released patch: upgrade praisonai to 4.6.61, which resolves the bypass by reconciling the workflow-resolved tool graph with the recipe dangerous-tool policy (advisory GHSA-7qw2-w5rc-37x2, https://github.com/MervinPraison/PraisonAI/security/advisories/GHSA-7qw2-w5rc-37x2). Until the upgrade is deployed, do not execute untrusted or third-party steps-based recipes: this is the only complete mitigation because the bypass lives in the policy check itself, and its cost is that recipe sharing and marketplace-style workflows become unusable from untrusted sources. Where recipes must be run, inspect workflow.yaml for agents.*.tools entries naming execute_command (or other default-denied tools) and for top-level approve: lists that pre-approve them; rejecting such recipes trades automation convenience for a manual review step. If the bundled HTTP recipe runner is exposed, keep it bound to localhost or, where non-localhost binding is required, behind authentication and restricted to operators who cannot freely choose recipe names or URIs, since authenticated users with that capability can convert the bypass into remote recipe execution. Operators should not rely on unsetting PRAISONAI_AUTO_APPROVE or on withholding allow_dangerous_tools=True as a workaround - the advisory's proof-of-value performs exactly that and still reaches the dry-run state with execute_command approved.

Affected VersionsENISA

PraisonAI 4.5.87, < 4.6.61

Affected Packages

pypi praisonai fix: 4.6.61

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 1 package in pypi

Checking this CVE against your own stacks and servers is part of the Basic plan and up.

Technical ContextAI · show details

PraisonAI's safety model relies on a human-in-the-loop approval registry: dangerous tools such as execute_command are marked with @require_approval(risk_level="critical") and are denied unless the caller explicitly opts in via options["allow_dangerous_tools"]=True. Two separate code paths undermine that model. recipe.run() calls _check_tool_policy(), which pulls its tool list from recipe_config.get_required_tools() - data backed exclusively by TEMPLATE.yaml requires.tools. For steps-based recipes, however, _execute_steps_workflow() loads workflow.yaml through YAMLWorkflowParser, which resolves agent-level tools: declarations and preserves the top-level approve: key into workflow.approve_tools; Workflow.start() then calls set_yaml_approved_tools() and the approval registry treats those YAML-declared tools as approved. The result is an authorization-scope gap (CWE-863) that yields command injection (CWE-78, related CWE-94) because the enforcement check never inspects the workflow file that actually supplies and authorizes the tool. A control recipe declaring requires.tools: [execute_command] is correctly denied with 'Tool execute_command is denied by default. Use allow_dangerous_tools=True to override.', while the bypass recipe omitting it from TEMPLATE.yaml passes policy and reaches the recipe runner's dry-run state with workflow_approve_tools and runner_tool_names both containing execute_command. Actual shell execution still depends on the agent/model tool-call path reaching the tool, but the policy boundary is already crossed at that point.

Know when Praisonai gets its next vulnerability

  • Watch products and get an email when something new is published
  • Check this CVE against your own stack and servers
  • Exploit and PoC references, threat intelligence from 22 sources

No credit card · 7-day full trial

Severity by source

Vendor (GitHub_M) PRIMARY 7.8 HIGH
AV:L/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H
vuln.today AI 7.8 HIGH

Operator must run an untrusted local recipe (AV:L, UI:R); no attacker privileges or auth on the runner are needed (PR:N), and arbitrary shell execution yields full C/I/A impact in the process scope.

3.1 AV:L/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H
4.0 AV:L/AC:L/AT:N/PR:N/UI:P/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N

Primary rating from Vendor (GitHub_M).

CVSS VectorVendor: GitHub_M

Attack Vector
Local
Attack Complexity
Low
Privileges Required
None
User Interaction
Required
Scope
Unchanged
Confidentiality
High
Integrity
High
Availability
High

Lifecycle Timeline

2
Patch available
Oct 23, 2026 - 14:02 EUVD
CVE Published
Oct 23, 2026 - 12:07 cve.org
HIGH 7.8

DescriptionCVE.org

PraisonAI is a multi-agent teams system. From version 4.5.87 to before version 4.6.61, PraisonAI recipe execution has a dangerous-tool policy that is supposed to block default-denied tools unless the caller explicitly passes allow_dangerous_tools=True. That policy only checks tools declared in TEMPLATE.yaml requires.tools. For steps-based recipes, the actual execution path loads workflow.yaml with YAMLWorkflowParser. That parser resolves agent-level tools: declarations and preserves top-level approve:. Workflow.start() then installs those YAML-approved tools into the approval context. As a result, an untrusted recipe can omit execute_command from TEMPLATE.yaml requires.tools, declare it in workflow.yaml agents.*.tools, and add top-level approve: [execute_command]. The caller did not set allow_dangerous_tools=True, but the recipe policy allows the recipe and the workflow approval path self-approves the critical shell tool. This issue has been patched in version 4.6.61.

Technical POC Analysis

Bug class: CWE-863 (incorrect authorization) implemented through a CWE-78 sink.

Full technical POC analysis - root cause, step-by-step exploitation and patch breakdown - is part of the Pro and Business plans.

Executive ViewAI

Why It Matters

PraisonAI versions 4.5.87 through 4.6.60 contain a high-severity vulnerability (CVE-2026-57142) that allows a crafted recipe to bypass intended safety controls and execute arbitrary operating system commands under the PraisonAI process's privileges. This could enable unauthorized actions on user workstations or shared systems, potentially compromising sensitive data or system integrity. Leadership should care because developers and operators using PraisonAI are at risk, and a public proof-of-value reference exists, increasing the likelihood of attempted exploitation.

Business Impact: High
Compensating Controls

No vendor-released patch identified at time of analysis. Interim mitigations: run PraisonAI with least privileges, restrict execution to trusted recipes, monitor for anomalous command execution, and isolate affected systems.

Threat Intelligence Overview

EPSS Score
0.2%
Top 91% exploitable
Prevalence
Low
emerging open-source multi-agent AI framework, limited production footprint
Data Quality
3 sources
Confidence: Low

How this decision was reached

The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.

SignalValue
Severity HIGH
CISA KEV No
Public POC No
EPSS 0.2%
Patch available Yes
Active threat No
Deciding rule
HIGH severity (CVSS 7.0-8.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Scheduled
Exploitation· derived
None
System Exposure· derived
Small
Automatable· derived
No
Human Impact
High

Priority Score

39
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +39
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

OS command injection occurs when an application passes unsanitized user input directly into system shell commands.

CVE-2026-61447 CRITICAL POC
10.0 Jul 11

Remote code execution in PraisonAI before 1.6.78 allows attackers to run arbitrary Python on the host by manipulating th

CVE-2026-57139 CRITICAL POC
9.8 Sep 15

PraisonAI's TypeScript MCP server (npm package `praisonai`, versions 1.5.0 through 1.7.1) exposes an HTTP JSON-RPC trans

CVE-2026-55536 CRITICAL POC
9.1 Aug 25

WebSocket origin-validation bypass in PraisonAI's Browser Server (praisonai/browser/server.py) before 4.6.58 lets an att

CVE-2026-55541 HIGH POC
8.8 Aug 25

PraisonAI's `praisonai serve` subsystem (agents and unified modes) accepts an `--api-key` CLI flag that is parsed but ne

CVE-2026-61439 HIGH POC
8.7 Jul 11

System prompt extraction and unauthorized tool invocation in PraisonAI before 4.6.78 arise because the prompt-injection

CVE-2026-55534 HIGH POC
8.6 Aug 25

Unauthenticated remote agent invocation in PraisonAI versions 4.6.34 through 4.6.57 allows any network-reachable caller

CVE-2026-55526 HIGH POC
8.5 Aug 25

SSRF protection bypass in PraisonAI's praisonaiagents library (all versions before 1.6.58) lets low-privileged users rou

CVE-2026-61429 HIGH POC
8.4 Jul 11

Server-side request forgery in PraisonAI's Crawl4AI/Chromium crawling backend (all versions before 1.6.78) lets low-priv

CVE-2026-55533 HIGH POC
8.2 Aug 25

Authentication fail-open in PraisonAI's Recipe HTTP server allows unauthenticated remote attackers to invoke recipe exec

CVE-2026-55528 HIGH POC
8.2 Aug 25

Authentication bypass in PraisonAI's AgentServer component exposes all routes - /publish, /events, /info, /health - to u

CVE-2026-55522 HIGH POC
7.8 Aug 05

Arbitrary Python code execution in PraisonAI's workflow include feature allows an attacker who controls a local recipe d

CVE-2026-55523 HIGH POC
7.7 Aug 05

Server-side request forgery in PraisonAI's web_crawl() function (versions 1.5.128-1.6.57) allows an attacker who can inf

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy