CVEReports
CVEReports

Automated vulnerability intelligence platform. Comprehensive reports for high-severity CVEs generated by AI.

Product

  • Home
  • Sitemap
  • RSS Feed

Company

  • About
  • Contact
  • Privacy Policy
  • Terms of Service

© 2026 CVEReports. All rights reserved.

Made with love by Amit Schendel & Alon Barad



CVE-2026-42080

CVE-2026-42080: Arbitrary File Write and Path Traversal in PPTAgent MCP Server

Amit Schendel
Amit Schendel
Senior Security Researcher

May 5, 2026·6 min read·54 visits

Executive Summary (TL;DR)

A path traversal flaw in PPTAgent allows low-privileged attackers to write PowerPoint presentations and image files to arbitrary locations on the host filesystem via unvalidated path inputs.

PPTAgent versions prior to commit 418491a9a1c02d9d93194b5973bb58df35cf9d00 contain a path traversal vulnerability (CWE-22) within the Model Context Protocol (MCP) server's file handling mechanisms. An attacker with low privileges can supply crafted file paths containing traversal sequences to write files or create directories outside the intended workspace boundaries. This results in unauthorized file modification and limited host filesystem exposure.

Vulnerability Overview

PPTAgent is an agentic framework designed to generate reflective PowerPoint presentations. The framework utilizes a Model Context Protocol (MCP) server to handle file operations and content generation. Versions of PPTAgent prior to commit 418491a9a1c02d9d93194b5973bb58df35cf9d00 fail to restrict user-supplied paths to intended workspace directories.

This vulnerability is classified as CWE-22, denoting the improper limitation of a pathname to a restricted directory. The flaw manifests in several file-handling utilities within the framework. Attackers with low-level privileges can provide crafted paths containing traversal sequences to write files to arbitrary locations on the host filesystem.

While the impact is constrained by the nature of the written files, the vulnerability exposes the host operating system to unintended file modifications. The CVSS v3.1 base score is 4.6, reflecting the medium severity of this issue. Exploitation requires user interaction, as the attack payload must be processed by the agent interface.

Technical Root Cause Analysis

The root cause of this vulnerability lies in the direct use of unvalidated input for file system operations. Specifically, the save_generated_slides function in pptagent/mcp_server.py accepts a pptx_path parameter directly from the agent's context. The function wraps this input in a Python Path object but performs no sanitization or bounds checking.

Following the object creation, the code invokes pptx.parent.mkdir(parents=True, exist_ok=True) and subsequently saves the generated presentation. Because the absolute path or traversal sequences are not resolved against a secure base directory, the framework will create directories and write files wherever the user specifies. This mechanism is limited only by the operating system permissions assigned to the PPTAgent process.

A secondary manifestation of this flaw exists in the get_html_table_image function located in pptagent/utils.py. The output_path parameter is processed using os.path.split(), which similarly fails to restrict the destination directory. An independent but related security weakness was identified in pptagent/apis.py, where eval() was used without a restricted execution environment, presenting an expression injection risk.

Code Analysis and Patch Details

The patch introduced in commit 418491a9a1c02d9d93194b5973bb58df35cf9d00 addresses the path traversal flaw by implementing a robust path resolution utility. The developers added the resolve_path_in_workspace function to pptagent/utils.py. This function normalizes the provided path and verifies its relationship to the intended workspace.

def resolve_path_in_workspace(path_str: str, workspace: Path | None = None) -> Path:
    workspace_root = (workspace or Path.cwd()).resolve()
    target = Path(path_str).resolve()
    if not target.is_relative_to(workspace_root):
        raise ValueError(f"Access denied: path outside allowed workspace: {workspace_root}")
    return target

The save_generated_slides function was subsequently updated to invoke this resolver before executing file operations. By utilizing Path.resolve(), the application computes the absolute path, effectively nullifying ../ traversal sequences. The is_relative_to() method then guarantees that the computed path strictly resides within the boundaries of the workspace_root.

Furthermore, the developers hardened the eval() usage in pptagent/apis.py. The execution context is now explicitly restricted by defining a safe global environment. By injecting SAFE_EVAL_GLOBALS = {"__builtins__": {}}, the application prevents attackers from accessing dangerous built-in Python functions during expression evaluation.

