Skip to main content

RustFS EUVDEUVD-2026-57235

| CVE-2026-73290 MEDIUM
Incorrect Authorization (CWE-863)
2026-08-12 GitHub_M
5.3
CVSS 3.1 · Vendor: GitHub_M
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Identify RustFS instance with public S3 endpoint
  2. Delivery
    Discover or guess bucket name
  3. Exploit
    Send GET /<bucket>?versions= without credentials
  4. Execution
    Authorization fallback skips RestrictPublicBuckets check
  5. Impact
    Receive full object version metadata listing

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V8 - Authorization Authorization logic validation
MITRE ATT&CK

1 technique across 1 tactic: Privilege Escalation

The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up.

Exploitation Conditions

Two simultaneous operator-configured conditions must be present: (1) the target bucket must have a bucket policy that explicitly grants s3:ListBucket to anonymous principals (Principal: "*"), and (2) the operator must have separately enabled RestrictPublicBuckets via put_public_access_block on that same bucket. The vulnerability is specifically in the authorization fallback for GET /<bucket>?versions= - no other S3 API endpoints are affected by this bypass. Exploitation is limited to object version metadata (keys, version IDs, ETags, timestamps) and does not permit reading object content; GetObject requests are correctly denied. Default RustFS deployments without anonymous bucket policies are not affected. The CVSS vector PR:N confirms no authentication is required once the target configuration exists.

Impact

The CVSS 5.3 score (AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N) reflects unauthenticated network access with limited confidentiality impact - only version metadata is exposed, not object contents, since GetObject requests are correctly denied. However, the AC:L rating warrants scrutiny: successful exploitation requires two simultaneous operator-configured conditions (an anonymous s3:ListBucket policy grant and RestrictPublicBuckets enabled), which is a relatively narrow configuration window rather than a universally exploitable default. In practice this means the population of immediately vulnerable deployments is smaller than the raw CVSS suggests, though operators who have enabled RestrictPublicBuckets are precisely those who intended to block public access and are most likely to be surprised by the bypass. No EPSS data was available in the provided intelligence. The vulnerability is absent from CISA KEV and no public exploit code has been released, though the publicly visible commit diff makes reproduction straightforward for an attacker targeting a known-vulnerable instance. The version-metadata disclosure could reveal internal naming conventions, versioning frequency, and object lifecycle patterns useful for reconnaissance against higher-value targets.

Exploit ScenarioDerived

An anonymous attacker who knows or guesses the name of a RustFS bucket sends a GET request to /<bucket>?versions= against an instance where the bucket policy contains an s3:ListBucket Allow for all principals and the operator has enabled RestrictPublicBuckets. The server returns HTTP 200 with an XML body listing all object version IDs, keys, last-modified timestamps, and ETags - data the operator intended to block - while a parallel GetObject request for the same bucket is correctly denied with HTTP 403. No credentials are required and the attack is a single HTTP request.

This Month Plan within 30 days. Why: MEDIUM severity (CVSS 4.0-6.9).
Patch available 0.2% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – Aug 12, 2026

Object version metadata exposure in RustFS allows anonymous HTTP clients to enumerate all stored object versions via GET /<bucket>?versions= even after an operator enables RestrictPublicBuckets. The authorization fallback in rustfs/src/storage/access.rs grants listing through an s3:ListBucket check but returns before applying the public-access block controls, silently contradicting the operator's intent to restrict anonymous access. No public exploit has been identified and the vulnerability is not listed in CISA KEV; the vendor-released fix is available in 1.0.0-beta.12.

RemediationAI

Upgrade to RustFS 1.0.0-beta.12, which corrects the authorization fallback path so that RestrictPublicBuckets and deny_anonymous_table_data_plane_if_needed are applied consistently to ListObjectVersions requests. The fix is traceable to commit 92f83bfe155d8a3b9cdd903086e5b28d52339efb. If an immediate upgrade is not feasible, remove anonymous s3:ListBucket Allow grants from bucket policies for any bucket containing versioned objects with sensitive metadata - this eliminates the fallback trigger, though it also removes legitimate anonymous listing access where it was intentional. A second compensating control is to disable object versioning on sensitive buckets, which removes the ?versions= endpoint as an attack surface; however, this permanently loses version history and has significant operational trade-offs. There is no network-layer workaround because the endpoint is part of the standard S3 API surface. Vendor advisory: https://github.com/rustfs/rustfs/security/advisories/GHSA-x298-9x87-fvjq.

Affected VersionsENISA

rustfs < 1.0.0-beta.12

Affected Packages

euvd rustfs fix: 1.0.0-beta.12

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 1 package in euvd

Checking this CVE against your own stacks and servers is part of the Basic plan and up.

Technical ContextAI · show details

RustFS is an S3-compatible distributed object storage system written in Rust. The flaw resides in rustfs/src/storage/access.rs, where anonymous ListObjectVersions requests lack a direct bucket-policy grant and fall back to an s3:ListBucket permission check. This fallback code path returns before reaching the policy_allowed branch responsible for invoking deny_anonymous_table_data_plane_if_needed and enforcing the RestrictPublicBuckets public-access block. Consequently, the operator-level public-access control - designed to override bucket-level allow grants - is never evaluated for the ?versions= endpoint. The fix commit (92f83bfe155d8a3b9cdd903086e5b28d52339efb) also refactors the condition-quantifier logic in crates/policy/src/policy/function.rs, replacing a boolean for_all flag with a typed Quantifier enum to ensure consistent policy evaluation across all authorization paths. Root cause is CWE-863 (Incorrect Authorization): equivalent privileged operations (list objects vs. list object versions) are subject to inconsistent authorization enforcement across diverging code paths. The affected CPE is cpe:2.3:a:rustfs:rustfs:*:*:*:*:*:*:*:*.

