<?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>Cross-Tenant-Access — CraftedSignal Threat Feed</title><link>https://feed.craftedsignal.io/tags/cross-tenant-access/</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:35:47 +0000</lastBuildDate><atom:link href="https://feed.craftedsignal.io/tags/cross-tenant-access/feed.xml" rel="self" type="application/rss+xml"/><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>