GHSA-rh39-9c67-59mh: PraisonAI: Missing ownership check on DELETE endpoints allows members to delete others' content in Platform API
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 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
POST /api/v1/auth/register
Content-Type: application/json
{"email": "owner@example.com", "password": "Password1!", "name": "owner"}
POST /api/v1/auth/register
Content-Type: application/json
{"email": "member@example.com", "password": "Password1!", "name": "member"
Details
Original advisory: https://github.com/advisories/GHSA-rh39-9c67-59mh
Referenced CVEs
| CVE | CSIRTS overview | External |
|---|---|---|
| CVE-2026-57121 | coverage & exploitation status | NVD · CVE.org |
More from GitHub Security Advisories
- mediumGHSA-xm43-3m56-w3wf: Ghost: Paid gift memberships obtainable at minimal cost via the donations feature2026-08-04
- mediumGHSA-chgm-3698-jm42: Ghost: Member existence leak via magic link sign-in response2026-08-04
- highGHSA-xpp7-93x6-v29m: XSS in Ghost's ActivityPub client2026-08-04
- mediumGHSA-7mpp-r37j-x5wh: Ghost: Session Fixation in Ghost Admin2026-08-04
- mediumGHSA-cjc9-q5gf-327p: Ghost: Theme Upload Path Traversal2026-08-04