Description
PraisonAI Platform is the platform layer for the PraisonAI multi-agent teams system. Prior to version 0.1.4, the Platform server exposes resources under `/api/v1/workspaces/{workspace_id}/...` and protects them with a `require_workspace_member(workspace_id)` FastAPI dependency. The dependency only checks that the caller is a member of the workspace_id in the URL prefix. The route handlers then look up the inner resource (`agent_id`, `issue_id`, `project_id`, `label_id`, `comment_id`, `dependency_id`) by primary key alone. The resource's own `workspace_id` is never compared to the URL's `workspace_id`. A user can therefore put their own workspace in the URL prefix and any other workspace's resource ID in the path. The auth check passes, since they really are a member of the prefix workspace. The service then returns the cross-tenant resource for read, update, or delete. There is a second bug in the member-management routes (`add_member`, `update_member_role`, `remove_member`, `update_workspace`, `delete_workspace`). Each one inherits the default `min_role="member"` from `require_workspace_member`. Any basic member can therefore promote themselves to admin or owner, demote or remove other members, and delete the workspace. The role hierarchy exists in the schema but is not enforced. Registration is open at `/api/v1/auth/register` with no email verification. The default server bind is `0.0.0.0:8000` (`python -m praisonai_platform`). One curl from any unauthenticated network position is enough to bootstrap into the system. PraisonAI Platform version 0.1.4 patches the issue.
Published: 2026-07-21
Score: 9.4 Critical
EPSS: < 1% Very Low
KEV: No
Impact: n/a
Action: n/a
AI Analysis

Impact

The PraisonAI Platform’s require_workspace_member dependency verifies that a caller is a member of the workspace ID specified in the URL, but the route handlers that follow load resources solely by primary key without checking that the resource’s own workspace_id matches the one in the URL. This omission allows an authenticated member of one workspace to supply another workspace’s ID in the URL prefix and the target resource’s ID in the path, thereby granting read, write, and delete access to resources belonging to an unrelated workspace. A second flaw resides in the member‑management endpoints: each inherits a default min_role of "member" from the dependency, permitting any authenticated member to promote themselves to admin or owner, demote or remove other members, or delete the workspace entirely. Registration is open without email verification, and the default server bind to 0.0.0.0:8000 exposes the API to the entire network, so an attacker can bootstrap an account with a simple curl from any external position. These weaknesses are reflected in CWE‑269, CWE‑639, and CWE‑863.

Affected Systems

The vulnerability affects PraisonAI Platform, a multi‑agent teams system developed by MervinPraison. Versions prior to 0.1.4 are vulnerable; upgrade to 0.1.4 or later to obtain the fix.

Risk and Exploitability

With a CVSS score of 9.4, this is a critical vulnerability. The EPSS score of less than 1% indicates that, while the global exploit probability appears low, the lack of hardening on the API endpoints makes exploitation straightforward; an attacker only needs to issue crafted HTTP requests, perhaps starting with a simple curl. The vulnerability is not listed in the CISA KEV catalog, yet its combination of cross‑tenant data exposure and privilege escalation presents a high risk to any organization running PraisonAI Platform before the 0.1.4 update. An attacker can read, modify, or delete resources across workspaces and then elevate themselves to full administrative control within those workspaces, potentially compromising all data stored in the platform.

Generated by OpenCVE AI on July 30, 2026 at 17:06 UTC.

Remediation

No vendor fix or workaround currently provided.

OpenCVE Recommended Actions

  • Upgrade PraisonAI Platform to version 0.1.4 or later to eliminate the cross‑workspace IDOR and enforce role checks.
  • Disable or restrict open registration by enabling email verification and requiring administrator approval before new users can sign up.
  • Limit exposure of the API by restricting the service bind address to localhost or an internal interface and by applying firewall rules that block external access to the /api/v1 endpoints.

Generated by OpenCVE AI on July 30, 2026 at 17:06 UTC.

Tracking

Sign in to view the affected projects.

Advisories
Source ID Title
Github GHSA Github GHSA GHSA-h8q5-cp56-rr65 PraisonAI Platform has a cross-workspace IDOR + member-role privilege escalation
History

Mon, 27 Jul 2026 23:30:00 +0000

Type Values Removed Values Added
First Time appeared Mervinpraison
Mervinpraison praisonai
Vendors & Products Mervinpraison
Mervinpraison praisonai

Wed, 22 Jul 2026 15:30:00 +0000

Type Values Removed Values Added
Metrics ssvc

{'options': {'Automatable': 'no', 'Exploitation': 'poc', 'Technical Impact': 'total'}, 'version': '2.0.3'}


Tue, 21 Jul 2026 17:00:00 +0000

Type Values Removed Values Added
Description PraisonAI Platform is the platform layer for the PraisonAI multi-agent teams system. Prior to version 0.1.4, the Platform server exposes resources under `/api/v1/workspaces/{workspace_id}/...` and protects them with a `require_workspace_member(workspace_id)` FastAPI dependency. The dependency only checks that the caller is a member of the workspace_id in the URL prefix. The route handlers then look up the inner resource (`agent_id`, `issue_id`, `project_id`, `label_id`, `comment_id`, `dependency_id`) by primary key alone. The resource's own `workspace_id` is never compared to the URL's `workspace_id`. A user can therefore put their own workspace in the URL prefix and any other workspace's resource ID in the path. The auth check passes, since they really are a member of the prefix workspace. The service then returns the cross-tenant resource for read, update, or delete. There is a second bug in the member-management routes (`add_member`, `update_member_role`, `remove_member`, `update_workspace`, `delete_workspace`). Each one inherits the default `min_role="member"` from `require_workspace_member`. Any basic member can therefore promote themselves to admin or owner, demote or remove other members, and delete the workspace. The role hierarchy exists in the schema but is not enforced. Registration is open at `/api/v1/auth/register` with no email verification. The default server bind is `0.0.0.0:8000` (`python -m praisonai_platform`). One curl from any unauthenticated network position is enough to bootstrap into the system. PraisonAI Platform version 0.1.4 patches the issue.
Title PraisonAI Platform has a cross-workspace IDOR + member-role privilege escalation
Weaknesses CWE-269
CWE-639
CWE-863
References
Metrics cvssV4_0

{'score': 9.4, 'vector': 'CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:H/VA:H/SC:H/SI:H/SA:H'}


Subscriptions

Mervinpraison Praisonai
cve-icon MITRE

Status: PUBLISHED

Assigner: GitHub_M

Published:

Updated: 2026-07-22T14:16:34.674Z

Reserved: 2026-05-19T19:37:43.525Z

Link: CVE-2026-47407

cve-icon Vulnrichment

Updated: 2026-07-22T14:15:47.543Z

cve-icon NVD

No data.

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-07-30T17:15:12Z

Weaknesses
  • CWE-269

    Improper Privilege Management

  • CWE-639

    Authorization Bypass Through User-Controlled Key

  • CWE-863

    Incorrect Authorization