Skip to main content

Agno PythonTools CVE-2026-76832

| EUVDEUVD-2026-63135 HIGH
Path Traversal (CWE-22)
2026-08-19 disclosure@vulncheck.com GHSA-fpc4-x22x-vhwx
8.5
CVSS 4.0 · Vendor: vulncheck
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Attacker crafts traversal sequence in untrusted content
  2. Delivery
    Content ingested by agno agent pipeline
  3. Exploit
    Agent invokes PythonTools tool action with traversal file_name
  4. Execution
    Path.joinpath() constructs out-of-bounds path without validation
  5. Persist
    base_dir boundary bypassed
  6. Impact
    Arbitrary 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.

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.9).
No patch listed yet 0.8% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – 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

agno 0 ≤710d7e7

Affected Packages

euvd agno no fix

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

Vendor (vulncheck) PRIMARY 8.5 HIGH
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
vuln.today AI 9.6 CRITICAL

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.

3.1 AV:N/AC:L/PR:N/UI:R/S:C/C:H/I:H/A:H
4.0 AV:N/AC:L/AT:N/PR:N/UI:A/VC:H/VI:H/VA:H/SC:H/SI:H/SA:H

Primary rating from Vendor (vulncheck).

CVSS VectorVendor: vulncheck

Attack Vector
Adjacent
Attack Complexity
Low
Attack Requirements
None
Privileges Required
None
User Interaction
Active
Vulnerable system: Confidentiality
High
Vulnerable system: Integrity
High
Vulnerable system: Availability
High
Subsequent system: Confidentiality
None
Subsequent system: Integrity
None
Subsequent system: Availability
None

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

Why It Matters

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.

Business Impact: High
Compensating Controls

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

EPSS Score
0.8%
Top 45% exploitable
Prevalence
Low
niche Python AI agent framework, limited enterprise production footprint
Social Media
2
Sightings
Data Quality
6 sources
Confidence: High

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.

SignalValue
Severity HIGH
CISA KEV No
Public POC No
EPSS 0.8%
Patch available No
Active threat No
Deciding rule
HIGH severity (CVSS 7.0-8.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision
Scheduled
Exploitation
None
System Exposure· derived
Controlled
Automatable
No
Human Impact
High
Technical Impact
Total

Priority Score

43
Low Medium High Critical
KEV: 0
EPSS: +1
CVSS: +42
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

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.

More in Python

View all
CVE-2025-24016 CRITICAL POC
9.9 Feb 10

Wazuh SIEM platform versions 4.4.0 through 4.9.0 contain an unsafe deserialization vulnerability in the DistributedAPI t

CVE-2025-27520 CRITICAL POC
9.8 Apr 04

BentoML version 1.4.2 and earlier contains an unauthenticated remote code execution vulnerability through insecure deser

CVE-2025-2945 CRITICAL POC
9.9 Apr 03

pgAdmin 4 contains critical remote code execution vulnerabilities in the Query Tool download and Cloud Deployment endpoi

CVE-2013-5093 MEDIUM POC
6.8 Sep 27

The renderLocalView function in render/views.py in graphite-web in Graphite 0.9.5 through 0.9.10 uses the pickle Python

CVE-2025-32375 CRITICAL POC
9.8 Apr 09

BentoML is a Python library for building online serving systems optimized for AI apps and model inference. Rated critica

CVE-2014-0224 HIGH POC
7.4 Jun 05

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

CVE-2024-21644 HIGH POC
7.5 Jan 08

pyLoad download manager version prior to 0.5.0b3.dev77 exposes the Flask SECRET_KEY through an unauthenticated endpoint.

CVE-2026-33017 CRITICAL POC
9.3 Mar 17

Langflow (a visual LLM pipeline builder) contains a critical unauthenticated code execution vulnerability (CVE-2026-3301

CVE-2017-9462 HIGH POC
8.8 Jun 06

In Mercurial before 4.1.3, "hg serve --stdio" allows remote authenticated users to launch the Python debugger, and conse

CVE-2026-49869 CRITICAL POC
10.0 Jun 26

Unauthenticated remote code execution affects Kestra OSS (the open-source event-driven orchestration platform) prior to

CVE-2026-39987 CRITICAL POC
9.3 Apr 08

Unauthenticated remote code execution in Marimo ≤0.20.4 allows attackers to execute arbitrary system commands via the `/

CVE-2024-21645 MEDIUM POC
5.3 Jan 08

pyLoad is the free and open-source Download Manager written in pure Python. Rated medium severity (CVSS 5.3), this vulne

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy