CVE-2026-47399
Full vulnerability record from the local CVENow database.
Description
PraisonAI Platform is the platform layer for the PraisonAI multi-agent teams system. Prior to version 0.1.4, the workspace-scoped REST routes contain a systemic object-level authorization flaw that allows an authenticated user from one workspace to access, modify, and delete objects belonging to another workspace by supplying the victim object's global UUID. The affected pattern appears in workspace-scoped routes such as agents, projects, issues, and comments. The route layer verifies that the caller is a member of the `workspace_id` provided in the URL, but the service layer later resolves the target object by global object ID only. It does not verify that the resolved object actually belongs to the workspace in the URL. As a result, a valid member of `workspace_attacker` can call a route under `/api/v1/workspaces/{workspace_attacker}/...` while supplying an object UUID from `workspace_victim`. The server authorizes the request based on membership in `workspace_attacker`, then fetches or mutates the victim object by global UUID. This breaks the platform's workspace isolation boundary. PraisonAI Platform version 0.1.4 patches the issue.
View original CVE JSON
{
"id": "CVE-2026-47399",
"sourceIdentifier": "[email protected]",
"published": "2026-07-21T17:17:08.950",
"lastModified": "2026-10-24T19:10:00.127",
"vulnStatus": "Deferred",
"cveTags": [],
"descriptions": [
{
"lang": "en",
"value": "PraisonAI Platform is the platform layer for the PraisonAI multi-agent teams system. Prior to version 0.1.4, the workspace-scoped REST routes contain a systemic object-level authorization flaw that allows an authenticated user from one workspace to access, modify, and delete objects belonging to another workspace by supplying the victim object's global UUID. The affected pattern appears in workspace-scoped routes such as agents, projects, issues, and comments. The route layer verifies that the caller is a member of the `workspace_id` provided in the URL, but the service layer later resolves the target object by global object ID only. It does not verify that the resolved object actually belongs to the workspace in the URL. As a result, a valid member of `workspace_attacker` can call a route under `/api/v1/workspaces/{workspace_attacker}/...` while supplying an object UUID from `workspace_victim`. The server authorizes the request based on membership in `workspace_attacker`, then fetches or mutates the victim object by global UUID. This breaks the platform's workspace isolation boundary. PraisonAI Platform version 0.1.4 patches the issue."
},
{
"lang": "es",
"value": "La Plataforma PraisonAI es la capa de plataforma para el sistema de equipos multiagente de PraisonAI. Antes de la versión 0.1.4, las rutas REST con ámbito de espacio de trabajo contienen una falla sistémica de autorización a nivel de objeto que permite a un usuario autenticado de un espacio de trabajo acceder, modificar y eliminar objetos pertenecientes a otro espacio de trabajo al proporcionar el UUID global del objeto víctima. El patrón afectado aparece en rutas con ámbito de espacio de trabajo como agentes, proyectos, incidencias y comentarios. La capa de rutas verifica que el llamador es miembro del ’workspace_id’ proporcionado en la URL, pero la capa de servicio luego resuelve el objeto objetivo solo por ID de objeto global. No verifica que el objeto resuelto realmente pertenece al espacio de trabajo en la URL. Como resultado, un miembro válido de ’workspace_attacker’ puede llamar a una ruta bajo ’/api/v1/workspaces/{workspace_attacker}/...’ mientras proporciona un UUID de objeto de ’workspace_victim’. El servidor autoriza la solicitud basándose en la membresía en ’workspace_attacker’, luego obtiene o muta el objeto víctima por UUID global. Esto rompe el límite de aislamiento de espacio de trabajo de la plataforma. La Plataforma PraisonAI versión 0.1.4 corrige el problema."
}
],
"affected": [
{
"source": "[email protected]",
"affectedData": [
{
"vendor": "MervinPraison",
"product": "praisonai-platform",
"versions": [
{
"version": "< 0.1.4",
"status": "affected"
}
]
}
]
}
],
"metrics": {
"cvssMetricV31": [
{
"source": "[email protected]",
"type": "Secondary",
"cvssData": {
"version": "3.1",
"vectorString": "CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H",
"baseScore": 8.8,
"baseSeverity": "HIGH",
"attackVector": "NETWORK",
"attackComplexity": "LOW",
"privilegesRequired": "LOW",
"userInteraction": "NONE",
"scope": "UNCHANGED",
"confidentialityImpact": "HIGH",
"integrityImpact": "HIGH",
"availabilityImpact": "HIGH"
},
"exploitabilityScore": 2.8,
"impactScore": 5.9
}
],
"ssvcV203": [
{
"source": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
"ssvcData": {
"timestamp": "2026-07-22T14:36:05.907729Z",
"id": "CVE-2026-47399",
"options": [
{
"exploitation": "poc"
},
{
"automatable": "no"
},
{
"technicalImpact": "total"
}
],
"role": "CISA Coordinator",
"version": "2.0.3"
}
}
]
},
"weaknesses": [
{
"source": "[email protected]",
"type": "Secondary",
"description": [
{
"lang": "en",
"value": "CWE-284"
},
{
"lang": "en",
"value": "CWE-639"
}
]
}
],
"references": [
{
"url": "https://github.com/MervinPraison/PraisonAI/commit/24385d64876577620f749957bd4814f162f4ca47",
"source": "[email protected]"
},
{
"url": "https://github.com/MervinPraison/PraisonAI/pull/1686",
"source": "[email protected]"
},
{
"url": "https://github.com/MervinPraison/PraisonAI/security/advisories/GHSA-6h6v-6m7w-7vxx",
"source": "[email protected]"
},
{
"url": "https://github.com/MervinPraison/PraisonAI/security/advisories/GHSA-6h6v-6m7w-7vxx",
"source": "134c704f-9b21-4f2e-91b3-4a467353bcc0"
}
]
}