<?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-Platform (&lt;= 0.1.2) — CraftedSignal Threat Feed</title><link>https://feed.craftedsignal.io/products/praisonai-platform--0.1.2/</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:57:51 +0000</lastBuildDate><atom:link href="https://feed.craftedsignal.io/products/praisonai-platform--0.1.2/feed.xml" rel="self" type="application/rss+xml"/><item><title>Praison AI Platform Missing Authorization Leads to Workspace Takeover</title><link>https://feed.craftedsignal.io/briefs/2026-05-praisonai-platform-takeover/</link><pubDate>Fri, 29 May 2026 22:57:51 +0000</pubDate><author>hello@craftedsignal.io</author><guid isPermaLink="true">https://feed.craftedsignal.io/briefs/2026-05-praisonai-platform-takeover/</guid><description>An authorization bypass vulnerability exists in praisonai-platform where any member can remove any other member, including the workspace owner, due to missing role checks and owner protection logic, allowing an attacker to lock the legitimate owner out of their own workspace, leading to a permanent denial-of-service and potential workspace takeover (CVE-2026-47409).</description><content:encoded><![CDATA[<p>An authorization bypass vulnerability exists in the praisonai-platform version 0.1.2 and earlier. The vulnerability resides in the <code>DELETE /workspaces/{workspace_id}/members/{user_id}</code> endpoint. Due to insufficient access controls, any member of a workspace, regardless of their role, can remove any other member, including the workspace owner. This is because the endpoint is only gated by <code>require_workspace_member(workspace_id)</code> with a default <code>min_role=&quot;member&quot;</code>. There is no caller-role check, no target-role check, and no protection against removing the last owner. This lack of proper authorization checks allows a malicious member to lock out the legitimate owner and potentially take over the workspace.</p>
<h2 id="attack-chain">Attack Chain</h2>
<ol>
<li>Attacker becomes a member of workspace <code>W</code> with the &ldquo;member&rdquo; role.</li>
<li>Attacker enumerates members of workspace <code>W</code> via <code>GET /workspaces/W/members</code> to discover the workspace owner&rsquo;s <code>user_id</code> (<code>O_id</code>).</li>
<li>Attacker sends a <code>DELETE /workspaces/W/members/O_id</code> request with their valid JWT.</li>
<li>The <code>require_workspace_member(W, attacker)</code> check passes, as the attacker is a member of the workspace.</li>
<li><code>MemberService.remove(W, O_id)</code> is called, which removes the owner&rsquo;s member record from the database.</li>
<li>The owner attempts to access workspace resources, such as <code>GET /workspaces/W/...</code>, but <code>require_workspace_member(W, O_id)</code> now fails, resulting in a 403 error.</li>
<li>The legitimate owner is locked out of their own workspace.</li>
<li>The attacker can potentially combine this with other vulnerabilities (e.g., <code>update_member_role</code>, <code>delete_workspace</code>) to promote themselves to owner and/or completely wipe the workspace, further exacerbating the impact.</li>
</ol>
<h2 id="impact">Impact</h2>
<p>Successful exploitation of this vulnerability allows any member of a workspace to remove any other member, including the workspace owner. This leads to a permanent denial-of-service for the legitimate owner, as they are locked out of their own workspace. An attacker can potentially gain full control of the workspace and its resources. This vulnerability is rated as sec-high, with a CVSS score of 8.1. Version 0.1.2 and earlier are affected.</p>
<h2 id="recommendation">Recommendation</h2>
<ul>
<li>Apply the patch suggested in the advisory, specifically modifying <code>src/praisonai-platform/praisonai_platform/api/routes/workspaces.py</code> to include stricter role checks and owner protection logic.</li>
<li>Implement a detection rule to identify unauthorized attempts to remove workspace owners, focusing on <code>webserver</code> logs and the <code>DELETE /workspaces/{workspace_id}/members/{user_id}</code> endpoint (see Sigma rule below).</li>
<li>Review and harden other workspace-mutation endpoints to ensure proper authorization checks, as the advisory mentions similar vulnerabilities in companion endpoints.</li>
</ul>
]]></content:encoded><category domain="severity">high</category><category domain="type">advisory</category><category>authorization</category><category>privilege-escalation</category><category>denial-of-service</category></item><item><title>PraisonAI Platform Cross-Workspace IDOR and Privilege Escalation</title><link>https://feed.craftedsignal.io/briefs/2026-05-praisonai-idor-privesc/</link><pubDate>Fri, 29 May 2026 22:35:47 +0000</pubDate><author>hello@craftedsignal.io</author><guid isPermaLink="true">https://feed.craftedsignal.io/briefs/2026-05-praisonai-idor-privesc/</guid><description>PraisonAI Platform is vulnerable to cross-workspace IDOR and member-role privilege escalation, allowing unauthorized users to read, update, or delete resources across workspaces, escalate privileges, and potentially take over accounts and workspaces due to insufficient access controls and role enforcement.</description><content:encoded><![CDATA[<p>PraisonAI Platform is susceptible to critical vulnerabilities stemming from insufficient access controls and role enforcement. The platform exposes resources under <code>/api/v1/workspaces/{workspace_id}/...</code>, intending to protect them with a <code>require_workspace_member(workspace_id)</code> FastAPI dependency. However, this dependency only validates the <code>workspace_id</code> in the URL prefix, neglecting to verify the resource&rsquo;s own <code>workspace_id</code>. This oversight enables a malicious actor to manipulate the URL, accessing resources across different workspaces. Furthermore, member-management routes lack proper role enforcement, allowing basic members to elevate their privileges to admin or owner. Open registration without email verification at <code>/api/v1/auth/register</code> and a default server bind to <code>0.0.0.0:8000</code> further exacerbate the risk. Successful exploitation allows attackers to read, update, or delete resources across workspaces, escalate privileges, and potentially take over accounts and workspaces. The vulnerability affects praisonai-platform versions 0.1.2 and earlier.</p>
<h2 id="attack-chain">Attack Chain</h2>
<ol>
<li>An attacker registers an account via the open <code>/api/v1/auth/register</code> endpoint to obtain a valid bearer token.</li>
<li>The attacker identifies a target workspace ID and a resource ID (agent, issue, project, etc.) within that workspace.</li>
<li>The attacker crafts a request to <code>/api/v1/workspaces/{attacker_workspace_id}/{resource_type}/{target_resource_id}</code>, substituting <code>{attacker_workspace_id}</code> with their own workspace ID and <code>{target_resource_id}</code> with the target resource ID.</li>
<li>The <code>require_workspace_member</code> dependency checks if the attacker is a member of the attacker&rsquo;s workspace, which passes.</li>
<li>The service layer retrieves the target resource based solely on the <code>target_resource_id</code>, bypassing workspace context validation.</li>
<li>The attacker reads, modifies, or deletes the cross-tenant resource. For example, <code>PATCH /api/v1/workspaces/{attacker_workspace_id}/agents/{target_agent_id}</code> modifies the target agent&rsquo;s instructions.</li>
<li>A low-privileged member uses the <code>PATCH /{workspace_id}/members/{user_id}</code> route to promote themself to <code>admin</code> due to missing role checks.</li>
<li>The attacker deletes the original owner and assumes full control of the workspace.</li>
</ol>
<h2 id="impact">Impact</h2>
<p>Successful exploitation of these vulnerabilities can have severe consequences. Any registered user can read every agent, issue, project, label, comment, and dependency across all workspaces. Sensitive information such as API keys and connection strings stored within <code>agent.instructions</code> and <code>agent.runtime_config</code> fields are exposed. Malicious actors can rewrite <code>agent.instructions</code> to exfiltrate conversations or manipulate behavior. Additionally, attackers can reassign issues, edit project metadata, and delete critical resources, leading to data loss and service disruption. Basic members can escalate their privileges to admin, evict the owner, and seize control of workspaces. The default deployment configuration exposes the platform to network-based attacks, amplifying the impact of the vulnerability.</p>
<h2 id="recommendation">Recommendation</h2>
<ul>
<li>Apply the suggested fix outlined in the advisory to re-scope every nested-resource lookup to the URL workspace to prevent cross-workspace IDOR vulnerabilities.</li>
<li>Implement explicit <code>min_role</code> arguments on member-management routes to enforce role-based access control and prevent unauthorized privilege escalation.</li>
<li>Monitor web server logs for suspicious requests to <code>/api/v1/workspaces/{workspace_id}/agents/{agent_id}</code> and other nested-resource routes using the provided Sigma rules.</li>
<li>Deploy the Sigma rule detecting privilege escalation attempts via the <code>PATCH /{workspace_id}/members/{user_id}</code> route.</li>
<li>Block registration from untrusted networks until email verification is implemented.</li>
</ul>
]]></content:encoded><category domain="severity">critical</category><category domain="type">threat</category><category>idor</category><category>privilege-escalation</category><category>cross-tenant-access</category><category>fastapi</category></item></channel></rss>