<?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.39) — CraftedSignal Threat Feed</title><link>https://feed.craftedsignal.io/products/praisonai--4.6.39/</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>Fri, 29 May 2026 22:29:38 +0000</lastBuildDate><atom:link href="https://feed.craftedsignal.io/products/praisonai--4.6.39/feed.xml" rel="self" type="application/rss+xml"/><item><title>PraisonAI Call Server Unauthenticated Agent Control API</title><link>https://feed.craftedsignal.io/briefs/2026-05-praisonai-unauth-api/</link><pubDate>Fri, 29 May 2026 22:29:38 +0000</pubDate><author>hello@craftedsignal.io</author><guid isPermaLink="true">https://feed.craftedsignal.io/briefs/2026-05-praisonai-unauth-api/</guid><description>PraisonAI's call server exposes a network-facing agent control API without authentication when `CALL_SERVER_TOKEN` is not configured, allowing attackers to list, inspect, invoke, and unregister agents due to a fail-open authentication default and a default binding to `0.0.0.0`, as tracked by CVE-2026-47396.</description><content:encoded><![CDATA[<p>PraisonAI&rsquo;s call server is vulnerable to unauthenticated access to its agent control API when the <code>CALL_SERVER_TOKEN</code> environment variable is not set. This occurs because the <code>verify_token()</code> authentication helper in <code>praisonai/api/agent_invoke.py</code> fails open in the absence of the token. The call server is bundled with the vulnerable router and defaults to binding to all interfaces (0.0.0.0). Consequently, operators who launch the call server without setting <code>CALL_SERVER_TOKEN</code> risk exposing an unauthenticated remote agent control plane. This vulnerability affects PraisonAI versions up to and including 4.6.39 and is tracked as CVE-2026-47396.</p>
<h2 id="attack-chain">Attack Chain</h2>
<ol>
<li>The PraisonAI call server is started without setting the <code>CALL_SERVER_TOKEN</code> environment variable.</li>
<li>The <code>praisonai.api.agent_invoke</code> router is mounted by <code>praisonai.api.call</code>.</li>
<li>The call server binds to <code>0.0.0.0</code>, making it accessible from any reachable client.</li>
<li>An attacker sends an unauthenticated HTTP GET request to <code>/api/v1/agents</code> to list registered agents.</li>
<li>The attacker retrieves agent metadata and instructions by sending an unauthenticated HTTP GET request to <code>/api/v1/agents/{agent_id}</code>.</li>
<li>The attacker invokes an agent by sending an unauthenticated HTTP POST request to <code>/api/v1/agents/{agent_id}/invoke</code> with a crafted message.</li>
<li>The agent executes, potentially triggering downstream tools or external integrations.</li>
<li>The attacker unregisters the agent via an unauthenticated HTTP DELETE request to <code>/api/v1/agents/{agent_id}</code>, disrupting availability.</li>
</ol>
<h2 id="impact">Impact</h2>
<p>Running the PraisonAI call server without setting <code>CALL_SERVER_TOKEN</code> allows any reachable client to enumerate, inspect, invoke, and unregister agents. This can lead to information disclosure, unauthorized agent execution, consumption of model or API budget, disruption of service, and potentially the execution of privileged actions if agents are connected to external APIs, internal systems, or local tools. The severity depends on the deployed agents and their connected tools. This vulnerability is tracked as CVE-2026-47396.</p>
<h2 id="recommendation">Recommendation</h2>
<ul>
<li>Set the <code>CALL_SERVER_TOKEN</code> environment variable when deploying the PraisonAI call server to enable authentication.</li>
<li>Deploy the Sigma rule &ldquo;Detect PraisonAI Unauthenticated Agent Listing&rdquo; to detect attempts to list agents without authentication by monitoring HTTP GET requests to <code>/api/v1/agents</code>.</li>
<li>Deploy the Sigma rule &ldquo;Detect PraisonAI Unauthenticated Agent Invocation&rdquo; to detect attempts to invoke agents without authentication by monitoring HTTP POST requests to <code>/api/v1/agents/{agent_id}/invoke</code>.</li>
<li>Monitor network connections to the PraisonAI call server to identify potentially unauthorized access attempts, especially if the server is exposed to the internet.</li>
</ul>
]]></content:encoded><category domain="severity">critical</category><category domain="type">advisory</category><category>praisonai</category><category>unauthenticated-access</category><category>api</category></item></channel></rss>