<?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 (&lt;= 4.6.36) — CraftedSignal Threat Feed</title><link>https://feed.craftedsignal.io/products/praisonai--4.6.36/</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>Mon, 11 May 2026 14:01:58 +0000</lastBuildDate><atom:link href="https://feed.craftedsignal.io/products/praisonai--4.6.36/feed.xml" rel="self" type="application/rss+xml"/><item><title>PraisonAI Unsafe Tool Resolution Vulnerability</title><link>https://feed.craftedsignal.io/briefs/2026-05-praisonai-tool-execution/</link><pubDate>Mon, 11 May 2026 14:01:58 +0000</pubDate><author>hello@craftedsignal.io</author><guid isPermaLink="true">https://feed.craftedsignal.io/briefs/2026-05-praisonai-tool-execution/</guid><description>PraisonAI resolves tool names against module globals and `__main__` after failing to match declared tools, allowing an attacker who can influence tool-call names to invoke unintended application callables, leading to potential unauthorized state changes and command execution.</description><content:encoded><![CDATA[<p>PraisonAI&rsquo;s <code>praisonaiagents</code> library exhibits an unsafe tool resolution vulnerability. Specifically, when resolving tool names, the system searches module globals and the <code>__main__</code> scope <em>after</em> failing to find a match in the declared tool list or the tool registry. Crucially, the default agent configuration sets <code>_perm_allow</code> to <code>None</code>, meaning that the permission gate does not enforce a strict allowlist of declared tools. This allows an attacker who can control or influence the tool-call names to invoke unintended application callables, bypassing the intended security boundary of declared tools. The vulnerability was verified on commit <code>d8a8a786915dc67a7c3021e24f72458f2eac5d9c</code> (v4.6.35).</p>
<h2 id="attack-chain">Attack Chain</h2>
<ol>
<li>The attacker identifies an application callable that is accessible via <code>__main__</code> or globals.</li>
<li>The attacker crafts a malicious input to the PraisonAI agent that specifies the name of the target callable as the &ldquo;tool&rdquo; to execute.</li>
<li>The <code>ToolExecutionMixin.execute_tool</code> function is called with the attacker-controlled tool name.</li>
<li>The agent first searches for the tool in its declared <code>self.tools</code> list. This search fails because the tool is undeclared.</li>
<li>The agent then attempts to retrieve the tool from the tool registry. This also fails.</li>
<li>The agent falls back to searching for the tool name in <code>globals()</code> and <code>__main__</code>. The attacker-specified callable is found in <code>__main__</code>.</li>
<li>The agent executes the callable directly, passing arguments as needed.</li>
<li>The attacker achieves arbitrary code execution within the context of the PraisonAI application, potentially leading to unauthorized state changes, data exposure, or command execution.</li>
</ol>
<h2 id="impact">Impact</h2>
<p>Successful exploitation of this vulnerability can have significant consequences. In deployments where untrusted parties can influence tool-call names, attackers can execute undeclared application callables, bypassing intended security boundaries. Operators who rely on the declared tool list as a security control are vulnerable, as this control can be circumvented. If the application keeps privileged helper functions in process scope, the attacker can reuse those helpers with the application&rsquo;s own privileges, potentially leading to unauthorized state changes, data exposure, or command execution. Affected packages include <code>pip/praisonaiagents</code> (vulnerable: &lt;= 1.6.36) and <code>pip/PraisonAI</code> (vulnerable: &lt;= 4.6.36).</p>
<h2 id="recommendation">Recommendation</h2>
<ul>
<li>Upgrade to a patched version of <code>praisonaiagents</code> and <code>PraisonAI</code> that addresses the unsafe tool resolution (CVE-2026-44339).</li>
<li>Configure the PraisonAI agent to use an explicit allowlist (<code>_perm_allow</code>) of permitted tools to prevent the execution of undeclared callables. Refer to the PraisonAI documentation for instructions on setting up the <code>_perm_allow</code> parameter.</li>
<li>Implement input validation and sanitization on tool-call names to prevent attackers from injecting arbitrary callable names.</li>
<li>Deploy the Sigma rule to detect attempts to execute undeclared functions through <code>ToolExecutionMixin</code>.</li>
</ul>
]]></content:encoded><category domain="severity">high</category><category domain="type">advisory</category><category>vulnerability</category><category>code-execution</category><category>ai-agent</category></item></channel></rss>