rustfs
RustFS is a high-performance, distributed file system designed for modern cloud-native applications, providing efficient data storage and retrieval with advanced features like S3 Select, IAM, and policy management.
Activity
- Latest release
- 3w ago
- Total releases
- 4
- Cadence
- ~16 days
- Last 12 months
- 2
Reach
- Downloads
- 1.2k
Details
- License
- Apache-2.0
- First release
- Jul 02, 2025
| Version | Released | |
|---|---|---|
1.0.1
patch
|
1.0.1
patch
Dependencies (164)
+ 156 more
Changelog
Compare changes
|
|
1.0.0
major
|
1.0.0
major
Dependencies (162)
+ 154 more
Changelog
Compare changes
|
|
0.0.2
unknown
6 CVEs
GHSA-mm2q-qcmx-gw4w
May 05, 2026
RustFS: ListServiceAccount authorizes against wrong admin action, enabling cross-user enumeration and root service account takeover
High
Network
Low
Low
None
Summary
Because service account access keys act as the identifier a Vulnerability Details
Two Distinct VulnerabilitiesThis report documents two bugs that chain to full RustFS administrative takeover. Each is independently fixable and independently a security issue: Vulnerability A — Wrong action constant in ListServiceAccount (CWE-863)
Vulnerability B — Missing ownership check in UpdateServiceAccount (CWE-620)
Chain (A + B) — Full RustFS administrative takeover
Vulnerability A leaks every service account's access key (including the root administrator's). Vulnerability B allows overwriting any SA's secret given its access key. Together: a user with a single permission ( Authorization mismatch at a glance: Exact policies attached to each test identity (retrieved from running server via
| Identity | Attached policy | Why the correct permission gets 403The handler at line 936 calls
There is no wildcard, superset, or inheritance relationship between these two action strings. They are separate enum variants ( Raw request/response for
Why this is not "working as intended":
Root Cause — Vulnerability A (Wrong Action Constant)
The action enum definitions are cleanly distinct at
Every other list handler in the same file authorizes on the correct constant:
Only
Root Cause — Vulnerability B (Missing Ownership Check in Update)Service account access keys are the identifier the
The handler authorizes on possession of
The inner
So a holder of The two bugs together form a clean chain:
Environment and Version Alignment
Byte-identical. The shipped image contains the same vulnerable handler as the tip of main. Proof of Concept (executed live)Environment
Root credentials: Step 1 — Provision the probe identityThe probe policy grants exactly one admin action, scoped to the broadest resource. Nothing else.
Creation as root:
Step 2 — Baseline: probe-user is actually constrainedConfirming
The self-scope list (no Step 3 — Primary exploit: enumerate other users' service accounts
Exposed per entry: Step 4 — Differential: the correct permission gets deniedCreated
Running the same request:
This is the damning evidence of inversion. The handler refuses the correct permission ( The resource-scoped variant gave the same result as the broad variant:
Resource restrictions on admin actions are skipped in And unauthenticated requests are still rejected:
This is an authenticated privilege-boundary violation, not a pre-auth bug. Step 4b — Zero-privilege user is correctly blockedTo confirm the bug is in the action constant (not a missing check), created
The Step 5 — Full chain to RustFS admin takeover (persistent backdoor)With
Then re-signs and calls admin APIs as
Both endpoints previously returned 403 for Extending the chain to a persistent backdoor, still driven by
Direct authentication as the new admin (no further reliance on the hijacked SA):
The attacker now owns a persistent admin identity with Full PoC scriptsRunnable top-to-bottom against a fresh
Impact
Suggested FixThe minimal, correct fix is a one-line change at
This brings Recommended follow-up (separate but related)Even after this fix,
This additional check closes the secret-rotation primitive for non-root holders of Self-Review
Resources
Koda Reef Fixed in
1.0.0-alpha.98
References Updated May 05, 2026 · Source: OSV.dev
CVE-2026-40937
GHSA-pfcq-4gjr-6gjm
Apr 22, 2026
RustFS: Missing admin authorization on notification target endpoints allows unauthenticated configuration of event webhooks
8.3
/ 10
High
Network
Low
Low
None
Unchanged
High
High
Low
Missing Admin Auth on Notification Target Endpoints in RustFSFinding SummaryAll four notification target admin API endpoints in A non-admin user can overwrite a shared admin-defined notification target by name, causing subsequent bucket events to be delivered to an attacker-controlled endpoint. This enables cross-user event interception and audit evasion. What Was Proven Live
Escalation Vectors Tested But Not Viable
Prior ArtNo existing advisory covers notification target endpoints. 11 published GHSAs on rustfs/rustfs cover different handlers. Closest:
RecommendationSubmit via GitHub PVR. The finding is well-supported with live PoC, code references, and clear root cause. The fix is straightforward (add Koda Reef PatchThis issue has been patched in version https://github.com/rustfs/rustfs/releases/tag/1.0.0-alpha.94. References Updated May 05, 2026 · Source: OSV.dev
CVE-2026-39360
GHSA-mx42-j6wv-px98
Apr 08, 2026
RustFS has an authorization bypass in multipart UploadPartCopy enables cross-bucket object exfiltration
Medium
Network
Low
Low
None
RustFS contains a missing authorization check in the multipart copy path ( This breaks tenant isolation in multi-user / multi-tenant deployments. ImpactUnauthorized cross-bucket / cross-tenant data exfiltration (Confidentiality: High). An attacker with only minimal permissions on their own bucket (multipart upload + Put/Get on destination objects) can copy and retrieve objects from a victim bucket without having In the attached PoC, the attacker successfully exfiltrates a 5MB private object and proves integrity via matching SHA256 and size. Threat Model (Realistic)
Root Cause AnalysisThe access control layer fails open for multipart copy-related operations: File:
In contrast,
The multipart copy implementation reads the source object directly: File:
Because Affected Versions
The fail-open authorization behavior for
Affected range (recommended wording):
Package version (Cargo metadata)
Proof of Concept (PoC) – Real Commands + Verified ResultsFilesPlace the PoC script at the repository root:
EnvironmentRustFS running locally (Docker is simplest), listening on:
Tools:
Steps to Reproduce
AttachmentsExpected Behavior
Actual Behavior
Observed PoC OutputVictim uploads a private object:
Attacker exfiltrates it via multipart copy:
Proof:
Network Evidence (Redacted)The debug log shows a successful request with:
FixImplement authorization checks equivalent to
References Updated Apr 10, 2026 · Source: OSV.dev
CVE-2026-27822
GHSA-v9fg-3cr2-277j
Feb 25, 2026
Rust has Critical Stored XSS in Preview Modal, leading to Administrative Account Takeover
9.0
/ 10
Critical
Network
Low
Low
Required
Changed
High
High
High
SummaryA Stored Cross-Site Scripting (XSS) vulnerability in the RustFS Console allows an attacker to execute arbitrary JavaScript in the context of the management console. By bypassing the PDF preview logic, an attacker can steal administrator credentials from DetailsThe vulnerability exists due to improper validation of the response content type during the file preview process and a lack of origin separation between the S3 object delivery and the management console.
PoCThis PoC demonstrates how to steal a victim's administrative credentials by tricking them into previewing a malicious file. 1. Create the malicious payload (
2. Setup the environment and upload the payload:
3. Trigger the vulnerability:
Impact
Proposed Mitigation
Fixed in
1.0.0-alpha.83
References Updated Feb 25, 2026 · Source: OSV.dev
CVE-2026-21862
GHSA-fc6g-2gcp-2qrq
Feb 03, 2026
RustFS has SourceIp bypass via spoofed X-Forwarded-For/Real-IP headers
High
Network
Low
None
None
SummaryIP-based access control can be bypassed: get_condition_values trusts client-supplied X-Forwarded-For/X-Real-Ip without verifying a trusted proxy, so any reachable client can spoof aws:SourceIp and satisfy IP-allowlist policies. Details
PoCrustfs-auth-trusted-ip-header-spoofing-poc.tar.gz Steps (already included in
Impact
CreditsIdentified by SecMate (https://secmate.dev) automated analysis and validated during manual triage. Fixed in
1.0.0-alpha.78
References Updated Feb 03, 2026 · Source: OSV.dev
CVE-2026-22042
GHSA-vcwh-pff9-64cc
Jan 08, 2026
RustFS has IAM Incorrect Authorization in ImportIam that Allows Privilege Escalation
Medium
Network
Low
Low
None
SummaryThe DetailsIn
However, this code resides in the Import IAM operation ( The expected behavior is to validate against PoCPrerequisites
Steps
Expected Result
Actual Result
Fixed in
1.0.0-alpha.79
References Updated Feb 03, 2026 · Source: OSV.dev | ||
0.0.1
unknown
6 CVEs
GHSA-mm2q-qcmx-gw4w
May 05, 2026
RustFS: ListServiceAccount authorizes against wrong admin action, enabling cross-user enumeration and root service account takeover
High
Network
Low
Low
None
Summary
Because service account access keys act as the identifier a Vulnerability Details
Two Distinct VulnerabilitiesThis report documents two bugs that chain to full RustFS administrative takeover. Each is independently fixable and independently a security issue: Vulnerability A — Wrong action constant in ListServiceAccount (CWE-863)
Vulnerability B — Missing ownership check in UpdateServiceAccount (CWE-620)
Chain (A + B) — Full RustFS administrative takeover
Vulnerability A leaks every service account's access key (including the root administrator's). Vulnerability B allows overwriting any SA's secret given its access key. Together: a user with a single permission ( Authorization mismatch at a glance: Exact policies attached to each test identity (retrieved from running server via
| Identity | Attached policy | Why the correct permission gets 403The handler at line 936 calls
There is no wildcard, superset, or inheritance relationship between these two action strings. They are separate enum variants ( Raw request/response for
Why this is not "working as intended":
Root Cause — Vulnerability A (Wrong Action Constant)
The action enum definitions are cleanly distinct at
Every other list handler in the same file authorizes on the correct constant:
Only
Root Cause — Vulnerability B (Missing Ownership Check in Update)Service account access keys are the identifier the
The handler authorizes on possession of
The inner
So a holder of The two bugs together form a clean chain:
Environment and Version Alignment
Byte-identical. The shipped image contains the same vulnerable handler as the tip of main. Proof of Concept (executed live)Environment
Root credentials: Step 1 — Provision the probe identityThe probe policy grants exactly one admin action, scoped to the broadest resource. Nothing else.
Creation as root:
Step 2 — Baseline: probe-user is actually constrainedConfirming
The self-scope list (no Step 3 — Primary exploit: enumerate other users' service accounts
Exposed per entry: Step 4 — Differential: the correct permission gets deniedCreated
Running the same request:
This is the damning evidence of inversion. The handler refuses the correct permission ( The resource-scoped variant gave the same result as the broad variant:
Resource restrictions on admin actions are skipped in And unauthenticated requests are still rejected:
This is an authenticated privilege-boundary violation, not a pre-auth bug. Step 4b — Zero-privilege user is correctly blockedTo confirm the bug is in the action constant (not a missing check), created
The Step 5 — Full chain to RustFS admin takeover (persistent backdoor)With
Then re-signs and calls admin APIs as
Both endpoints previously returned 403 for Extending the chain to a persistent backdoor, still driven by
Direct authentication as the new admin (no further reliance on the hijacked SA):
The attacker now owns a persistent admin identity with Full PoC scriptsRunnable top-to-bottom against a fresh
Impact
Suggested FixThe minimal, correct fix is a one-line change at
This brings Recommended follow-up (separate but related)Even after this fix,
This additional check closes the secret-rotation primitive for non-root holders of Self-Review
Resources
Koda Reef Fixed in
1.0.0-alpha.98
References Updated May 05, 2026 · Source: OSV.dev
CVE-2026-40937
GHSA-pfcq-4gjr-6gjm
Apr 22, 2026
RustFS: Missing admin authorization on notification target endpoints allows unauthenticated configuration of event webhooks
8.3
/ 10
High
Network
Low
Low
None
Unchanged
High
High
Low
Missing Admin Auth on Notification Target Endpoints in RustFSFinding SummaryAll four notification target admin API endpoints in A non-admin user can overwrite a shared admin-defined notification target by name, causing subsequent bucket events to be delivered to an attacker-controlled endpoint. This enables cross-user event interception and audit evasion. What Was Proven Live
Escalation Vectors Tested But Not Viable
Prior ArtNo existing advisory covers notification target endpoints. 11 published GHSAs on rustfs/rustfs cover different handlers. Closest:
RecommendationSubmit via GitHub PVR. The finding is well-supported with live PoC, code references, and clear root cause. The fix is straightforward (add Koda Reef PatchThis issue has been patched in version https://github.com/rustfs/rustfs/releases/tag/1.0.0-alpha.94. References Updated May 05, 2026 · Source: OSV.dev
CVE-2026-39360
GHSA-mx42-j6wv-px98
Apr 08, 2026
RustFS has an authorization bypass in multipart UploadPartCopy enables cross-bucket object exfiltration
Medium
Network
Low
Low
None
RustFS contains a missing authorization check in the multipart copy path ( This breaks tenant isolation in multi-user / multi-tenant deployments. ImpactUnauthorized cross-bucket / cross-tenant data exfiltration (Confidentiality: High). An attacker with only minimal permissions on their own bucket (multipart upload + Put/Get on destination objects) can copy and retrieve objects from a victim bucket without having In the attached PoC, the attacker successfully exfiltrates a 5MB private object and proves integrity via matching SHA256 and size. Threat Model (Realistic)
Root Cause AnalysisThe access control layer fails open for multipart copy-related operations: File:
In contrast,
The multipart copy implementation reads the source object directly: File:
Because Affected Versions
The fail-open authorization behavior for
Affected range (recommended wording):
Package version (Cargo metadata)
Proof of Concept (PoC) – Real Commands + Verified ResultsFilesPlace the PoC script at the repository root:
EnvironmentRustFS running locally (Docker is simplest), listening on:
Tools:
Steps to Reproduce
AttachmentsExpected Behavior
Actual Behavior
Observed PoC OutputVictim uploads a private object:
Attacker exfiltrates it via multipart copy:
Proof:
Network Evidence (Redacted)The debug log shows a successful request with:
FixImplement authorization checks equivalent to
References Updated Apr 10, 2026 · Source: OSV.dev
CVE-2026-27822
GHSA-v9fg-3cr2-277j
Feb 25, 2026
Rust has Critical Stored XSS in Preview Modal, leading to Administrative Account Takeover
9.0
/ 10
Critical
Network
Low
Low
Required
Changed
High
High
High
SummaryA Stored Cross-Site Scripting (XSS) vulnerability in the RustFS Console allows an attacker to execute arbitrary JavaScript in the context of the management console. By bypassing the PDF preview logic, an attacker can steal administrator credentials from DetailsThe vulnerability exists due to improper validation of the response content type during the file preview process and a lack of origin separation between the S3 object delivery and the management console.
PoCThis PoC demonstrates how to steal a victim's administrative credentials by tricking them into previewing a malicious file. 1. Create the malicious payload (
2. Setup the environment and upload the payload:
3. Trigger the vulnerability:
Impact
Proposed Mitigation
Fixed in
1.0.0-alpha.83
References Updated Feb 25, 2026 · Source: OSV.dev
CVE-2026-21862
GHSA-fc6g-2gcp-2qrq
Feb 03, 2026
RustFS has SourceIp bypass via spoofed X-Forwarded-For/Real-IP headers
High
Network
Low
None
None
SummaryIP-based access control can be bypassed: get_condition_values trusts client-supplied X-Forwarded-For/X-Real-Ip without verifying a trusted proxy, so any reachable client can spoof aws:SourceIp and satisfy IP-allowlist policies. Details
PoCrustfs-auth-trusted-ip-header-spoofing-poc.tar.gz Steps (already included in
Impact
CreditsIdentified by SecMate (https://secmate.dev) automated analysis and validated during manual triage. Fixed in
1.0.0-alpha.78
References Updated Feb 03, 2026 · Source: OSV.dev
CVE-2026-22042
GHSA-vcwh-pff9-64cc
Jan 08, 2026
RustFS has IAM Incorrect Authorization in ImportIam that Allows Privilege Escalation
Medium
Network
Low
Low
None
SummaryThe DetailsIn
However, this code resides in the Import IAM operation ( The expected behavior is to validate against PoCPrerequisites
Steps
Expected Result
Actual Result
Fixed in
1.0.0-alpha.79
References Updated Feb 03, 2026 · Source: OSV.dev |