Skip to content

GHSA-gw2x-q739-qhcr CVE-2025-69255

RustFS gRPC GetMetrics deserialization panic enables remote DoS

Medium crates.io
Severity
0.0 / 10
Medium · CVSS 4.0
Exploit chance (EPSS)
0.34%
Chance of exploitation in the next 30 days. Higher than 27.13% of scored vulnerabilities.
Known exploited
No
Not in CISA's catalog
Weakness
CWE-755 Improper Handling of Exceptional Conditions
Fix
1.0.0-alpha.78
Upgrade rustfs to this version or later

Description

Summary

A malformed gRPC GetMetrics request causes get_metrics to unwrap() failed deserialization of metric_type/opts, panicking the handler thread and enabling remote denial of service of the metrics endpoint.

Details

  • Vulnerable code: rustfs/src/storage/tonic_service.rs:1775-1782:
    • MetricType and CollectMetricsOpts are deserialized with Deserialize::deserialize(...).unwrap() from client-supplied bytes.
    • Malformed metric_type/opts (e.g., empty or truncated rmp-serde payloads) trigger InvalidMarkerRead and panic.
  • Reachability: same TCP listener as S3 (default :9000); only a static interceptor token authorization: rustfs rpc is checked in server/http.rs:677.
  • Impact scope: panic terminates the worker handling the request, causing metrics service interruption and potential process instability.

PoC

rustfs-grpc-metrics-invalid-metric-type-panic-poc.tar.gz

  1. Start RustFS (example local dev):
mkdir -p /tmp/rustfs-data1 /tmp/rustfs-data2
RUSTFS_ACCESS_KEY=devadmin RUSTFS_SECRET_KEY=devadmin \
  cargo run --bin rustfs -- --address 0.0.0.0:9000 \
  /tmp/rustfs-data1 /tmp/rustfs-data2
  1. From rustfs-grpc-metrics-invalid-metric-type-panic-poc/, run:
ENDPOINT=127.0.0.1:9000 make run
# or: grpcurl -plaintext \
#   -H 'authorization: rustfs rpc' \
#   -import-path ../crates/protos/src -proto node.proto \
#   -d '{"metric_type":"","opts":""}' \
#   127.0.0.1:9000 node_service.NodeService/GetMetrics
  1. Observe panic in server logs at tonic_service.rs:get_metrics with InvalidMarkerRead and worker crash; client output saved to poc-response.txt/poc-grpcurl.log.

Impact

  • Vulnerability type: remote unauthenticated (static token) denial of service via panic in gRPC handler.
  • Who is impacted: any deployment exposing the gRPC endpoint where an attacker can reach port 9000 and supply the known authorization: rustfs rpc header; metrics service is disrupted and may affect overall stability depending on runtime crash handling.

Affected versions

crates.io

PackageVulnerableFixed in
rustfs
>= 1.0.0-alpha.13, < 1.0.0-alpha.78
1.0.0-alpha.78

How to fix

Move to the fixed version or later with your package manager, update the lockfile, and run your tests. If the package only arrives through another dependency, upgrade that dependency first. If none of its releases pulls a fixed version yet, force the version with your package manager's override.

rustfs crates.io → 1.0.0-alpha.78

cargo
cargo update -p rustfs --precise 1.0.0-alpha.78

Severity breakdown

CVSS 4.0 0.0

CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:L/SC:N/SI:N/SA:N/E:P

Attack vector
Network
Attack complexity
Low
Attack requirements
None
Privileges required
None
User interaction
None
Confidentiality (vulnerable system)
None
Integrity (vulnerable system)
None
Availability (vulnerable system)
Low
Confidentiality (subsequent systems)
None
Integrity (subsequent systems)
None
Availability (subsequent systems)
None
Exploit maturity
Proof of concept

CVSS 3.1 4.0

CVSS:3.1/AV:L/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L

Attack vector
Local
Attack complexity
Low
Privileges required
None
User interaction
None
Scope
Unchanged
Confidentiality
None
Integrity
None
Availability
Low

Weakness

CWE-755: Improper Handling of Exceptional Conditions

The product does not handle or incorrectly handles an exceptional condition.

References

Timeline

  1. Published
  2. Last updated by the source
  3. Latest EPSS score
AdvisorySeverityWhy it's related
GHSA-mm2q-qcmx-gw4w
RustFS: ListServiceAccount authorizes against wrong admin action, enabling cross-user enumeration and root service account takeover
High Also affects rustfs
GHSA-pfcq-4gjr-6gjm
RustFS: Missing admin authorization on notification target endpoints allows unauthenticated configuration of event webhooks
High Also affects rustfs
GHSA-mx42-j6wv-px98
RustFS has an authorization bypass in multipart UploadPartCopy enables cross-bucket object exfiltration
Medium Also affects rustfs
GHSA-v9fg-3cr2-277j
Rust has Critical Stored XSS in Preview Modal, leading to Administrative Account Takeover
Medium Also affects rustfs
GHSA-w5fh-f8xh-5x3p
RustFS: Missing Post Policy Validation leads to Arbitrary Object Write
Critical Also affects rustfs
GHSA-r54g-49rx-98cr
RustFS Logs Sensitive Credentials in Plaintext
High Also affects rustfs
GHSA-fc6g-2gcp-2qrq
RustFS has SourceIp bypass via spoofed X-Forwarded-For/Real-IP headers
High Also affects rustfs
GHSA-333v-68xh-8mmq
RustFS's RPC signature verification logs shared secret
High Also affects rustfs
Is this in your code?

MergeHarbor checks every repository's dependencies against this database, ranks what matters by exploitability and reachability, routes it to the owning team and opens the fix pull request.

Check your repos with MergeHarbor