Executive brief
rclone is a command-line tool used to synchronize files between local storage and cloud/remote backends (like AWS S3, Azure, SFTP, etc.). The tool fails to properly validate source object names when copying data, allowing specially crafted filenames containing ".." path segments to escape the configured destination directory and land in unintended locations within the operator's own account. An attacker who can inject objects into a source store that rclone reads from can redirect data to different buckets, shares, or paths the operator has access to, compromising data integrity and enabling misplacement of sensitive backups or configurations.
Technical details
This is a path traversal vulnerability (CWE-22) in rclone's core synchronization logic. The rclone core does not sanitize ".." segments in object names before passing them to backend drivers. When backends (B2, Swift, SFTP, SMB, FTP, WebDAV, and others) construct destination paths via path.Join(root, remote), these ".." segments are resolved before encoding is applied, allowing traversal outside the configured root directory. The vulnerability requires two preconditions: (1) the source must be a flat-keyspace object store (S3, B2, Swift, etc., not a filesystem), and (2) the malicious object must have been created with native tooling (not rclone itself, which encodes ".." to fullwidth ".."). An attacker using native AWS S3 API calls can upload an object with key "../../victim-backups/pwned.txt"; when a victim runs rclone copy to ingest from that source, the file lands in the wrong location within their own account. For SFTP and SMB backends, the blast radius extends to the filesystem or other shares accessible by the login credential. Fixed in rclone v1.75.1.
Affected products
- rclone rclone < 1.75.1
Timeline
- 2026-09-10: disclosed: Public advisory published via GitHub and NVD
- 2026-09-10: patched: Fix available in rclone v1.75.1