PraisonAI: Platform members can delete owner issue dependencies through member-owned related issues
# Platform members can delete owner issue dependencies through member-owned related issues ## Summary `praisonai-platform` issue dependency deletion can be authorized against the wrong side of a dependency edge. A workspace member cannot delete a dependency through the owner-created issue endpoint, but can delete the same dependency through a member-owned related issue endpoint because the route accepts either endpoint and checks delete permission only against the caller-selected URL issue. ## Technical Details The affected boundary is the difference between ordinary workspace membership and owner/admin authority over destructive changes to owner-created issue workflow state. `src/praisonai-platform/praisonai_platform/api/routes/dependencies.py` defines `DELETE /workspaces/{workspace_id}/issues/{issue_id}/dependencies/{dep_id}`. The route first verifies that the URL `issue_id` is in the workspace, loads the dependency by `dep_id`, and accepts the dependency when either `dep.issue_id == issue_id` or `dep.depends_on_issue_id == issue_id`. It then calls `require_delete_permission(workspace_id, user, session, resource_owner_id=issue.creator_id)` for the URL issue only. `src/praisonai-platform/praisonai_platform/api/deps.py` implements `require_delete_permission` as "admin/owner or resource owner". That helper is appropriate when the protected resource has a single owner, but the dependency route lets the caller choose either side of the relationship before the helper runs. If an
- Products
- praisonai-platform
- Affected versions
- 0.1.0, 0.1.1, 0.1.2, 0.1.3, 0.1.4, 0.1.6, 0.1.8
- Fixed versions
- 0.1.9
- CVEs
- CVE-2026-61441, CVE-2026-62179
- Confirmed fixed CVEs
- Not specified
- Updated in this feed
- 30 Oct 2026, 18:13 UTC · Revision 2
Source evidence
PraisonAI: Platform members can delete owner issue dependencies through member-owned related issues
core-osv · Original sourcePublished 7 Oct 2026, 14:28 UTC
# Platform members can delete owner issue dependencies through member-owned related issues ## Summary `praisonai-platform` issue dependency deletion can be authorized against the wrong side of a dependency edge. A workspace member cannot delete a dependency through the owner-created issue endpoint, but can delete the same dependency through a member-owned related issue endpoint because the route accepts either endpoint and checks delete permission only against the caller-selected URL issue. ## Technical Details The affected boundary is the difference between ordinary workspace membership and owner/admin authority over destructive changes to owner-created issue workflow state. `src/praisonai-platform/praisonai_platform/api/routes/dependencies.py` defines `DELETE /workspaces/{workspace_id}/issues/{issue_id}/dependencies/{dep_id}`. The route first verifies that the URL `issue_id` is in the workspace, loads the dependency by `dep_id`, and accepts the dependency when either `dep.issue_id == issue_id` or `dep.depends_on_issue_id == issue_id`. It then calls `require_delete_permission(workspace_id, user, session, resource_owner_id=issue.creator_id)` for the URL issue only. `src/praisonai-platform/praisonai_platform/api/deps.py` implements `require_delete_permission` as "admin/owner or resource owner". That helper is appropriate when the protected resource has a single owner, but the dependency route lets the caller choose either side of the relationship before the helper runs. If an
osv:GHSA-mxmx-rh57-jx58
praisonai-platform
Fixed versions: 0.1.9
Complete source record
{
"id": "0c618bcf3fdd12be774b07a0b5353b221096c62bab08fb8e2dbce74613b11588",
"url": "https://osv.dev/vulnerability/GHSA-mxmx-rh57-jx58",
"method": "structured",
"payload": {
"kind": "advisory",
"title": "PraisonAI: Platform members can delete owner issue dependencies through member-owned related issues",
"summary": "# Platform members can delete owner issue dependencies through member-owned related issues ## Summary `praisonai-platform` issue dependency deletion can be authorized against the wrong side of a dependency edge. A workspace member cannot delete a dependency through the owner-created issue endpoint, but can delete the same dependency through a member-owned related issue endpoint because the route accepts either endpoint and checks delete permission only against the caller-selected URL issue. ## Technical Details The affected boundary is the difference between ordinary workspace membership and owner/admin authority over destructive changes to owner-created issue workflow state. `src/praisonai-platform/praisonai_platform/api/routes/dependencies.py` defines `DELETE /workspaces/{workspace_id}/issues/{issue_id}/dependencies/{dep_id}`. The route first verifies that the URL `issue_id` is in the workspace, loads the dependency by `dep_id`, and accepts the dependency when either `dep.issue_id == issue_id` or `dep.depends_on_issue_id == issue_id`. It then calls `require_delete_permission(workspace_id, user, session, resource_owner_id=issue.creator_id)` for the URL issue only. `src/praisonai-platform/praisonai_platform/api/deps.py` implements `require_delete_permission` as \"admin/owner or resource owner\". That helper is appropriate when the protected resource has a single owner, but the dependency route lets the caller choose either side of the relationship before the helper runs. If an ",
"evidence": "osv:GHSA-mxmx-rh57-jx58",
"products": [
{
"name": {
"value": "praisonai-platform",
"evidence": "/affected/0/package/name"
},
"prerequisites": [],
"fixed_versions": [
{
"value": "0.1.9",
"evidence": "/affected/0/ranges"
}
],
"affected_versions": [
{
"value": "0.1.0",
"evidence": "/affected/0/versions"
},
{
"value": "0.1.1",
"evidence": "/affected/0/versions"
},
{
"value": "0.1.2",
"evidence": "/affected/0/versions"
},
{
"value": "0.1.3",
"evidence": "/affected/0/versions"
},
{
"value": "0.1.4",
"evidence": "/affected/0/versions"
},
{
"value": "0.1.6",
"evidence": "/affected/0/versions"
},
{
"value": "0.1.8",
"evidence": "/affected/0/versions"
}
]
}
],
"severity": "medium",
"structured": {
"id": "GHSA-mxmx-rh57-jx58",
"aliases": [
"CVE-2026-61441",
"CVE-2026-62179",
"GHSA-mxmx-rh57-jx58",
"PYSEC-2026-4263"
],
"metrics": [
{
"type": "CVSS_V3",
"score": "CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:H/A:N"
}
],
"affected": [
{
"ranges": [
{
"type": "ECOSYSTEM",
"events": [
{
"introduced": "0"
},
{
"fixed": "0.1.9"
}
]
}
],
"package": {
"name": "praisonai-platform",
"purl": "pkg:pypi/praisonai-platform",
"ecosystem": "PyPI"
},
"versions": [
"0.1.0",
"0.1.1",
"0.1.2",
"0.1.3",
"0.1.4",
"0.1.6",
"0.1.8"
],
"database_specific": {
"source": "https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2026/10/GHSA-mxmx-rh57-jx58/GHSA-mxmx-rh57-jx58.json",
"last_known_affected_version_range": "<= 0.1.8"
}
}
],
"modified": "2026-10-15T14:55:34.850657569Z",
"provider": "osv",
"references": [
"https://github.com/MervinPraison/PraisonAI/security/advisories/GHSA-mxmx-rh57-jx58",
"https://github.com/MervinPraison/PraisonAI"
],
"provider_metadata": {
"cwe_ids": [
"CWE-862",
"CWE-863"
],
"severity": "MODERATE",
"github_reviewed": true,
"nvd_published_at": null,
"github_reviewed_at": "2026-10-07T14:28:56Z"
}
},
"related_cves": [
{
"value": "CVE-2026-61441",
"evidence": "/aliases"
},
{
"value": "CVE-2026-62179",
"evidence": "/aliases"
}
],
"security_relevant": true,
"severity_evidence": "/severity/0/score"
},
"source_id": "core-osv",
"document_id": 332662,
"published_at": "2026-10-07T14:28:56+00:00"
}PraisonAI: Platform members can delete owner issue dependencies through member-owned related issues
core-osv · Original sourcePublished 15 Oct 2026, 10:22 UTC
# Platform members can delete owner issue dependencies through member-owned related issues ## Summary `praisonai-platform` issue dependency deletion can be authorized against the wrong side of a dependency edge. A workspace member cannot delete a dependency through the owner-created issue endpoint, but can delete the same dependency through a member-owned related issue endpoint because the route accepts either endpoint and checks delete permission only against the caller-selected URL issue. ## Technical Details The affected boundary is the difference between ordinary workspace membership and owner/admin authority over destructive changes to owner-created issue workflow state. `src/praisonai-platform/praisonai_platform/api/routes/dependencies.py` defines `DELETE /workspaces/{workspace_id}/issues/{issue_id}/dependencies/{dep_id}`. The route first verifies that the URL `issue_id` is in the workspace, loads the dependency by `dep_id`, and accepts the dependency when either `dep.issue_id == issue_id` or `dep.depends_on_issue_id == issue_id`. It then calls `require_delete_permission(workspace_id, user, session, resource_owner_id=issue.creator_id)` for the URL issue only. `src/praisonai-platform/praisonai_platform/api/deps.py` implements `require_delete_permission` as "admin/owner or resource owner". That helper is appropriate when the protected resource has a single owner, but the dependency route lets the caller choose either side of the relationship before the helper runs. If an
osv:PYSEC-2026-4263
praisonai-platform
Fixed versions: 0.1.9
Complete source record
{
"id": "b94d85241ffe6b40e1e440d368816c2e0321c77554f0a2f2692ccb92b66158e1",
"url": "https://osv.dev/vulnerability/PYSEC-2026-4263",
"method": "structured",
"payload": {
"kind": "advisory",
"title": "PraisonAI: Platform members can delete owner issue dependencies through member-owned related issues",
"summary": "# Platform members can delete owner issue dependencies through member-owned related issues ## Summary `praisonai-platform` issue dependency deletion can be authorized against the wrong side of a dependency edge. A workspace member cannot delete a dependency through the owner-created issue endpoint, but can delete the same dependency through a member-owned related issue endpoint because the route accepts either endpoint and checks delete permission only against the caller-selected URL issue. ## Technical Details The affected boundary is the difference between ordinary workspace membership and owner/admin authority over destructive changes to owner-created issue workflow state. `src/praisonai-platform/praisonai_platform/api/routes/dependencies.py` defines `DELETE /workspaces/{workspace_id}/issues/{issue_id}/dependencies/{dep_id}`. The route first verifies that the URL `issue_id` is in the workspace, loads the dependency by `dep_id`, and accepts the dependency when either `dep.issue_id == issue_id` or `dep.depends_on_issue_id == issue_id`. It then calls `require_delete_permission(workspace_id, user, session, resource_owner_id=issue.creator_id)` for the URL issue only. `src/praisonai-platform/praisonai_platform/api/deps.py` implements `require_delete_permission` as \"admin/owner or resource owner\". That helper is appropriate when the protected resource has a single owner, but the dependency route lets the caller choose either side of the relationship before the helper runs. If an ",
"evidence": "osv:PYSEC-2026-4263",
"products": [
{
"name": {
"value": "praisonai-platform",
"evidence": "/affected/0/package/name"
},
"prerequisites": [],
"fixed_versions": [
{
"value": "0.1.9",
"evidence": "/affected/0/ranges"
}
],
"affected_versions": [
{
"value": "0.1.0",
"evidence": "/affected/0/versions"
},
{
"value": "0.1.1",
"evidence": "/affected/0/versions"
},
{
"value": "0.1.2",
"evidence": "/affected/0/versions"
},
{
"value": "0.1.3",
"evidence": "/affected/0/versions"
},
{
"value": "0.1.4",
"evidence": "/affected/0/versions"
},
{
"value": "0.1.6",
"evidence": "/affected/0/versions"
},
{
"value": "0.1.8",
"evidence": "/affected/0/versions"
}
]
}
],
"severity": "medium",
"structured": {
"id": "PYSEC-2026-4263",
"aliases": [
"CVE-2026-61441",
"CVE-2026-62179",
"GHSA-mxmx-rh57-jx58",
"PYSEC-2026-4263"
],
"metrics": [
{
"type": "CVSS_V3",
"score": "CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:H/A:N"
}
],
"affected": [
{
"ranges": [
{
"type": "ECOSYSTEM",
"events": [
{
"introduced": "0"
},
{
"fixed": "0.1.9"
}
]
}
],
"package": {
"name": "praisonai-platform",
"purl": "pkg:pypi/praisonai-platform",
"ecosystem": "PyPI"
},
"versions": [
"0.1.0",
"0.1.1",
"0.1.2",
"0.1.3",
"0.1.4",
"0.1.6",
"0.1.8"
],
"database_specific": {
"source": "https://github.com/pypa/advisory-database/blob/main/vulns/praisonai-platform/PYSEC-2026-4263.yaml"
}
}
],
"modified": "2026-10-15T14:55:34.850657569Z",
"provider": "osv",
"references": [
"https://github.com/MervinPraison/PraisonAI/security/advisories/GHSA-mxmx-rh57-jx58",
"https://github.com/MervinPraison/PraisonAI",
"https://pypi.org/project/praisonai-platform",
"https://github.com/advisories/GHSA-mxmx-rh57-jx58",
"https://nvd.nist.gov/vuln/detail/CVE-2026-62179"
]
},
"related_cves": [
{
"value": "CVE-2026-61441",
"evidence": "/aliases"
},
{
"value": "CVE-2026-62179",
"evidence": "/aliases"
}
],
"security_relevant": true,
"severity_evidence": "/severity/0/score"
},
"source_id": "core-osv",
"document_id": 332663,
"published_at": "2026-10-15T10:22:47.651788+00:00"
}