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-59733

CVE-2026-59733: Path Traversal and Authorization Bypass in Rclone serve restic

Alon Barad
Alon Barad
Software Engineer

Aug 6, 2026·5 min read·20 visits

Executive Summary (TL;DR)

A middleware path-desynchronization defect in rclone serve restic allows authenticated users to bypass repository isolation and access other tenants' backups using path traversal sequences.

A critical path traversal and authorization bypass vulnerability exists in the rclone serve restic command when multi-user isolation is enabled using the --private-repos flag. Due to a middleware desynchronization flaw, authenticated users can access, modify, or delete backup repositories belonging to other tenants.

Vulnerability Overview

Rclone features an integrated REST server subcommand, serve restic, which enables the hosting of multiple private restic backup repositories. This functionality leverages the --private-repos flag to enforce isolation among distinct clients. Under this security model, each authenticated user is restricted to their own designated repository folder.

The isolation is implemented via HTTP Basic authentication, where the backend sub-directory is determined by the authenticated username. However, a logical flaw exists in the directory confinement checks prior to version 1.74.4. This allows authenticated clients to escape their restricted path boundaries.

The flaw represents a path traversal and authorization bypass vulnerability classified under CWE-22 and CWE-639. An authenticated attacker can read, modify, or delete backup data belonging to other users on the same server.

Root Cause Analysis

The root cause of CVE-2026-59733 lies in a logical path-desynchronization defect between two distinct HTTP middleware components in the cmd/serve/restic package. These components are checkPrivate (the authorization handler) and WithRemote (the object-key retrieval handler).

When a client submits an HTTP request, the checkPrivate middleware validates access based on a path parameter parsed by the go-chi router. Specifically, it retrieves the {userID} wildcard parameter. If an attacker submits a path such as /attacker/../victim/config, the router identifies attacker as the {userID} parameter. Because the attacker is authenticated as attacker, the access check is authorized successfully.

Following authorization, the WithRemote middleware processes the request to determine the target storage path. Rather than utilizing the verified {userID} parameter, it extracts the raw, uncanonicalized path directly from the URL. The storage backend subsequently cleans the relative dot-dot segments, which resolves /attacker/../victim/config directly to /victim/config.

This desynchronization permits authorized access under the identity of one user, while the physical read, write, or delete operation is executed against the directory of a different user.

Code Analysis

The vulnerable version of the path extraction logic does not perform validation on the directory components of the raw URL path. This allows traversal sequences to pass directly into the storage backend.

// Vulnerable logic in cmd/serve/restic/restic.go
func WithRemote(next http.Handler) http.Handler {
	return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
		urlpath := r.URL.Path
		urlpath = strings.Trim(urlpath, "/")
		// Raw path containing ".." is parsed directly without canonical verification
		parts := matchData.FindStringSubmatch(urlpath)
		// ...
	})
}

The official patch addresses this gap by validating that the requested path is already in canonical form before any parsing occurs. It utilizes path.Clean to check for anomalies.

// Patched logic in cmd/serve/restic/restic.go
func WithRemote(next http.Handler) http.Handler {
	return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
		urlpath := r.URL.Path
		urlpath = strings.Trim(urlpath, "/")
		// Reject any non-canonical path, in particular one containing ".." traversal elements.
		if urlpath != "" && path.Clean(urlpath) != urlpath {
			http.Error(w, http.StatusText(http.StatusBadRequest), http.StatusBadRequest)
			return
		}
		parts := matchData.FindStringSubmatch(urlpath)
		// ...
	})
}

Exploitation Methodology

An attacker requires a valid set of credentials for their own private repository namespace. The attack vector is executed over HTTP, making it fully remote and independent of local host privileges.

The attack is executed by constructing custom HTTP requests that embed relative directory traversal segments directly into the URL path. By inserting the authorized username, followed by traversal operators and the target user's namespace, the request escapes the tenant sandbox.

For example, to retrieve the configuration of a victim repository, the attacker issues a GET request to /attacker/../victim/config with their own Basic Authentication credentials. The server responds with the contents of the target repository's configuration. Overwriting or deleting the configuration can similarly be executed using POST or DELETE requests.

Impact & Security Assessment

The impact of CVE-2026-59733 is a full compromise of data confidentiality, integrity, and availability within multi-user rclone restic environments. A compromised tenant can access, manipulate, or delete all stored backups across every other tenant on the system.

The National Vulnerability Database has assigned a CVSS v3.1 score of 8.8 (High), with a vector of CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H. This reflects the low complexity of the attack and the lack of required interaction, combined with high impact metrics.

Because backup systems often contain highly sensitive data, including system configurations, intellectual property, and credentials, the exposure of these files constitutes a critical vector for data exfiltration and subsequent lateral movement.

Remediation & Defensive Controls

The primary remediation for this vulnerability is upgrading the rclone installation to version 1.74.4 or later. This version contains the path canonicalization check which successfully blocks non-canonical requests.

If immediate upgrading is not viable, administrators must implement alternative isolation strategies. Disabling the --private-repos flag and running separate rclone daemon processes for each tenant on distinct ports is the recommended workaround.

