Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessReach exposed Jobs API port (8005)
-
DeliveryPOST /api/v1/runs with crafted agent_yaml
-
Exploit'approve' field bypasses @require_approval gate
-
ExecutionAgent invokes execute_command tool
-
PersistArbitrary OS commands run on host
-
ImpactFull server compromise
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A07:2025 - Authentication Failures
ASVS 5.0
V6 - Authentication Authentication required for critical functions
MITRE ATT&CK
1 technique across 1 tactic: Initial Access The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Exploitation requires only that the PraisonAI Jobs API (POST /api/v1/runs, default port 8005) be network-reachable - it enforces no token or session, matching PR:N. There are no non-default configuration prerequisites: the vulnerable endpoint ships without the verify_token dependency used by the authenticated agent_invoke endpoint, and the 'approve' YAML field bypass works against the default @require_approval safety decorator on execute_command. The only real limiting factor is deployment exposure: the Jobs API must be running and accessible to the attacker (internet- or network-exposed), and the agent must have the execute_command (critical) tool available. No user interaction, credentials, or operator approval is needed. |
| Impact | This is a genuine top-priority vulnerability, and the CVSS 9.8 is well-calibrated rather than inflated. The vector CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H is fully consistent with the description and the vendor advisory: a network-reachable, unauthenticated endpoint (POST /api/v1/runs, missing the Depends(verify_token) present on the sibling authenticated endpoint) chains with an approval-decorator bypass (attacker-controlled top-level 'approve' YAML field pre-marks execute_command as approved before @require_approval's critical-risk check) to yield arbitrary OS command execution - i.e., full C/I/A on the host. SSVC reinforces this: Exploitation:poc, Automatable:yes, Technical Impact:total. A working PoC (curl one-liner) is embedded in the GHSA advisory, so publicly available exploit code exists. The one signal that runs slightly counter is EPSS at 0.41% (35th percentile), which is modest - but EPSS reflects observed/predicted mass-exploitation volume for a niche package, not the ease of exploitation, so it should not lower the operational priority for anyone actually running the Jobs API. There is no CISA KEV listing, so despite the trivial, automatable, unauthenticated RCE this is not yet confirmed as actively exploited in the wild; it should be treated as imminently exploitable rather than known-exploited. |
| Exploit ScenarioDerived | A remote attacker with no credentials sends a single crafted HTTP POST to the exposed PraisonAI Jobs API (/api/v1/runs) containing an agent_yaml payload that both defines a workflow invoking execute_command and includes a top-level 'approve: [execute_command]' entry, which silently neutralizes the critical-tool approval gate. The configured LLM agent then runs the attacker's OS commands on the server with no operator interaction. A functional proof-of-concept curl request is published in the GHSA-4869-x4pr-q22x advisory, making exploitation trivial to reproduce. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Sep 16, 2026
Unauthenticated remote code execution in the PraisonAI multi-agent framework lets any network-reachable caller run arbitrary operating-system commands on servers exposing the Jobs API. The attack chains two defects: the POST /api/v1/runs endpoint ships without the verify_token dependency used by the authenticated agent_invoke endpoint (PR:N, no credentials or session required), and an attacker-supplied top-level 'approve' field in the submitted agent_yaml is loaded into a ContextVar that the @require_approval decorator consults before any risk-level check, so listing 'execute_command' makes the critical-tool approval gate a no-op with no operator interaction (CVSS 3.1 9.8, AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H, CWE-306). Affected releases are praisonai through 4.6.48 and praisonaiagents prior to 1.6.59, both fixed in 4.6.59 and 1.6.59 respectively; publicly available exploit code exists (a curl-based PoC is published in the GHSA advisory) and CISA's SSVC assessment rates the issue automatable with total technical impact, although no confirmed active exploitation (CISA KEV) has been reported and the current EPSS score is low at 0.41% (35th percentile).
RemediationAI
Vendor-released patch: upgrade to praisonai 4.6.59 and praisonaiagents 1.6.59 (commit 2adfe7e8323f6deec66925cf15a885b6238895e9), which makes is_yaml_approved return False for any tool whose risk level is 'critical' so the YAML 'approve' field can no longer neutralize @require_approval on execute_command. Because the Jobs API itself is intentionally unauthenticated in the vulnerable build, treat the patch as mandatory rather than optional; see https://github.com/MervinPraison/PraisonAI/security/advisories/GHSA-4869-x4pr-q22x and https://github.com/MervinPraison/PraisonAI/releases/tag/v4.6.59 for details. If immediate upgrade is not possible, the most effective compensating control is to stop exposing POST /api/v1/runs on port 8005: bind the Jobs service to localhost or an internal interface, block the port at the perimeter/firewall, or front it with an authenticating reverse proxy that requires credentials - the trade-off is that legitimate job submission also becomes unreachable or must be re-pointed through the proxy. Alternatively, remove or disable the execute_command tools from deployed agent YAML configurations and any other critical-risk tools so the bypass has no dangerous target, accepting reduced agent functionality; the same release's optional MCP_SSE_AUTH_TOKEN/MCP_SSE_ALLOWED_ORIGINS SSE middleware and the PRAISONAI_JOBS_AGENT_ROOT / PRAISONAI_INSECURE_WEBHOOKS hardening flags address adjacent exposure but do not by themselves close the unauthenticated /api/v1/runs entry point.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 2 packages in pypi
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
PraisonAI is a Python (pip) multi-agent orchestration framework distributed as two packages - praisonai (the server/jobs layer) and praisonaiagents (the agent runtime) - and the flaw lives in the intersection of an HTTP API and a YAML-driven tool-approval system. Root cause class is CWE-306 (Missing Authentication for Critical Function): the FastAPI router in src/praisonai/praisonai/jobs/router.py declares the POST /api/v1/runs handler with only a JobSubmitRequest body and omits the Depends(verify_token) guard that the parallel agent_invoke.py endpoint correctly applies, so an unauthenticated JSON request carrying an attacker-controlled agent_yaml is executed as a job. The second link is a logic-order defect in the approval subsystem: yaml_parser.py reads an attacker-controlled 'approve' list (line 261) and assigns it to workflow.approve_tools (line 370); workflows.py (line 1025) then calls set_yaml_approved_tools(approve_tools) to populate a ContextVar, and approval/__init__.py (line 179) checks is_yaml_approved(tool_name) and returns func(*args, **kwargs) before consulting the tool's risk level. Because the YAML-approved check precedes the @require_approval(risk_level="critical") evaluation, declaring 'approve: [execute_command]' in the submitted YAML grants the LLM agent unrestricted shell execution. The upstream commit 2adfe7e8323f6deec66925cf15a885b6238895e9 hardens this by short-circuiting is_yaml_approved to return False when get_risk_level(tool_name) == "critical" (registry.py), and the same release adds defense-in-depth changes: optional Bearer-token and Origin validation middleware for the MCP SSE server (MCP_SSE_AUTH_TOKEN / MCP_SSE_ALLOWED_ORIGINS, mcp_security.py, mcp_server.py), fail-closed webhook verification unless PRAISONAI_INSECURE_WEBHOOKS is set, a PRAISONAI_JOBS_AGENT_ROOT path-traversal guard (validate_agent_file_path), and an expanded python_tools attribute denylist (adding 'format', 'format_map').
Know when Praisonai gets its next vulnerability
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
Network-reachable, unauthenticated endpoint with no user interaction and a trivial, deterministic approval bypass yielding arbitrary OS command execution, so full C/I/A; scope unchanged as commands run within the server's own authority.
Primary rating from Vendor (GitHub_M).
CVSS VectorVendor: GitHub_M
Lifecycle Timeline
2DescriptionCVE.org
PraisonAI is a multi-agent teams system. Prior to praisonai 4.6.59 and praisonaiagents 1.6.59, the unauthenticated POST /api/v1/runs Jobs API accepts attacker-controlled agent_yaml, and the approve field can mark execute_command as YAML-approved before @require_approval checks critical tools. This chain allows a remote caller to cause a configured language model agent to invoke arbitrary operating-system commands without credentials or operator interaction. This vulnerability is fixed in praisonai 4.6.59 and praisonaiagents 1.6.59 as fixed versions.
Technical POC Analysis
Two defects chain together.
Full technical POC analysis - root cause, step-by-step exploitation and patch breakdown - is part of the Pro and Business plans.
Executive ViewAI
PraisonAI, an open-source multi-agent orchestration framework, contains a critical unauthenticated remote code execution flaw in its Jobs API that allows any party capable of reaching the service over the network to execute arbitrary operating-system commands on the host without credentials or user interaction. Organizations running any affected version - and particularly those exposing the Jobs API beyond a trusted internal boundary - should treat this as a full host-compromise risk affecting the confidentiality, integrity, and availability of the systems and data the framework can reach. Because the flaw is remotely triggerable by an unauthenticated caller and public proof-of-concept exploit code is already circulating, remediation urgency is driven by exposure and blast radius rather than by any observed attack activity.
Apply vendor patch.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Authentication bypass attacks exploit flaws in the verification mechanisms that control access to systems and applications.
Remote code execution in PraisonAI before 1.6.78 allows attackers to run arbitrary Python on the host by manipulating th
PraisonAI's TypeScript MCP server (npm package `praisonai`, versions 1.5.0 through 1.7.1) exposes an HTTP JSON-RPC trans
WebSocket origin-validation bypass in PraisonAI's Browser Server (praisonai/browser/server.py) before 4.6.58 lets an att
PraisonAI's `praisonai serve` subsystem (agents and unified modes) accepts an `--api-key` CLI flag that is parsed but ne
System prompt extraction and unauthorized tool invocation in PraisonAI before 4.6.78 arise because the prompt-injection
Unauthenticated remote agent invocation in PraisonAI versions 4.6.34 through 4.6.57 allows any network-reachable caller
SSRF protection bypass in PraisonAI's praisonaiagents library (all versions before 1.6.58) lets low-privileged users rou
Server-side request forgery in PraisonAI's Crawl4AI/Chromium crawling backend (all versions before 1.6.78) lets low-priv
Authentication fail-open in PraisonAI's Recipe HTTP server allows unauthenticated remote attackers to invoke recipe exec
Authentication bypass in PraisonAI's AgentServer component exposes all routes - /publish, /events, /info, /health - to u
Arbitrary Python code execution in PraisonAI's workflow include feature allows an attacker who controls a local recipe d
Server-side request forgery in PraisonAI's web_crawl() function (versions 1.5.128-1.6.57) allows an attacker who can inf
EUVD-2026-77531
GHSA-4869-x4pr-q22x
NVD
CVE.org
EPSS
Vulnrichment
Exploit-DB