Severity by source
AV:N/AC:L/PR:L/UI:R/S:U/C:N/I:L/A:L
Primary rating from GitHub Advisory · only source for this CVE.
CVSS VectorGitHub Advisory
CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:U/C:N/I:L/A:L
Lifecycle Timeline
7DescriptionGitHub Advisory
PPTAgent is an agentic framework for reflective PowerPoint generation. Prior to commit 418491a, PPTAgent is vulnerable to arbitrary file write and directory creation via markdown_table_to_image. This issue has been patched via commit 418491a.
AnalysisAI
PPTAgent prior to commit 418491a allows authenticated users to write arbitrary files and create directories outside intended workspace boundaries via path traversal in the markdown_table_to_image function. An attacker with login access can supply crafted file paths containing directory traversal sequences to escape the configured workspace and write malicious files to arbitrary locations on the system. The vulnerability requires user interaction (UI:R in CVSS vector) and affects confidentiality and availability, with no public exploit code identified at time of analysis.
Technical ContextAI
PPTAgent is an agentic framework for automated PowerPoint presentation generation. The vulnerability stems from improper path validation in the markdown_table_to_image and related file-handling functions within pptagent/utils.py and pptagent/mcp_server.py. The root cause is CWE-22 (Improper Limitation of a Pathname to a Restricted Directory), where user-supplied file paths are used directly with os.path.split() and os.path.write() without validating that the resolved path remains within the intended workspace boundary. The patch introduces a resolve_path_in_workspace() utility function that resolves the path and validates it is relative to (stays within) the workspace root using Python's Path.is_relative_to() method. Additionally, the patch restricts eval() globals to prevent access to dangerous built-in functions, addressing a secondary code injection vector.
RemediationAI
Upgrade to the patched version of PPTAgent that includes commit 418491a or later. Users should rebuild or reinstall PPTAgent from the main branch after the patch commit. The fix can be verified by checking that pptagent/utils.py contains the resolve_path_in_workspace() function, which validates all file paths against the workspace boundary. If immediate patching is not possible, deploy PPTAgent in an isolated environment with strict file system permissions, restrict user access to authenticated administrators only, and monitor file system writes outside the intended workspace directory using audit logs or intrusion detection. Note that input validation mitigations (filtering '..' or '/' from user input) are insufficient for path traversal; only the Path.resolve() and is_relative_to() approach used in the patch provides reliable protection.
Same weakness CWE-22 – Path Traversal
View allSame technique Path Traversal
View allShare
External POC / Exploit Code
Leaving vuln.today
EUVD-2026-27014
GHSA-hrcw-xc63-g29m