Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
ReconObtain valid RustFS credentials (PR:L)
-
DeliveryConfirm OPA authorization is active (RUSTFS_POLICY_PLUGIN_URL set)
-
ExploitIdentify objects protected by s3:ExistingObjectTag policy conditions
-
InstallIssue standard S3 API request targeting restricted object
-
C2OPA receives policy evaluation request lacking ExistingObjectTag context
-
ExecutePolicy evaluates without tag constraints and grants access
-
ImpactRead, write, or delete objects outside authorized scope
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 | Exploitation requires two simultaneous non-default conditions: (1) OPA external authorization must be explicitly enabled by an operator via the RUSTFS_POLICY_PLUGIN_URL environment variable - this is not set by default and represents a deliberate architectural choice; and (2) at least one IAM policy in the deployment must use s3:ExistingObjectTag/* conditions as access control gates on objects or operations. Additionally, the attacker must possess valid RustFS credentials (PR:L); unauthenticated exploitation is not possible. The vulnerability does not affect deployments running built-in IAM-only authorization. Exploitation is further scoped to objects and operations whose access controls rely specifically on ExistingObjectTag conditions - policies based on other condition keys (source IP, request time, string-match on bucket name) are unaffected. The combination of required configuration and required credential possession makes AC:H and PR:L the binding constraints for realistic exploitation. |
| Impact | The vendor-assigned CVSS 7.5 (High) with vector AV:N/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H is well-calibrated. AC:H accurately reflects that exploitation requires a non-default operator configuration (OPA enabled via RUSTFS_POLICY_PLUGIN_URL) combined with tag-based IAM policies - neither of which is a default RustFS deployment state. PR:L correctly captures that valid credentials are required; unauthenticated exploitation is not possible. The C:H/I:H/A:H impact reflects that a bypass of tag-based conditions can affect any S3 operation (GetObject, PutObject, DeleteObject) on restricted objects. EPSS data is not provided in the input and cannot be inferred. This CVE is not listed in CISA KEV, and no POC code has been identified, indicating no confirmed or widespread active exploitation at time of analysis. Real-world risk is further tempered by RustFS's limited production footprint as a pre-1.0 project. Deployments without OPA configured are completely unaffected - this is a targeted risk for organizations that specifically adopted OPA-based ABAC in RustFS. |
| Exploit ScenarioDerived | An authenticated RustFS user with standard low-privilege credentials targets a bucket where sensitive objects are protected exclusively by an s3:ExistingObjectTag condition - for example, a policy denying GetObject unless the object carries the tag classification=public. The user issues a standard S3 GetObject request via any S3-compatible client; because OPA receives the policy evaluation request without the ExistingObjectTag context values, the condition evaluates as if no tag restriction exists and access is granted. The attacker can then read, overwrite, or delete any object whose access controls rely on ExistingObjectTag conditions across the deployment. No public exploit code has been identified, but exploitation requires only standard S3 API calls once valid credentials and knowledge of the policy structure are available. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Aug 12, 2026
Tag-based S3 policy bypass in RustFS distributed object storage allows authenticated users on versions 1.0.0-alpha.64 through pre-rc.1 to circumvent object-level access controls when OPA external authorization is active. The IAM subsystem incorrectly initializes PreparedIamAuth.needs_existing_object_tag for the OPA mode, causing maybe_merge_object_tag_conditions to silently omit s3:ExistingObjectTag/* condition values from policy evaluation - meaning any policy restriction keyed on object tags is effectively ignored. No public exploit code has been identified and the vulnerability is not listed in CISA KEV; a vendor-released fix is available in 1.0.0-rc.1.
RemediationAI
Upgrade to RustFS version 1.0.0-rc.1, which resolves the issue via commit 98d3619613722308498494d412797a52ea8ae64d (https://github.com/rustfs/rustfs/commit/98d3619613722308498494d412797a52ea8ae64d); the release is available at https://github.com/rustfs/rustfs/releases/tag/1.0.0-rc.1. If immediate upgrade is not feasible, the most effective compensating control is to disable OPA external authorization by unsetting the RUSTFS_POLICY_PLUGIN_URL environment variable and restarting the service - this eliminates the vulnerable code path entirely, though it requires migrating any OPA-based authorization rules to native RustFS IAM policies, which may be operationally disruptive. A narrower workaround is to audit all active IAM policies and eliminate any reliance on s3:ExistingObjectTag/* conditions while running the affected version, substituting them with bucket-level or prefix-based restrictions that are not affected by this flaw; this reduces the blast radius without requiring OPA to be disabled, at the cost of coarser access granularity.
Affected VersionsENISA
Affected Packages
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, positioned as an alternative to MinIO. Its IAM subsystem (crates/iam/src/sys.rs) supports two authorization modes: built-in IAM and an external Open Policy Agent (OPA) plugin, activated by setting the RUSTFS_POLICY_PLUGIN_URL environment variable. In OPA mode, the PreparedIamMode::Opa code path sets PreparedIamAuth.needs_existing_object_tag to an incorrect value, which prevents the function maybe_merge_object_tag_conditions from injecting s3:ExistingObjectTag/* condition context into the policy decision request sent to OPA. S3 tag-based conditions (e.g., 'allow access only if the object has tag env=production') are a standard IAM feature used to implement attribute-based access control (ABAC) on individual objects. Because the tag context is omitted, OPA evaluates policies without these constraints and may incorrectly grant access. The root cause is CWE-863 (Incorrect Authorization): the authorization path is reached, but the inputs to the decision are incomplete, corrupting the outcome. Affected CPE: 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
AV:N/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H
OPA must be explicitly operator-configured (AC:H); valid credentials required (PR:L); all three impacts high as any tagged-object S3 operation can be bypassed.
Primary rating from Vendor (GitHub_M).
CVSS VectorVendor: GitHub_M
Lifecycle Timeline
2DescriptionCVE.org
RustFS is a distributed object storage system built in Rust. From 1.0.0-alpha.64 until 1.0.0-rc.1, RustFS external OPA authorization enabled by RUSTFS_POLICY_PLUGIN_URL in crates/iam/src/sys.rs sets PreparedIamAuth.needs_existing_object_tag incorrectly for PreparedIamMode::Opa, causing maybe_merge_object_tag_conditions to omit s3:ExistingObjectTag/* values and allowing authenticated users to bypass tag-based policy restrictions. This issue is fixed in version 1.0.0-rc.1.
Executive ViewAI
RustFS distributed object storage versions 1.0.0-alpha.64 through pre-rc.1 contain an access control bypass affecting systems configured with OPA-based authorization policies, enabling authenticated users to circumvent object-level permissions and access data outside their authorization scope. Organizations using affected deployments for sensitive object storage face a data confidentiality and integrity risk, particularly where fine-grained access policies are critical to compliance. A vendor-released patch is available in version 1.0.0-rc.1.
Apply vendor patch: upgrade to RustFS version 1.0.0-rc.1. No interim mitigations available; patching is required to resolve access control bypass.
Threat Intelligence Overview
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.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Authentication bypass attacks exploit flaws in the verification mechanisms that control access to systems and applications.
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
Path traversal in the RustFS /rustfs/rpc/read_file_stream endpoint allows an attacker to read arbitrary files from the h
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
RustFS is a distributed object storage system built in Rust. [CVSS 4.0 MEDIUM]
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
EUVD-2026-57229
NVD
CVE.org
EPSS
Vulnrichment
GitHub
VulDB
Exploit-DB