Exploitation Mechanics

Exploitation of this vulnerability requires the attacker to supply a crafted payload to the MCP server. The attacker must interact with the agent interface and trigger the save_generated_slides capability. A successful exploit payload includes directory traversal sequences, structured similarly to ../../../../tmp/malicious.pptx.

Upon processing the payload, the vulnerable Python process resolves the relative path according to its current working directory. The mkdir function processes the traversal segment, creating any missing directories along the unintended path. The python-pptx library then generates the presentation and writes the payload to disk at the targeted location.

The attacker exercises limited control over the byte-level contents of the written file. Because the file is generated by the python-pptx library or image rendering utilities, the written structure is dictated by those specific binary formats. This constraint generally prevents the direct writing of executable scripts, such as shell scripts or Python files, minimizing the direct code execution risk.

Security Impact Assessment

The security impact of CVE-2026-42080 is evaluated as Medium, primarily due to the limited scope of the file write primitive. The vulnerability allows an attacker to manipulate the filesystem structure by creating nested directories and writing files. However, the inability to control the exact byte contents of the output restricts the potential for direct system compromise.

The CVSS v3.1 vector evaluates to CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:U/C:N/I:L/A:L. Confidentiality remains unimpacted, as the flaw does not facilitate arbitrary file reading. Integrity is partially compromised because unauthorized files are created, but critical system binaries cannot be directly modified with executable attacker-controlled data.

Availability may suffer a partial impact if the attacker intentionally overwrites critical configuration files or service dependencies with the generated PowerPoint data. Such an action would corrupt the targeted files, potentially causing service outages for processes relying on them. The calculated EPSS score of 0.00036 indicates a very low likelihood of active exploitation in the wild within the immediate timeframe.

Remediation and Defensive Strategies

To remediate this vulnerability, organizations must update their PPTAgent deployments to incorporate commit 418491a9a1c02d9d93194b5973bb58df35cf9d00 or a subsequent release. This patch comprehensively addresses both the CWE-22 path traversal and the secondary expression injection risks. Code changes take effect upon fully restarting the MCP server process.

Security engineers should apply the principle of least privilege to the environment hosting the PPTAgent server. The operating system user executing the Python process must possess write permissions exclusively for the designated workspace directory. Restricting overarching filesystem permissions effectively mitigates the impact of potential bypasses in application-level path validation.

Network defenders can implement detection mechanisms to monitor for path traversal attempts. Internal network intrusion detection systems should flag payloads containing traversal patterns like ../ or absolute file paths directed at the MCP server. Regular security audits of agentic frameworks are strongly recommended to identify similar input validation weaknesses.

Official Patches

icip-casFix commit for PPTAgent
GitHub AdvisoryGitHub Security Advisory

Fix Analysis (1)

Technical Appendix

CVSS Score
4.6/ 10
CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:U/C:N/I:L/A:L
EPSS Probability
0.04%
Top 100% most exploited

Affected Systems

PPTAgent (icip-cas)

Affected Versions Detail

Product
Affected Versions
Fixed Version
PPTAgent
icip-cas
< 418491a9a1c02d9d93194b5973bb58df35cf9d00418491a9a1c02d9d93194b5973bb58df35cf9d00
AttributeDetail
Vulnerability ClassCWE-22: Path Traversal
Attack VectorNetwork
CVSS v3.1 Score4.6
EPSS Score0.00036
ImpactArbitrary File Write / Directory Creation
Exploit StatusNone
CISA KEVNot Listed

MITRE ATT&CK Mapping

T1083File and Directory Discovery
Discovery
T1005Data from Local System
Collection
CWE-22
Path Traversal

Improper Limitation of a Pathname to a Restricted Directory ('Path Traversal')

Vulnerability Timeline

Vulnerability patched via commit 418491a9a1c02d9d93194b5973bb58df35cf9d00
2026-04-19
CVE-2026-42080 published by NVD
2026-05-04
GitHub Advisory GHSA-pxhg-7xr2-w7xg released
2026-05-04
Vulnerability research and analysis performed
2026-05-05

References & Sources

  • [1]NVD Vulnerability Detail - CVE-2026-42080
  • [2]GitHub Security Advisory GHSA-pxhg-7xr2-w7xg
  • [3]Patch Commit 418491a9a1c02d9d93194b5973bb58df35cf9d00

