<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>PraisonAI (&gt;= 4.5.87, &lt; 4.6.61) - CraftedSignal Threat Feed</title><link>https://feed.craftedsignal.io/products/praisonai--4.5.87--4.6.61/</link><description>Trending threats, MITRE ATT&amp;CK coverage, and detection metadata. Fed continuously.</description><generator>Hugo</generator><language>en</language><managingEditor>hello@craftedsignal.io</managingEditor><webMaster>hello@craftedsignal.io</webMaster><lastBuildDate>Thu, 18 Jun 2026 15:01:53 +0000</lastBuildDate><atom:link href="https://feed.craftedsignal.io/products/praisonai--4.5.87--4.6.61/feed.xml" rel="self" type="application/rss+xml"/><item><title>PraisonAI Recipe Policy Bypass via YAML Workflow Approval</title><link>https://feed.craftedsignal.io/briefs/2026-06-praisonai-policy-bypass/</link><pubDate>Thu, 18 Jun 2026 15:01:53 +0000</pubDate><author>hello@craftedsignal.io</author><guid isPermaLink="true">https://feed.craftedsignal.io/briefs/2026-06-praisonai-policy-bypass/</guid><description>A policy bypass vulnerability in PraisonAI (CVE-NONE) allows untrusted recipes to self-approve and execute default-denied critical shell tools, such as `execute_command`, by declaring them in `workflow.yaml` instead of `TEMPLATE.yaml requires.tools`, leading to arbitrary command execution with the privileges of the PraisonAI process.</description><content:encoded><![CDATA[<p>A critical policy bypass vulnerability affects PraisonAI, a recipe execution platform, specifically versions <code>v4.5.87</code> through <code>v4.6.57</code>. The platform's security model intends to block &quot;dangerous tools&quot; (e.g., <code>execute_command</code>) unless an operator explicitly allows them via <code>allow_dangerous_tools=True</code>. However, an untrusted recipe can circumvent this control. By crafting a <code>workflow.yaml</code> that declares a default-denied tool within an agent's <code>tools</code> section and simultaneously using a top-level <code>approve:</code> directive, the recipe can effectively self-approve the dangerous tool. This bypasses the initial security policy that only checks <code>TEMPLATE.yaml requires.tools</code>, enabling the recipe to execute arbitrary commands without operator consent. The vulnerability affects both local CLI usage and HTTP recipe-runner deployments, with potentially higher severity if exposed to authenticated users.</p>
<h2 id="attack-chain">Attack Chain</h2>
<ol>
<li><strong>Attacker crafts malicious PraisonAI recipe</strong>: The attacker prepares a recipe consisting of a <code>workflow.yaml</code> that declares a default-denied critical tool (e.g., <code>execute_command</code>) under an agent's <code>tools</code> section and includes <code>approve: [execute_command]</code> at the top level, while ensuring the <code>TEMPLATE.yaml requires.tools</code> section does not list any dangerous tools.</li>
<li><strong>Operator runs untrusted recipe</strong>: An operator or user runs the attacker-controlled recipe through the PraisonAI local CLI or an exposed HTTP recipe runner, critically without specifying <code>allow_dangerous_tools=True</code>.</li>
<li><strong>Initial policy check bypassed</strong>: <code>PraisonAI</code>'s <code>_check_tool_policy()</code> function inspects only the <code>TEMPLATE.yaml requires.tools</code> list. Since the malicious <code>workflow.yaml</code> avoids listing dangerous tools there, the recipe passes this initial security gate.</li>
<li><strong><code>YAMLWorkflowParser</code> processes <code>workflow.yaml</code></strong>: During the <code>_execute_steps_workflow()</code> phase, <code>YAMLWorkflowParser</code> parses the <code>workflow.yaml</code>, resolving agent-level <code>tools:</code> declarations and extracting the top-level <code>approve:</code> directives.</li>
<li><strong>Workflow self-approves dangerous tools</strong>: The <code>Workflow.start()</code> method invokes <code>set_yaml_approved_tools()</code>, which registers the tools specified in the <code>approve:</code> directive (including the dangerous <code>execute_command</code>) within the application's approval context, effectively self-approving them.</li>
<li><strong>Agent executes dangerous command</strong>: When the PraisonAI agent within the workflow attempts to utilize the <code>execute_command</code> tool, it is treated as pre-approved due to the bypass, allowing the agent to proceed with its execution.</li>
<li><strong>Arbitrary command execution</strong>: The <code>execute_command</code> tool then executes arbitrary operating system commands specified by the attacker within the <code>workflow.yaml</code>, inheriting the privileges of the underlying PraisonAI process.</li>
<li><strong>Impact</strong>: This unapproved command execution can lead to remote code execution, data exfiltration, system compromise, or facilitate further lateral movement within the compromised environment.</li>
</ol>
<h2 id="impact">Impact</h2>
<p>This policy bypass allows an untrusted recipe to execute arbitrary commands with the privileges of the PraisonAI process. If an operator runs such a recipe, or if a PraisonAI HTTP recipe runner is exposed to users who can choose recipe names or URIs, successful exploitation can lead to full system compromise. The exact trigger for command execution depends on the specific workflow and model/tool-call path, but the core policy boundary is breached before execution. This impacts both local CLI usage of PraisonAI and deployments utilizing the HTTP recipe runner, potentially escalating to an authenticated remote execution issue if the API is accessible.</p>
<h2 id="recommendation">Recommendation</h2>
<ul>
<li><strong>Patch <code>PraisonAI</code></strong>: Upgrade <code>PraisonAI</code> to version <code>4.6.61</code> or later immediately to address the vulnerability described in the GHSA advisory.</li>
<li><strong>Monitor <code>process_creation</code> logs</strong>: Deploy the Sigma rules provided in this brief to detect suspicious command execution originating from <code>PraisonAI</code> processes.</li>
<li><strong>Enable Sysmon logging</strong>: Ensure Sysmon process creation and command line logging (Event ID 1) is enabled on all Windows systems running PraisonAI to facilitate detection of spawned shell processes.</li>
</ul>
]]></content:encoded><category domain="severity">high</category><category domain="type">advisory</category><category>application-vulnerability</category><category>policy-bypass</category><category>remote-code-execution</category><category>praisonai</category><category>python</category></item></channel></rss>