Python
CVE-2026-39305
CRITICAL
Severity by source
AV:L/AC:L/PR:N/UI:N/S:C/C:N/I:H/A:H
Primary rating from GitHub Advisory · only source for this CVE.
CVSS VectorGitHub Advisory
CVSS:3.1/AV:L/AC:L/PR:N/UI:N/S:C/C:N/I:H/A:H
Lifecycle Timeline
5DescriptionGitHub Advisory
The Action Orchestrator feature contains a Path Traversal vulnerability that allows an attacker (or compromised agent) to write to arbitrary files outside of the configured workspace directory. By supplying relative path segments (../) in the target path, malicious actions can overwrite sensitive system files or drop executable payloads on the host.
Details
Location: src/praisonai/praisonai/cli/features/action_orchestrator.py (Lines 402, 409, 423)
Vulnerable Code snippet:
target = workspace / step.targetIn the _apply_step method, paths are constructed by concatenating the workspace path with a user-supplied step.target string: target = workspace / step.target. The code fails to resolve and validate that the final absolute path remains within the bounds of the workspace directory. When processing FILE_CREATE or FILE_EDIT actions, this flaw permits arbitrary file modification.
PoC
Construct a malicious ActionStep payload with path traversal characters:
from praisonai.cli.features.action_orchestrator import ActionStep, ActionType, ActionStatus
# Payload targeting a file outside the workspace
step = ActionStep(
id="test_traversal",
action_type=ActionType.FILE_CREATE,
description="Malicious file write",
target="../../../../../../../tmp/orchestrator_pwned.txt",
params={"content": "pwned"},
status=ActionStatus.APPROVED
)
# When the orchestrator applies this step, it writes to the traversed path
# _apply_step(step)Impact
This is an Arbitrary File Write vulnerability. Anyone running the Action Orchestrator to apply modifications is vulnerable. A malicious prompt could trick the agent into generating a plan that overwrites critical files (e.g., ~/.ssh/authorized_keys, .bashrc) leading to Remote Code Execution (RCE) or system corruption.
AnalysisAI
Arbitrary file write via path traversal in PraisonAI's Action Orchestrator allows compromised agents to overwrite critical system files and achieve remote code execution. The vulnerability affects the praisonai pip package, where unsanitized user input in file operation targets enables directory traversal attacks using '../' sequences. Public exploit code exists with detailed proof-of-concept demonstrating overwrite of SSH keys and shell configuration files. Despite CVSS 9.0 (Critical), EPSS score is 2% (4th percentile), indicating low observed exploitation probability in the wild. Vendor patch released in version 4.5.113.
Technical ContextAI
The vulnerability exists in PraisonAI's Action Orchestrator component, a Python-based workflow automation feature that processes file system operations. The flaw manifests in the _apply_step method where Python's pathlib Path concatenation operator (/) is used without validation: 'target = workspace / step.target'. Python's Path class does not inherently prevent directory traversal when combining paths with user-controlled components. CWE-22 (Path Traversal) represents a classic input validation failure where relative path segments bypass intended directory restrictions. The vulnerable code affects FILE_CREATE and FILE_EDIT action types, which write content directly to the constructed path without checking if the resolved absolute path escapes the workspace boundary. This is a canonical example of insufficient path canonicalization - the code should use Path.resolve() to normalize the path and verify it starts with the workspace prefix before any file operations.
RemediationAI
Upgrade praisonai to version 4.5.113 or later via pip: 'pip install --upgrade praisonai>=4.5.113'. Vendor-released patch available at https://github.com/MervinPraison/PraisonAI/releases/tag/v4.5.113 addresses the path validation flaw. If immediate patching is not feasible, implement strict input validation by modifying _apply_step to resolve paths and verify containment: after 'target = workspace / step.target', add 'resolved_target = target.resolve()' and 'if not resolved_target.is_relative_to(workspace.resolve()): raise ValueError("Path traversal detected")'. This workaround prevents traversal but requires code modification (breaks vendor support). Alternative compensating control: restrict orchestrator execution to isolated containers with read-only root filesystem and explicit write permissions only to /tmp or dedicated workspace volumes - limits blast radius to container scope but reduces functionality for legitimate file operations. Disable the Action Orchestrator feature entirely if not operationally required by avoiding imports from praisonai.cli.features.action_orchestrator module. For multi-tenant deployments, ensure each workspace runs under separate user accounts with restrictive umask and mandatory access controls to prevent cross-tenant file writes even if traversal succeeds.
Wazuh SIEM platform versions 4.4.0 through 4.9.0 contain an unsafe deserialization vulnerability in the DistributedAPI t
BentoML version 1.4.2 and earlier contains an unauthenticated remote code execution vulnerability through insecure deser
pgAdmin 4 contains critical remote code execution vulnerabilities in the Query Tool download and Cloud Deployment endpoi
The renderLocalView function in render/views.py in graphite-web in Graphite 0.9.5 through 0.9.10 uses the pickle Python
BentoML is a Python library for building online serving systems optimized for AI apps and model inference. Rated critica
OpenSSL before 0.9.8za, 1.0.0 before 1.0.0m, and 1.0.1 before 1.0.1h does not properly restrict processing of ChangeCiph
pyLoad download manager version prior to 0.5.0b3.dev77 exposes the Flask SECRET_KEY through an unauthenticated endpoint.
In Mercurial before 4.1.3, "hg serve --stdio" allows remote authenticated users to launch the Python debugger, and conse
Unauthenticated remote code execution in Marimo ≤0.20.4 allows attackers to execute arbitrary system commands via the `/
pyLoad is the free and open-source Download Manager written in pure Python. Rated medium severity (CVSS 5.3), this vulne
Langflow (a visual LLM pipeline builder) contains a critical unauthenticated code execution vulnerability (CVE-2026-3301
Cross-user flow execution in Langflow (< 1.9.1) lets any authenticated API-key holder run another user's flow by passing
Same weakness CWE-22 – Path Traversal
View allShare
External POC / Exploit Code
Leaving vuln.today
GHSA-jfxc-v5g9-38xr