Description
The filestore backend in pkg/object/file.go, used for file:// stores and as a common juicefs sync destination, derived every operation's target from path(key), which returned either filepath.Join(d.root, key) or filepath.Clean(d.root + key) with no check that the result stayed beneath the root. Put, Get, Head, Delete, Chmod, Chown, Symlink and Readlink all consumed that value directly. Object keys enumerated from a source object store during a sync are not constrained the way local filesystem names are, so a key containing traversal segments causes juicefs to write attacker-supplied content to a path outside the intended local destination, and no error is returned. An operator syncing from a bucket whose contents they do not fully control, such as a shared or public bucket or one an attacker can write to, is therefore exposed to a file write at an attacker-influenced location. The fix changes path() to return an error and rejects any key whose resolved path escapes the root.
Published: 2026-08-21
Score: 7.1 High
EPSS: n/a
KEV: No
Impact: n/a
Action: n/a
AI Analysis

Impact

JuiceFS’s local filestore backend constructs file paths by simply joining the configured root directory with arbitrary object keys. The path resolution lacks a containment check, allowing a key containing traversal components to resolve to a location outside the intended root. Consequently, operations such as Put, Get, Delete, and Chmod can create, read, or modify files at attacker‑controlled locations without returning an error. This flaw enables an adversary—by supplying specially crafted keys during a sync operation—to overwrite system files or drop malicious content on the host filesystem, potentially leading to arbitrary code execution or persistent compromise. The vulnerability stems from a directory traversal weakness (CWE‑22).

Affected Systems

The issue affects JuiceFS deployments (juicedata:juicefs) running versions prior to the inclusion of the containment check added in the patch referenced by commit 0bcd70b3. Users of JuiceFS versions that have not incorporated this fix are susceptible whenever the file:// backend is used as a sync destination from a source that is not fully trusted.

Risk and Exploitability

The CVSS score of 7.1 marks this as a high‑severity condition, while the EPSS score is not available. The vulnerability is not listed in the CISA KEV catalog, suggesting it has not yet been widely exploited in the wild. The likelihood of exploitation hinges on the attacker’s ability to provide object keys to a sync operation; thus the attack vector is inferred to be a malicious or compromised source bucket used in a JuiceFS sync. An operator who syncs from a bucket they do not fully control, such as a shared or public bucket or one an attacker can write to, stands to suffer a write at an attacker‑influenced location. If successful, the attacker could overwrite critical configuration files, inject malware, or modify data, leading to loss of integrity and availability. The problem persists until the containment check is enforced, after which any key that escapes the root results in an error and the operation is aborted.

Generated by OpenCVE AI on August 21, 2026 at 12:41 UTC.

Remediation

No vendor fix or workaround currently provided.

OpenCVE Recommended Actions

  • Upgrade JuiceFS to the latest release that includes the containment fix introduced in commit 0bcd70b3.
  • If an upgrade is not immediately possible, remove or disable the file:// backend as a sync destination to eliminate the vulnerable path handling.
  • Limit sync operations to buckets entirely under the operator’s control to guarantee that object keys cannot be supplied by an attacker.
  • As a temporary measure, manually patch the src/object/file.go path function to return an error for any key that resolves outside the configured root or wrap the sync process with a pre‑validation step that checks the resolved path against the root boundary.

Generated by OpenCVE AI on August 21, 2026 at 12:41 UTC.

Tracking

Sign in to view the affected projects.

Advisories

No advisories yet.

History

Fri, 21 Aug 2026 11:15:00 +0000

Type Values Removed Values Added
Description The filestore backend in pkg/object/file.go, used for file:// stores and as a common juicefs sync destination, derived every operation's target from path(key), which returned either filepath.Join(d.root, key) or filepath.Clean(d.root + key) with no check that the result stayed beneath the root. Put, Get, Head, Delete, Chmod, Chown, Symlink and Readlink all consumed that value directly. Object keys enumerated from a source object store during a sync are not constrained the way local filesystem names are, so a key containing traversal segments causes juicefs to write attacker-supplied content to a path outside the intended local destination, and no error is returned. An operator syncing from a bucket whose contents they do not fully control, such as a shared or public bucket or one an attacker can write to, is therefore exposed to a file write at an attacker-influenced location. The fix changes path() to return an error and rejects any key whose resolved path escapes the root.
Title JuiceFS Local Filestore Backend Joins Object Keys onto the Storage Root Without a Containment Check, Allowing Writes Outside the Configured Directory
First Time appeared Juicedata
Juicedata juicefs
Weaknesses CWE-22
CPEs cpe:2.3:a:juicedata:juicefs:*:*:*:*:*:*:*:*
Vendors & Products Juicedata
Juicedata juicefs
References
Metrics cvssV3_1

{'score': 6.5, 'vector': 'CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:N/I:H/A:N'}

cvssV4_0

{'score': 7.1, 'vector': 'CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:P/VC:N/VI:H/VA:N/SC:N/SI:N/SA:N'}


Subscriptions

Juicedata Juicefs
cve-icon MITRE

Status: PUBLISHED

Assigner: VulnCheck

Published:

Updated: 2026-08-21T11:05:13.650Z

Reserved: 2026-08-21T10:30:49.467Z

Link: CVE-2026-77763

cve-icon Vulnrichment

No data.

cve-icon NVD

Status : Received

Published: 2026-08-21T11:17:06.937

Modified: 2026-08-21T11:17:06.937

Link: CVE-2026-77763

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-08-21T12:30:14Z

Weaknesses
  • CWE-22

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