Additionally, upstream reverse proxies such as Nginx or HAProxy can be configured to inspect and block any request paths that contain directory traversal tokens such as .. or double slashes before they reach the rclone backend.

Fix Analysis (2)

Technical Appendix

CVSS Score
8.8/ 10
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
EPSS Probability
0.42%
Top 65% most exploited

Affected Systems

Rclone (serve restic subcommand)

Affected Versions Detail

Product
Affected Versions
Fixed Version
rclone
Rclone
< 1.74.41.74.4
AttributeDetail
CWE IDCWE-22, CWE-639
Attack VectorNetwork (Remote)
CVSS v3.18.8 (High)
EPSS Score0.00422
ImpactComplete compromise of repository confidentiality, integrity, and availability
Exploit StatusProof-of-Concept (PoC) available
CISA KEV StatusNot listed

MITRE ATT&CK Mapping

T1083File and Directory Discovery
Discovery
T1005Data from Local System
Collection
CWE-22
Improper Limitation of a Pathname to a Restricted Directory ('Path Traversal')

The application builds a pathname using input paths that can contain path traversal sequences, allowing access to files outside of the restricted namespace.

Known Exploits & Detection

GitHub Security AdvisoryVulnerability report and PoC test cases in test suite

Vulnerability Timeline

Core vulnerability patched and resolved in commits
2026-06-23
Official publication of CVE-2026-59733 and GHSA-fqj9-69pf-6pjg
2026-07-14
Version 1.74.4 released, incorporating the security fix
2026-07-14
NVD record updated with CVSS assessment
2026-07-29

References & Sources

  • [1]GHSA-fqj9-69pf-6pjg: Path traversal and authorization bypass in rclone serve restic
  • [2]Rclone Fix Commit
  • [3]Rclone v1.74.4 Release Notes
  • [4]NVD - CVE-2026-59733

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

•36 minutes ago•CVE-2026-107212
7.5

CVE-2026-107212: CPU Exhaustion Denial of Service via Look-Ahead Row Parsing in Excelize

An algorithmic complexity vulnerability (CWE-770) in the Excelize library allows remote attackers to cause resource exhaustion (100% CPU usage) via a crafted Microsoft Excel spreadsheet. This occurs because the look-ahead row index parsing in Rows.Columns() fails to enforce upper boundary limits, enabling an out-of-bounds row index to trigger an infinite seek loop inside the Rows iterator.

Alon Barad
Alon Barad
4 views•6 min read
•about 2 hours ago•CVE-2026-105647
4.0

CVE-2026-105647: Server-Side Request Forgery via Favicon Probing in Ghost CMS

An unauthenticated Server-Side Request Forgery (SSRF) vulnerability exists in Ghost CMS from version 6.54.1 to 6.65.0. The vulnerability stems from a validation bypass in the favicon resolution logic within the bookmark-fetching subsystem, which allows remote, unauthenticated attackers to trigger arbitrary HTTP requests to the local host and internal networks. This bypass circumvents the custom DNS-level IP blocklist controls configured globally in the application.

Alon Barad
Alon Barad
3 views•8 min read
•about 3 hours ago•CVE-2026-106450
5.3

CVE-2026-106450: Denial of Service via Eager Resource Allocation in lz4-java LZ4FrameInputStream

A resource allocation vulnerability (CWE-770) in lz4-java before version 1.11.4 allows an unauthenticated remote attacker to trigger CPU exhaustion and high garbage collection overhead by streaming empty concatenated LZ4 frames.

Alon Barad
Alon Barad
5 views•8 min read
•about 4 hours ago•CVE-2026-106449
3.7

CVE-2026-106449: Stack Overflow via Uncontrolled Recursion in yawkat lz4-java

A Denial of Service (DoS) vulnerability exists in the yawkat fork of lz4-java prior to version 1.11.4. Under specific non-default configurations (stopOnEmptyBlock = false), parsing crafted streams with a large sequence of contiguous empty LZ4 blocks triggers uncontrolled recursion inside the LZ4BlockInputStream.refill() method, causing stack exhaustion and thread termination.

Alon Barad
Alon Barad
4 views•6 min read
•about 4 hours ago•CVE-2026-76485
9.8

CVE-2026-76485: Remote Code Execution in Cisco NX-OS VXLAN OAM (NGOAM)

CVE-2026-76485 is a critical stack-based buffer overflow vulnerability in the VXLAN OAM (NGOAM) parsing component of Cisco NX-OS Software. The flaw enables an unauthenticated, remote attacker to execute arbitrary code with root privileges or trigger a denial of service on affected Nexus switches. This vulnerability is triggered through crafted packets sent to an IP interface. No workarounds are currently available to mitigate the vulnerability while preserving the NGOAM functionality. Cisco has published software patches to address this flaw.

Alon Barad
Alon Barad
7 views•6 min read
•about 5 hours ago•CVE-2026-106451
7.3

CVE-2026-106451: Local Privilege Escalation via JNI Extraction TOCTOU in lz4-java

A local privilege escalation and code execution vulnerability exists in the yawkat fork of lz4-java when extracting its bundled JNI shared library into the system temporary directory. Predictable path derivation and lack of exclusive file creation flags allow a local attacker to hijack library loading via a race condition.

Alon Barad
Alon Barad
6 views•6 min read