Attack Flow Diagram

Press enter or space to select a node. You can then use the arrow keys to move the node around. Press delete to remove it and escape to cancel.
Press enter or space to select an edge. You can then press delete to remove it or escape to cancel.

More Reports

•about 20 hours ago•GHSA-H5X8-XP6M-X6Q4
7.1

GHSA-H5X8-XP6M-X6Q4: Unvalidated Signature Generation in @jhb.software/payload-cloudinary-plugin

The @jhb.software/payload-cloudinary-plugin exposes an endpoint that performs unvalidated cryptographic signing of Cloudinary API parameters, allowing authenticated users with minimal privileges to forge valid signatures for arbitrary actions. This flaw allows attackers to overwrite remote storage assets, execute unauthorized file uploads, alter asset visibility parameters, trigger SSRF webhooks, and perform directory traversal within Cloudinary repositories.

Alon Barad
Alon Barad
3 views•6 min read
•about 20 hours ago•GHSA-G2GW-Q38M-VJFC
8.7

GHSA-G2GW-Q38M-VJFC: Server-Side Request Forgery and Bearer Token Exfiltration in @merill/lokka

A Server-Side Request Forgery (SSRF) and Bearer Token Exfiltration vulnerability exists in the @merill/lokka (Lokka) Model Context Protocol (MCP) server prior to version 2.1.2. The server constructed Azure Resource Manager request URLs by concatenating user-controlled path parameters directly into destination request strings. By injecting authority-redefinition characters, an attacker can manipulate URL parsing to execute a host-escape attack, forcing the server to send high-privilege Azure Resource Manager (ARM) Bearer tokens to an external attacker-controlled host. This allows complete administrative access to the associated Azure subscriptions.

Alon Barad
Alon Barad
6 views•7 min read
•about 22 hours ago•GHSA-4XGF-CPJX-PC3J
5.3

GHSA-4xgf-cpjx-pc3j: Directory Traversal and Symlink Following in Pydantic Settings

A directory traversal and symlink following vulnerability exists in Pydantic Settings when using the NestedSecretsSettingsSource with nested subdirectory lookups enabled. An attacker capable of writing to the secrets directory can bypass size limitations, read arbitrary host files, or cause a denial-of-service condition via cyclic symlinks.

Amit Schendel
Amit Schendel
2 views•7 min read
•about 23 hours ago•GHSA-H5RG-8P7F-47G2
4.1

GHSA-h5rg-8p7f-47g2: Server-Side Request Forgery (SSRF) in SurrealDB Identity & Access Management (IAM) JWKS Fetcher

A Server-Side Request Forgery (SSRF) vulnerability exists in SurrealDB's Identity & Access Management (IAM) module prior to version 3.1.5. When configuring JSON Web Key Set (JWKS) URLs for token verification, the remote fetcher follows HTTP redirects by default without validating redirect targets against configured network capabilities. This allows high-privileged users to bypass network access limits and perform blind port scanning of internal network resources.

Amit Schendel
Amit Schendel
4 views•6 min read
•about 24 hours ago•GHSA-CC8F-FCX3-GPJR
7.7

GHSA-cc8f-fcx3-gpjr: Arbitrary File Disclosure via DEFINE ANALYZER mapper filter in SurrealDB

A local file disclosure vulnerability exists in SurrealDB's full-text search capabilities, allowing authenticated users with database EDITOR or OWNER roles to read arbitrary files from the host system filesystem. This occurs by abusing the mapper() filter inside a DEFINE ANALYZER statement to point to system files.

Alon Barad
Alon Barad
6 views•6 min read
•1 day ago•GHSA-H4H3-3RFJ-X6FQ
4.3

GHSA-H4H3-3RFJ-X6FQ: Value-Ordering Oracle Side-Channel via Indexed ORDER BY in SurrealDB

SurrealDB versions 3.0.0 through 3.1.4 contain an information exposure vulnerability (CWE-203) where the query planner optimizes sorted queries using indexes on fields with field-level SELECT restrictions. Because the query planner performs index-based sorting before enforcing permission-based redaction, unauthorized users can observe the physical order of returned rows to deduce the relative values of protected fields.

Alon Barad
Alon Barad
4 views•8 min read