Detect CVE-2026-47413: PraisonAI Platform Unauthorized Workspace Owner Privilege Escalation in Elastic Security
Detects exploitation of CVE-2026-47413, a critical privilege escalation vulnerability in praisonai-platform < 0.1.4 where any authenticated workspace member can promote arbitrary users to owner role via POST /workspaces/{id}/members without authorization checks. CVSS 9.6. PoC is publicly available.
MITRE ATT&CK
- Tactic
- Privilege Escalation Persistence
Elastic Detection Query
sequence by source.ip with maxspan=10m
[network where event.dataset == "http" and http.request.method == "POST"
and url.path : "/workspaces/*/members"
and http.response.status_code in (200, 201)
and (http.request.body.content : "*owner*" or http.request.body.content : "*\"role\"*")]
[network where event.dataset == "http" and http.request.method == "GET"
and url.path : "/workspaces/*/members"
and http.response.status_code == 200] Uses EQL sequence detection to identify a POST that assigns owner role followed by a GET to confirm membership change, indicating CVE-2026-47413 exploitation.
Data Sources
Required Tables
False Positives & Tuning
- Authorized administrators legitimately adding owners followed by verification checks
- Automated provisioning tools that assign and verify workspace membership
- Developer environments running integration tests against a PraisonAI instance
Other platforms for CVE-2026-47413
Testing Methodology
Validate this detection against 3 adversary techniques from Atomic Red Team. Each test below lists the behaviour to exercise and the telemetry you should expect to see. Executable commands and cleanup steps are available with Pro.
- Test 1Baseline member promotes arbitrary user to owner via POST /workspaces/{id}/members
Expected signal: HTTP access logs show POST /workspaces/{id}/members with 200 or 201 status code, source IP of non-admin user, and request body containing role: owner
- Test 2Mass workspace owner takeover across multiple workspaces
Expected signal: Multiple POST requests to /workspaces/*/members within a short timeframe from the same source IP, all returning 200/201, with owner role in each request body
- Test 3Verify unauthorized owner role assignment via GET /workspaces/{id}/members
Expected signal: GET request to /workspaces/{id}/members returning 200 with JSON body containing owner role entry for the target user, following the POST exploitation request
Unlock Pro Content
Get the full detection package for CVE-2026-47413 including response playbook, investigation guide, and atomic red team tests.