RustFS gRPC GetMetrics deserialization panic enables remote DoS
Collected exploitation and prediction evidence
Risk source coverageCISA KEV is observed exploitation evidence. FIRST EPSS is a dated prediction of exploitation in the next 30 days. Missing scores are unknown. This collector requests predictions only for explicit CVE aliases in the public NuGet archive; Microsoft release views retain their existing prediction scope.
No collected risk observation for these identifiers. This does not establish absence of exploitation or a zero probability.
cve-program · CVE-2025-69255
PublishedRustFS 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 get_metrics to unwrap() failed deserialization of metric_type/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.
- Source published
- 7 Jan 2026 20:34:25 UTC
- Source modified
- 7 Jan 2026 21:25:33 UTC
- Observed here
- 23 Oct 2026 15:48:27 UTC
- Source terms
- CVE Program Terms of Use
Original source record · Cite this exact observation · Complete original publisher JSON
This view projects the publisher's source fields for reading; the original JSON retains additional fields and CVE enrichment containers. Attribution: cve-program · CVE Program Terms of Use. Source text is retained; field grouping and change labels are provided by ChangeIntel.
CVSS 4.0 · 5.5 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
euvd · EUVD-2026-1161
PublishedRustFS 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 get_metrics to unwrap() failed deserialization of metric_type/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.
EUVD source date text has no stated timezone and is retained without inventing a UTC instant. Related bulletin membership is not an alias, common cause or applicability claim. A missing vector with a zero score is treated as unrated. Complete vendor/product and underlying source evidence remains in the original JSON.
Original publisher date fields
datePublished: Jan 7, 2026, 8:34:25 PM
dateUpdated: Jan 7, 2026, 9:25:33 PM
- Source published
- Jan 7, 2026, 8:34:25 PM (timezone not stated)
- Source modified
- Jan 7, 2026, 9:25:33 PM (timezone not stated)
- Observed here
- 9 Nov 2026 04:12:00 UTC
- Source terms
- ENISA EUVD · source terms and attribution apply
Original source record · Cite this exact observation · Complete original publisher JSON
This view projects the publisher's source fields for reading; the original JSON retains additional fields and CVE enrichment containers. Attribution: euvd · ENISA EUVD · source terms and attribution apply. Source text is retained; field grouping and change labels are provided by ChangeIntel.
EUVD CVSS 4.0 · 5.5 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
nvd · CVE-2025-69255
PublishedRustFS 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 get_metrics to unwrap() failed deserialization of metric_type/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.
NVD analysis and CPE criteria are source context, not proof that a package or your environment is affected. Complete affected data, logical configurations and SSVC are retained in the original JSON.
Source analysis status: Analyzed
Weakness classifications: CWE-755
Original publisher date fields
published: 2026-01-07T21:16:00.510
lastModified: 2026-10-14T19:10:00.297
66 source CPE criteria · context only
- cpe:2.3:a:rustfs:rustfs:1.0.0:alpha13:*:*:*:rust:*:*
- cpe:2.3:a:rustfs:rustfs:1.0.0:alpha14:*:*:*:rust:*:*
- cpe:2.3:a:rustfs:rustfs:1.0.0:alpha15:*:*:*:rust:*:*
- cpe:2.3:a:rustfs:rustfs:1.0.0:alpha16:*:*:*:rust:*:*
- cpe:2.3:a:rustfs:rustfs:1.0.0:alpha17:*:*:*:rust:*:*
- cpe:2.3:a:rustfs:rustfs:1.0.0:alpha18:*:*:*:rust:*:*
- cpe:2.3:a:rustfs:rustfs:1.0.0:alpha19:*:*:*:rust:*:*
- cpe:2.3:a:rustfs:rustfs:1.0.0:alpha20:*:*:*:rust:*:*
- cpe:2.3:a:rustfs:rustfs:1.0.0:alpha21:*:*:*:rust:*:*
- cpe:2.3:a:rustfs:rustfs:1.0.0:alpha22:*:*:*:rust:*:*
- cpe:2.3:a:rustfs:rustfs:1.0.0:alpha23:*:*:*:rust:*:*
- cpe:2.3:a:rustfs:rustfs:1.0.0:alpha24:*:*:*:rust:*:*
- cpe:2.3:a:rustfs:rustfs:1.0.0:alpha25:*:*:*:rust:*:*
- cpe:2.3:a:rustfs:rustfs:1.0.0:alpha26:*:*:*:rust:*:*
- cpe:2.3:a:rustfs:rustfs:1.0.0:alpha27:*:*:*:rust:*:*
- cpe:2.3:a:rustfs:rustfs:1.0.0:alpha28:*:*:*:rust:*:*
- cpe:2.3:a:rustfs:rustfs:1.0.0:alpha29:*:*:*:rust:*:*
- cpe:2.3:a:rustfs:rustfs:1.0.0:alpha30:*:*:*:rust:*:*
- cpe:2.3:a:rustfs:rustfs:1.0.0:alpha31:*:*:*:rust:*:*
- cpe:2.3:a:rustfs:rustfs:1.0.0:alpha32:*:*:*:rust:*:*
- cpe:2.3:a:rustfs:rustfs:1.0.0:alpha33:*:*:*:rust:*:*
- cpe:2.3:a:rustfs:rustfs:1.0.0:alpha34:*:*:*:rust:*:*
- cpe:2.3:a:rustfs:rustfs:1.0.0:alpha35:*:*:*:rust:*:*
- cpe:2.3:a:rustfs:rustfs:1.0.0:alpha36:*:*:*:rust:*:*
- cpe:2.3:a:rustfs:rustfs:1.0.0:alpha37:*:*:*:rust:*:*
- cpe:2.3:a:rustfs:rustfs:1.0.0:alpha38:*:*:*:rust:*:*
- cpe:2.3:a:rustfs:rustfs:1.0.0:alpha39:*:*:*:rust:*:*
- cpe:2.3:a:rustfs:rustfs:1.0.0:alpha40:*:*:*:rust:*:*
- cpe:2.3:a:rustfs:rustfs:1.0.0:alpha41:*:*:*:rust:*:*
- cpe:2.3:a:rustfs:rustfs:1.0.0:alpha42:*:*:*:rust:*:*
- cpe:2.3:a:rustfs:rustfs:1.0.0:alpha43:*:*:*:rust:*:*
- cpe:2.3:a:rustfs:rustfs:1.0.0:alpha44:*:*:*:rust:*:*
- cpe:2.3:a:rustfs:rustfs:1.0.0:alpha45:*:*:*:rust:*:*
- cpe:2.3:a:rustfs:rustfs:1.0.0:alpha46:*:*:*:rust:*:*
- cpe:2.3:a:rustfs:rustfs:1.0.0:alpha47:*:*:*:rust:*:*
- cpe:2.3:a:rustfs:rustfs:1.0.0:alpha48:*:*:*:rust:*:*
- cpe:2.3:a:rustfs:rustfs:1.0.0:alpha49:*:*:*:rust:*:*
- cpe:2.3:a:rustfs:rustfs:1.0.0:alpha50:*:*:*:rust:*:*
- cpe:2.3:a:rustfs:rustfs:1.0.0:alpha51:*:*:*:rust:*:*
- cpe:2.3:a:rustfs:rustfs:1.0.0:alpha52:*:*:*:rust:*:*
- cpe:2.3:a:rustfs:rustfs:1.0.0:alpha53:*:*:*:rust:*:*
- cpe:2.3:a:rustfs:rustfs:1.0.0:alpha54:*:*:*:rust:*:*
- cpe:2.3:a:rustfs:rustfs:1.0.0:alpha55:*:*:*:rust:*:*
- cpe:2.3:a:rustfs:rustfs:1.0.0:alpha56:*:*:*:rust:*:*
- cpe:2.3:a:rustfs:rustfs:1.0.0:alpha57:*:*:*:rust:*:*
- cpe:2.3:a:rustfs:rustfs:1.0.0:alpha58:*:*:*:rust:*:*
- cpe:2.3:a:rustfs:rustfs:1.0.0:alpha59:*:*:*:rust:*:*
- cpe:2.3:a:rustfs:rustfs:1.0.0:alpha6:*:*:*:rust:*:*
- cpe:2.3:a:rustfs:rustfs:1.0.0:alpha60:*:*:*:rust:*:*
- cpe:2.3:a:rustfs:rustfs:1.0.0:alpha61:*:*:*:rust:*:*
- cpe:2.3:a:rustfs:rustfs:1.0.0:alpha62:*:*:*:rust:*:*
- cpe:2.3:a:rustfs:rustfs:1.0.0:alpha63:*:*:*:rust:*:*
- cpe:2.3:a:rustfs:rustfs:1.0.0:alpha64:*:*:*:rust:*:*
- cpe:2.3:a:rustfs:rustfs:1.0.0:alpha65:*:*:*:rust:*:*
- cpe:2.3:a:rustfs:rustfs:1.0.0:alpha66:*:*:*:rust:*:*
- cpe:2.3:a:rustfs:rustfs:1.0.0:alpha67:*:*:*:rust:*:*
- cpe:2.3:a:rustfs:rustfs:1.0.0:alpha68:*:*:*:rust:*:*
- cpe:2.3:a:rustfs:rustfs:1.0.0:alpha69:*:*:*:rust:*:*
- cpe:2.3:a:rustfs:rustfs:1.0.0:alpha70:*:*:*:rust:*:*
- cpe:2.3:a:rustfs:rustfs:1.0.0:alpha71:*:*:*:rust:*:*
- cpe:2.3:a:rustfs:rustfs:1.0.0:alpha72:*:*:*:rust:*:*
- cpe:2.3:a:rustfs:rustfs:1.0.0:alpha73:*:*:*:rust:*:*
- cpe:2.3:a:rustfs:rustfs:1.0.0:alpha74:*:*:*:rust:*:*
- cpe:2.3:a:rustfs:rustfs:1.0.0:alpha75:*:*:*:rust:*:*
- cpe:2.3:a:rustfs:rustfs:1.0.0:alpha76:*:*:*:rust:*:*
- cpe:2.3:a:rustfs:rustfs:1.0.0:alpha77:*:*:*:rust:*:*
The original JSON retains the logical configuration operators, exclusions and version bounds.
- Source published
- 7 Jan 2026 21:16:00 UTC
- Source modified
- 14 Oct 2026 19:10:00 UTC
- Observed here
- 25 Oct 2026 04:17:10 UTC
- Source terms
- NIST NVD usage terms; underlying source attribution retained
Original source record · Cite this exact observation · Complete original publisher JSON
This view projects the publisher's source fields for reading; the original JSON retains additional fields and CVE enrichment containers. Attribution: nvd · NIST NVD usage terms; underlying source attribution retained. Source text is retained; field grouping and change labels are provided by ChangeIntel.
CVSS 4.0 · [email protected] · Secondary · 5.5 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/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X
CVSS 3.1 · [email protected] · Primary · 4.0 CVSS:3.1/AV:L/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L
osv · GHSA-gw2x-q739-qhcr
Published### 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](https://github.com/user-attachments/files/24038341/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 RUSTFS_ACCESS_KEY=devadmin RUSTFS_SECRET_KEY=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 '{"metric_type":"","opts":""}' \ # 127.0.0.1:9000 node_service.NodeService/GetMetrics ``` 3) 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.
- Source published
- 7 Jan 2026 18:36:23 UTC
- Source modified
- 3 Feb 2026 03:16:17 UTC
- Observed here
- 24 Oct 2026 13:19:54 UTC
- Source terms
- GitHub Advisory Database · CC-BY-4.0
Original source record · Cite this exact observation · Complete original publisher JSON
This view projects the publisher's source fields for reading; the original JSON retains additional fields and CVE enrichment containers. Attribution: osv · GitHub Advisory Database · CC-BY-4.0. Source text is retained; field grouping and change labels are provided by ChangeIntel.
CVSS_V4 · 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
Publisher rating · MODERATE