Know when Rustfs gets its next vulnerability

  • Watch products and get an email when something new is published
  • Check this CVE against your own stack and servers
  • Exploit and PoC references, threat intelligence from 22 sources

No credit card · 7-day full trial

Severity by source

Vendor (GitHub_M) PRIMARY 5.3 MEDIUM
AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N
vuln.today AI 3.7 LOW

AC:H reflects that exploitation requires two specific operator-configured conditions simultaneously present, which are beyond attacker control and constitute a narrow non-default configuration.

3.1 AV:N/AC:H/PR:N/UI:N/S:U/C:L/I:N/A:N
4.0 AV:N/AC:L/AT:P/PR:N/UI:N/VC:L/VI:N/VA:N/SC:N/SI:N/SA:N

Primary rating from Vendor (GitHub_M).

CVSS VectorVendor: GitHub_M

Attack Vector
Network
Attack Complexity
Low
Privileges Required
None
User Interaction
None
Scope
Unchanged
Confidentiality
Low
Integrity
None
Availability
None

Lifecycle Timeline

1
Patch available
Aug 12, 2026 - 16:02 EUVD

DescriptionCVE.org

RustFS is a distributed object storage system built in Rust. Prior to 1.0.0-beta.12, an anonymous ListObjectVersions request in rustfs/src/storage/access.rs that lacks a direct bucket-policy grant falls back to an s3:ListBucket check and returns before the policy_allowed path applies deny_anonymous_table_data_plane_if_needed and RestrictPublicBuckets, so a bucket that permits anonymous listing can continue exposing version listings after an operator enables the public-access control. The bypass affects GET /<bucket>?versions= and can disclose object version metadata even though equivalent GetObject requests are denied. This issue is fixed in version 1.0.0-beta.12.

Threat Intelligence Overview

EPSS Score
0.2%
Top 84% exploitable
Prevalence
Low
emerging Rust-based storage project, limited enterprise adoption
Data Quality
6 sources
Confidence: High
EUVD NVD CVE.org EPSS Vulnrichment GitHub VulDB

How this decision was reached

The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.

SignalValue
Severity MEDIUM
CISA KEV No
Public POC No
EPSS 0.2%
Patch available Yes
Active threat No
Deciding rule
MEDIUM severity (CVSS 4.0-6.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Scheduled
Exploitation
Poc
System Exposure· derived
Open
Automatable
Yes
Human Impact· derived
Medium
Technical Impact
Partial

Priority Score

26
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +26
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Authentication bypass attacks exploit flaws in the verification mechanisms that control access to systems and applications.

More in Rustfs

View all
CVE-2026-22043 CRITICAL POC
9.8 Jan 08

RustFS (alpha.13 to alpha.78) has a privilege escalation where restricted service accounts can self-issue unrestricted c

CVE-2026-27822 CRITICAL POC
9.0 Feb 25

Stored XSS in RustFS distributed object storage system before 1.0.0-alpha.83. Malicious JavaScript persists in stored ob

CVE-2026-22042 HIGH POC
8.8 Jan 08

Incorrect IAM permission validation in RustFS prior to version 1.0.0-alpha.79 permits principals with export-only permis

CVE-2025-68705 HIGH POC
8.8 Jan 07

Path traversal in the RustFS /rustfs/rpc/read_file_stream endpoint allows an attacker to read arbitrary files from the h

CVE-2026-22782 HIGH POC
7.5 Jan 16

RustFS versions 1.0.0-alpha.1 through 1.0.0-alpha.79 expose the shared HMAC secret in server logs when processing invali

CVE-2026-45039 CRITICAL
9.8 May 28

Authentication bypass in RustFS distributed object storage (versions prior to 1.0.0-beta.2) allows unauthenticated remot

CVE-2025-69255 MEDIUM POC
5.5 Jan 07

RustFS is a distributed object storage system built in Rust. [CVSS 4.0 MEDIUM]

CVE-2026-45043 CRITICAL
9.3 May 29

Privilege escalation in RustFS distributed object storage before 1.0.0-beta.2 lets a low-privileged user holding ImportI

CVE-2026-62378 CRITICAL
9.0 Jul 15

Stored cross-site scripting in RustFS Console (0.1.7 through 0.1.9) lets an attacker upload an HTML payload disguised as

CVE-2026-73284 HIGH
8.8 Aug 12

Privilege escalation in RustFS prior to version 1.0.0-beta.11 allows any authenticated user holding CreateServiceAccount

CVE-2026-45044 HIGH
8.8 May 28

Unauthenticated denial of service and information disclosure in RustFS distributed object storage prior to version 1.0.0

CVE-2026-45041 HIGH
8.7 May 28

License-enforcement bypass in RustFS distributed object storage (versions prior to 1.0.0-beta.2) stems from a hardcoded

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy