Skip to main content
CVE Vulnerability Database
Vulnerability Database/CVE-2026-11416

CVE-2026-11416: MoviePilot Path Traversal Vulnerability

CVE-2026-11416 is a path traversal vulnerability in MoviePilot that allows attackers to overwrite arbitrary files through malicious filenames in cloud storage APIs. This post covers technical details, affected systems, and mitigation.

Published:

CVE-2026-11416 Overview

CVE-2026-11416 is a path traversal vulnerability [CWE-22] in MoviePilot, an open-source media automation application. The flaw affects the AliPan, U115, and Rclone cloud storage download handlers. These handlers construct local destination paths by concatenating the configured download directory with a filename returned from remote cloud API metadata. The code performs no basename normalization or path validation before writing files to disk. An attacker who controls filenames returned by a cloud storage API can embed ../ traversal sequences to write downloaded content outside the intended directory.

Critical Impact

Attackers can overwrite arbitrary files reachable by the MoviePilot process, including configuration files and plugin code, leading to integrity compromise and potential code execution.

Affected Products

  • MoviePilot (jxxghp/MoviePilot) — AliPan download handler
  • MoviePilot (jxxghp/MoviePilot) — U115 download handler
  • MoviePilot (jxxghp/MoviePilot) — Rclone download handler

Discovery Timeline

  • 2026-06-05 - CVE-2026-11416 published to the National Vulnerability Database (NVD)
  • 2026-06-08 - Last updated in NVD database

Technical Details for CVE-2026-11416

Vulnerability Analysis

MoviePilot integrates with multiple cloud storage providers to download media content into a user-configured directory. The vulnerable code path exists in three separate download handlers covering AliPan, U115, and Rclone backends. Each handler retrieves file metadata from a remote cloud API and uses the filename field directly when building the local write path.

The handlers concatenate the configured download directory with the remote filename without invoking os.path.basename(), without canonicalizing the resulting path, and without verifying that the final path remains within the intended directory. When an attacker-controlled filename contains traversal sequences such as ../../etc/config.yaml, the resulting write occurs outside the download root.

Root Cause

The root cause is missing input validation on externally supplied filename data, classified as Improper Limitation of a Pathname to a Restricted Directory [CWE-22]. The application implicitly trusts that filename metadata returned by a cloud storage API contains only safe basename components. No sanitization layer enforces this assumption before the value reaches file system write operations.

Attack Vector

Exploitation requires the attacker to control a filename returned by a cloud storage API that MoviePilot synchronizes from. This can occur when a victim subscribes to a shared cloud folder containing attacker-supplied files, or when an attacker compromises an upstream account whose contents MoviePilot downloads. Once a traversal-laden filename enters the download pipeline, MoviePilot writes file contents to the resolved path with the privileges of the application process. Targets of interest include MoviePilot configuration files, plugin Python files, and any writable file in the runtime environment. Overwriting a plugin file can lead to code execution on the next plugin load.

Description of exploitation: A crafted filename such as ../../app/plugins/malicious.py combined with attacker-controlled file contents causes MoviePilot to replace plugin code under the application directory. See the GitHub Issue #5894 for the reported behavior and the GitHub Commit a0b3800 for the corrective patch.

Detection Methods for CVE-2026-11416

Indicators of Compromise

  • File writes from the MoviePilot process to paths outside the configured download directory, particularly into application, plugin, or configuration directories.
  • Unexpected modification timestamps on MoviePilot plugin files (.py) or configuration files such as config.yaml.
  • Cloud sync log entries referencing filenames containing ../, ..\\, or URL-encoded traversal sequences.
  • New or modified plugin files whose hashes do not match the upstream MoviePilot release.

Detection Strategies

  • Audit MoviePilot logs for filename values containing traversal characters in AliPan, U115, or Rclone download events.
  • Compare installed plugin files against the official MoviePilot repository to identify unauthorized modifications.
  • Inspect cloud storage accounts linked to MoviePilot for files whose names contain ../ patterns.

Monitoring Recommendations

  • Enable file integrity monitoring on the MoviePilot installation directory, the plugin directory, and the configuration directory.
  • Run MoviePilot under a dedicated unprivileged user account and audit any write attempts outside the download root.
  • Forward MoviePilot application logs to a centralized logging platform and alert on filenames containing path separator or traversal sequences.

How to Mitigate CVE-2026-11416

Immediate Actions Required

  • Update MoviePilot to a version that includes commit a0b3800f6bf4857bf4f889a63d44350eb8380f28 or later, which adds basename normalization to the affected handlers.
  • Verify the integrity of all plugin files and configuration files before restarting the service after patching.
  • Review the contents of linked AliPan, U115, and Rclone accounts and remove any files with suspicious names containing ../.

Patch Information

The upstream fix is published in GitHub Commit a0b3800 of the MoviePilot repository. The patch normalizes remote filenames to their basename component before constructing the local destination path, preventing traversal sequences from escaping the configured download directory. The issue is tracked in GitHub Issue #5894.

Workarounds

  • Run MoviePilot inside a container with the download directory mounted read-write and the application and plugin directories mounted read-only.
  • Restrict the MoviePilot process account so that it has write access only to the configured download directory and no other filesystem locations.
  • Disable the AliPan, U115, and Rclone download integrations until the patched version is deployed.
  • Restrict cloud storage accounts linked to MoviePilot to trusted sources and avoid subscribing to third-party shared folders.
bash
# Example: restrict MoviePilot container write access to the download directory only
docker run -d \
  --name moviepilot \
  --read-only \
  --tmpfs /tmp \
  -v /srv/moviepilot/downloads:/downloads:rw \
  -v /srv/moviepilot/config:/config:ro \
  -v /srv/moviepilot/plugins:/app/plugins:ro \
  jxxghp/moviepilot:latest

Disclaimer: This content was generated using AI. While we strive for accuracy, please verify critical information with official sources.

Default Legacy - Prefooter | Experience the World’s Most Advanced Cybersecurity Platform

Experience the Most Advanced Cybersecurity Platform

See how the world’s most intelligent, autonomous cybersecurity platform can protect your organization today and into the future.