CVE Catalog

CVE-2026-93987

LowCVSS 3.4
Published: Updated: Translated: NVD NIST

Exploitation Probability (EPSS)

Low risk
0.11%

1th percentile - higher than 1% of all known CVEs

Summary

rclone versions 1.56.0 through 1.75.0 contain a path traversal vulnerability in the `rclone serve docker` volume plugin. newVolume() in cmd/serve/docker/volume.go computes a volume's mountpoint as filepath.Join(drv.root, name) from the attacker-supplied `name` field of a Docker VolumeDriver.Create request without verifying that the result stays within drv.root (default /var/lib/docker-volumes/rclone), and checkMountpoint() then creates that directory with file.MkdirAll before mounting. A volume name containing enough `..` components (e.g. "../../../../../../etc") therefore resolves outside the base directory, allowing anyone able to submit a VolumeDriver.Create request to the plugin socket to make the privileged rclone plugin process create a directory and mount a remote filesystem at an arbitrary host path. Volume.restoreState() had the same missing validation when reloading persisted volume state. Fixed in 1.75.1.

Risk Assessment

Anyone able to submit a VolumeDriver.Create request to the plugin socket (typically the Docker daemon or a workload in a multi-tenant orchestration setup) can make the privileged rclone plugin process create a directory and mount a remote filesystem at an arbitrary host path, shadowing or disrupting system directories.

Recommendation

Upgrade rclone to version 1.75.1 or later. Restrict access to the `rclone serve docker` plugin socket to trusted processes only and consider running the plugin with minimal privileges.

Other vulnerabilities in rclone

See all
Original NVD description (English source)

rclone versions 1.56.0 through 1.75.0 contain a path traversal vulnerability in the `rclone serve docker` volume plugin. newVolume() in cmd/serve/docker/volume.go computes a volume's mountpoint as filepath.Join(drv.root, name) from the attacker-supplied `name` field of a Docker VolumeDriver.Create request without verifying that the result stays within drv.root (default /var/lib/docker-volumes/rclone), and checkMountpoint() then creates that directory with file.MkdirAll before mounting. A volume name containing enough `..` components (e.g. "../../../../../../etc") therefore resolves outside the base directory, allowing anyone able to submit a VolumeDriver.Create request to the plugin socket — normally the Docker daemon, or a workload that can request named volumes in a multi-tenant orchestration setup — to make the privileged rclone plugin process create a directory and mount a remote filesystem specified in the same request at an arbitrary host path, shadowing or disrupting system directories. The advisory notes Volume.restoreState() had the same missing validation when reloading persisted volume state. Fixed in 1.75.1.

Vulnerability data from NVD (NIST) · CISA KEV · EPSS