Severity by source
AV:N/AC:L/PR:N/UI:N/S:C/C:N/I:H/A:N
Description requires an authenticated tenant with PutObject, so PR:L not PR:N; write-only cross-tenant impact gives I:H with C:N/A:N and S:C for the boundary crossing.
Primary rating from Vendor (GitHub_M).
CVSS VectorVendor: GitHub_M
Lifecycle Timeline
1DescriptionCVE.org
RustFS is a distributed object storage system built in Rust. In 1.0.0-beta.4, authenticated users with only PutObject permission on their own bucket can exploit a path traversal vulnerability in the Snowball auto-extract feature to write arbitrary objects into other users' buckets, completely breaking multi-tenant isolation. The vulnerability chains three flaws: No ../ sanitization in tar entry key normalization; IAM wildcard matching uses raw (uncleaned) paths; and Filesystem path cleaning resolves ../ across bucket boundaries.
AnalysisAI
Cross-tenant object injection in RustFS 1.0.0-beta.4 lets a tenant holding only PutObject rights on their own bucket write arbitrary objects into other tenants' buckets, fully breaking multi-tenant isolation. The flaw lives in the Snowball auto-extract feature and chains three weaknesses (unsanitized tar entry keys, IAM wildcard matching on raw paths, and filesystem path cleaning that resolves ../ across bucket boundaries). No public exploit is identified at time of analysis, and it is not listed in CISA KEV.
Technical ContextAI
RustFS is a distributed, S3-compatible object storage system written in Rust. The vulnerability is a CWE-22 path traversal that manifests in the Snowball bulk-import/auto-extract feature, which unpacks uploaded tar archives server-side. Three compounding root causes enable the break: (1) tar entry keys are normalized without stripping ../ sequences, (2) IAM authorization performs wildcard/prefix matching against the raw, uncleaned object path so the policy check is evaluated before traversal is resolved, and (3) the filesystem layer then cleans ../ in a way that escapes the intended bucket directory boundary. The order of operations matters: authorization sees a compliant path while the filesystem resolves a different, attacker-chosen destination. CPE coverage is cpe:2.3:a:rustfs:rustfs:*:*:*:*:*:*:*:*, with the advisory naming 1.0.0-beta.4 as affected.
RemediationAI
No vendor-released patched version is identified in the available data; consult the GitHub Security Advisory GHSA-f4vq-9ffr-m8m3 (https://github.com/rustfs/rustfs/security/advisories/GHSA-f4vq-9ffr-m8m3) for the fixed release and upgrade off 1.0.0-beta.4 once it is published. As immediate compensating controls, disable the Snowball auto-extract/bulk-import feature so server-side tar unpacking cannot be triggered (trade-off: tenants lose bulk-upload convenience), and restrict or gate which tenants may invoke Snowball to trusted principals only. Additionally, tighten IAM policies to avoid broad wildcard resource matches and, where possible, run tenants on separate storage backends or namespaces so a traversal cannot reach another tenant's directory (trade-off: higher operational overhead and reduced storage density).
RustFS (alpha.13 to alpha.78) has a path traversal in /rustfs/rpc/read_file_stream that allows reading arbitrary files o
RustFS (alpha.13 to alpha.78) has a privilege escalation where restricted service accounts can self-issue unrestricted c
Stored XSS in RustFS distributed object storage system before 1.0.0-alpha.83. Malicious JavaScript persists in stored ob
Incorrect IAM permission validation in RustFS prior to version 1.0.0-alpha.79 permits principals with export-only permis
RustFS versions 1.0.0-alpha.1 through 1.0.0-alpha.79 expose the shared HMAC secret in server logs when processing invali
Authentication bypass in RustFS distributed object storage (versions prior to 1.0.0-beta.2) allows unauthenticated remot
Privilege escalation in RustFS distributed object storage before 1.0.0-beta.2 lets a low-privileged user holding ImportI
Stored cross-site scripting in RustFS Console (0.1.7 through 0.1.9) lets an attacker upload an HTML payload disguised as
Privilege escalation in RustFS prior to version 1.0.0-beta.11 allows any authenticated user holding CreateServiceAccount
Unauthenticated denial of service and information disclosure in RustFS distributed object storage prior to version 1.0.0
License-enforcement bypass in RustFS distributed object storage (versions prior to 1.0.0-beta.2) stems from a hardcoded
Information disclosure in RustFS, a Rust-based distributed object storage system, lets any authenticated user with no ef
Same weakness CWE-22 – Path Traversal
View allSame technique Path Traversal
View allShare
External POC / Exploit Code
Leaving vuln.today
EUVD-2026-39865