Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessAttacker crafts traversal sequence in untrusted content
-
DeliveryContent ingested by agno agent pipeline
-
ExploitAgent invokes PythonTools tool action with traversal file_name
-
ExecutionPath.joinpath() constructs out-of-bounds path without validation
-
Persistbase_dir boundary bypassed
-
ImpactArbitrary file read, write, or Python execution achieved as process user
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V5 - File Handling Path canonicalization, traversal prevention
MITRE ATT&CK
2 techniques across 2 tactics: Discovery, Collection The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Exploitation requires an agno agent deployment with PythonTools instantiated and reachable by the attacker either via direct API/tool invocation or via content the agent processes (prompt injection vector). The pre-patch PythonTools constructor offered no restrict_to_base_dir flag, so all pre-fix deployments using any of read_file, save_to_file, or run_python_file are vulnerable regardless of configuration. Exploitation is limited by: (1) OS-level sandboxing - if the agent process runs in a container or chroot restricted to a single directory, traversal still occurs but reachable files are bounded by that environment; (2) agent-level guardrails or system prompts that prevent tool calls based on untrusted content, though no such mitigation was present by default in the vulnerable version; (3) process user permissions - the attacker can only reach files readable/writable/executable by the agent process user. The CVSS 4.0 UI:A metric reflects that a user or agent pipeline action must trigger tool invocation; passive exploitation without any agent activity is not possible. |
| Impact | The CVSS 4.0 score of 8.5 with AV:A and UI:A indicates network-adjacent delivery requiring active interaction, which understates real-world risk in agentic deployments: prompt injection via externally sourced content (web pages, documents, API responses) that the agent processes constitutes a network-delivered attack requiring only that the agent pipeline be exposed to untrusted input, pushing the practical attack vector closer to AV:N. EPSS data is absent from the provided intelligence, preventing probabilistic exploitation rate comparison. KEV status is negative and no public POC is confirmed, which moderates immediate urgency, but the exploitation primitives - arbitrary file read, write, and Python execution bounded only by the process user's OS permissions - are high-value and the technique is well understood. The SSVC automation dimension is unfavorable: because the exploit can ride prompt injection in any content the agent processes, attacks can be automated against any deployment where the agent ingests untrusted text. Even a small team operating an agno-based service with PythonTools enabled and exposed to external content should treat remediation as urgent. The scope change (breaking out of base_dir to the broader host filesystem) means the vulnerable-system and subsequent-system impact boundary requires careful assessment per deployment. |
| Exploit ScenarioDerived | An attacker embeds a prompt injection payload in a webpage or document processed by an agno agent - for example, invisible text instructing the agent to call read_file with file_name='../../../../../../etc/shadow' and relay the output. The agent, lacking independent validation of tool arguments, invokes PythonTools.read_file() with the traversal sequence, bypasses the base_dir boundary, and returns the contents of the sensitive file to the attacker-controlled conversation. With write and execute primitives also exposed via save_to_file and run_python_file, a chained payload can drop and execute an arbitrary Python script, yielding a reverse shell running as the agent process user. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Aug 19, 2026
Arbitrary file read, write, and Python code execution in Agno's PythonTools (agno.tools.python) exposes any file accessible to the agent process via path traversal sequences injected into the file_name argument of read_file, save_to_file, or run_python_file. The root cause is use of Path.joinpath() without resolving or validating the resulting path against the intended base_dir boundary, enabling escape via sequences such as '../../../../../../etc/passwd'. No public exploit has been identified at time of analysis, but the attack is trivially constructible and can be delivered through direct tool invocation or prompt injection embedded in agent-processed content, giving any untrusted input source a path to OS-level code execution within the agent process.
RemediationAI
The upstream fix is available in commit 710d7e7f846f93b7a3eadfd3e77075428c39e803 (https://github.com/agno-agi/agno/commit/710d7e7f846f93b7a3eadfd3e77075428c39e803); operators should upgrade to the first PyPI release of agno that incorporates this commit - exact version not independently confirmed, so verify at the VulnCheck advisory (https://www.vulncheck.com/advisories/agno-pythontools-path-traversal-via-joinpath-file-name-argument) or the agno release history. If immediate upgrade is not feasible, the primary compensating control is to disable PythonTools entirely in any agent that processes untrusted input, which eliminates the attack surface at the cost of losing file and Python execution capabilities. A secondary control is to run the agent process as a dedicated low-privilege OS user confined to a chroot or container whose filesystem contains only the intended working directory; this does not prevent path traversal but limits the files reachable by a successful exploit. Note that post-patch deployments include restrict_to_base_dir=True by default; any operator who explicitly sets restrict_to_base_dir=False on an updated version re-enables the vulnerable behavior.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 1 package in euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
CWE-22 (Path Traversal) describes the root cause: user-controlled path components are concatenated with a trusted base path using Python's pathlib.Path.joinpath() without subsequent resolution or containment validation. The affected class is agno.tools.python.PythonTools in the agno Python AI agent framework (GitHub: agno-agi/agno). The methods read_file, save_to_file_and_run, and run_python_file_return_variable all called self.base_dir.joinpath(file_name) and proceeded directly to file I/O or subprocess execution, never checking whether the resolved path remained within self.base_dir. The fix commit 710d7e7f846f93b7a3eadfd3e77075428c39e803 introduces a shared _check_path() method in toolkit.py that calls Path.resolve() on the candidate path and uses relative_to(base_dir) to enforce containment, returning a (is_safe, resolved_path) tuple. The same class of defect was concurrently patched in agno.tools.file.FileTools and agno.tools.mlx_transcribe.MLXTranscribeTools in the same commit. A new restrict_to_base_dir=True constructor flag was added to PythonTools and MLXTranscribeTools, defaulting to enforced sandboxing post-patch.
Know when Python 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
CVSS:4.0/AV:A/AC:L/AT:N/PR:N/UI:A/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N
Prompt injection via internet-sourced content enables network delivery (AV:N); agent pipeline interaction required (UI:R); traversal escapes intended base_dir sandbox constituting scope change (S:C); full triad impact via read, write, and code execution.
Primary rating from Vendor (vulncheck).
CVSS VectorVendor: vulncheck
DescriptionCVE.org
Agno's PythonTools in libs/agno/agno/tools/python.py contains a path traversal vulnerability that allows attackers to read, write, or execute arbitrary files by supplying parent-directory traversal sequences in the file_name argument passed to read_file, save_to_file, or run_python_file tool actions. Attackers can inject traversal sequences such as '../../../../../../etc/passwd' through direct tool invocation or via prompt injection embedded in agent-processed content to escape the intended base_dir boundary and achieve arbitrary file read, arbitrary file write, or arbitrary Python code execution within the process user's authority.
Executive ViewAI
Agno's PythonTools component contains a path traversal vulnerability enabling arbitrary file read/write and Python code execution within deployed agent processes. Organizations using affected versions lack a vendor patch and face data exposure and command execution risks, particularly when agents process untrusted input or experience prompt injection attacks.
No vendor-released patch identified at time of analysis. Interim mitigations: (1) disable or unload vulnerable file and code execution functions; (2) implement input filtering to reject path traversal patterns ('..', '/', symbolic links); (3) isolate agent processes via containerization or OS-level sandboxing (seccomp, AppArmor, SELinux); (4) restrict filesystem mounts to read-only where possible; (5) enforce principle of least privilege on agent process permissions; (6) monitor process-level file access logs and network connections for anomalies; (7) segment agents from sensitive data and systems via network isolation.
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
Path traversal exploits occur when applications use user-controlled input to construct file system paths without proper validation.
Remote Code Execution represents the critical moment when an attacker successfully runs arbitrary code on a target system without physical access.
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.
Langflow (a visual LLM pipeline builder) contains a critical unauthenticated code execution vulnerability (CVE-2026-3301
In Mercurial before 4.1.3, "hg serve --stdio" allows remote authenticated users to launch the Python debugger, and conse
Unauthenticated remote code execution affects Kestra OSS (the open-source event-driven orchestration platform) prior to
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
EUVD-2026-63135
GHSA-fpc4-x22x-vhwx
NVD
CVE.org
EPSS
Vulnrichment
Exploit-DB