{"id":"CVE-2026-22782","aliases":["EUVD-2026-2923","GHSA-333v-68xh-8mmq"],"status":"published","title":"RustFS RPC signature verification logs shared secret","description":"RustFS is a distributed object storage system built in Rust. From \u003e= 1.0.0-alpha.1 to 1.0.0-alpha.79, invalid RPC signatures cause the server to log the shared HMAC secret (and expected signature), which exposes the secret to log readers and enables forged RPC calls. In crates/ecstore/src/rpc/http_auth.rs, the invalid signature branch logs sensitive data. This log line includes secret and expected_signature, both derived from the shared HMAC key. Any invalidly signed request triggers this path. The function is reachable from RPC and admin request handlers. This vulnerability is fixed in 1.0.0-alpha.80.","severity":{"version":"4.0","score":2.9,"vector":"CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:L/VI:N/VA:N/SC:N/SI:N/SA:N/E:P","level":"low","assessor":"cna","from":"cve"},"epss":{"day":"2026-11-11","score":0.00524,"percentile":0.44914,"model":"v2026.06.15"},"facts":{"in_kev":false,"known_exploited":false,"public_exploit":false,"fix_available":true},"cwes":["CWE-532"],"published":"2026-01-16T15:48:58Z","modified":"2026-10-28T02:31:13Z","fixes":[{"ecosystem":"crates.io","package":"rustfs","fixed_in":["1.0.0-alpha.80"],"sources":["ghsa","osv"]}],"affected":[{"source":"ghsa","ecosystem":"crates.io","package":"rustfs","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"1.0.0-alpha.1"},{"last_affected":"1.0.0-alpha.79"},{"fixed":"1.0.0-alpha.80"}]}]},{"source":"osv","ecosystem":"crates.io","package":"rustfs","ranges":[{"type":"SEMVER","events":[{"introduced":"1.0.0-alpha.1"},{"fixed":"1.0.0-alpha.80"}]}]}],"products":[{"vendor":"rustfs","product":"rustfs"}],"references":[{"url":"https://github.com/rustfs/rustfs/security/advisories/GHSA-333v-68xh-8mmq","tags":["x_refsource_CONFIRM","Exploit","Vendor Advisory","advisory","web"]},{"url":"https://github.com/rustfs/rustfs/commit/6b2eebee1d07399ef02c0863bd515b4412a5a560","tags":["x_refsource_MISC","Patch","fix","web"]},{"url":"https://github.com/rustfs/rustfs/blob/9e162b6e9ebb874cc1d06a7b33bc4a05786578aa/crates/ecstore/src/rpc/http_auth.rs#L115-L122","tags":["x_refsource_MISC","Patch","web"]},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2026-22782","tags":["advisory"]},{"url":"https://github.com/advisories/GHSA-333v-68xh-8mmq"},{"url":"https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/22xxx/CVE-2026-22782.json","tags":["advisory"]},{"url":"https://github.com/rustfs/rustfs","tags":["package"]}],"sources":{"cve":[{"id":"CVE-2026-22782","title":"RustFS RPC signature verification logs shared secret","description":"RustFS is a distributed object storage system built in Rust. From \u003e= 1.0.0-alpha.1 to 1.0.0-alpha.79, invalid RPC signatures cause the server to log the shared HMAC secret (and expected signature), which exposes the secret to log readers and enables forged RPC calls. In crates/ecstore/src/rpc/http_auth.rs, the invalid signature branch logs sensitive data. This log line includes secret and expected_signature, both derived from the shared HMAC key. Any invalidly signed request triggers this path. The function is reachable from RPC and admin request handlers. This vulnerability is fixed in 1.0.0-alpha.80.","status":"published","published":"2026-01-16T16:14:15.203Z","modified":"2026-01-16T16:36:08.52Z","cvss":[{"version":"4.0","score":2.9,"vector":"CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:L/VI:N/VA:N/SC:N/SI:N/SA:N/E:P","level":"low","assessor":"cna"}],"cwes":["CWE-532"],"updated_at":"2026-11-02T13:39:05.585774Z"}],"euvd":[{"id":"EUVD-2026-2923","description":"RustFS is a distributed object storage system built in Rust. From \u003e= 1.0.0-alpha.1 to 1.0.0-alpha.79, invalid RPC signatures cause the server to log the shared HMAC secret (and expected signature), which exposes the secret to log readers and enables forged RPC calls. In crates/ecstore/src/rpc/http_auth.rs, the invalid signature branch logs sensitive data. This log line includes secret and expected_signature, both derived from the shared HMAC key. Any invalidly signed request triggers this path. The function is reachable from RPC and admin request handlers. This vulnerability is fixed in 1.0.0-alpha.80.","status":"published","published":"2026-01-16T16:14:15Z","modified":"2026-01-16T16:36:08Z","cvss":[{"version":"4.0","score":2.9,"vector":"CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:L/VI:N/VA:N/SC:N/SI:N/SA:N/E:P","level":"low"}],"updated_at":"2026-11-02T19:48:50.882066Z"}],"ghsa":[{"id":"GHSA-333v-68xh-8mmq","title":"RustFS's RPC signature verification logs shared secret","description":"### Summary\nInvalid RPC signatures cause the server to log the shared HMAC secret (and expected signature), which exposes the secret to log readers and enables forged RPC calls.\n\n### Details\nIn [`crates/ecstore/src/rpc/http_auth.rs:115-122`](https://github.com/rustfs/rustfs/blob/9e162b6e9ebb874cc1d06a7b33bc4a05786578aa/crates/ecstore/src/rpc/http_auth.rs#L115-L122) , the invalid signature branch logs sensitive data:\n```rs\nif signature != expected_signature {\n    error!(\n        \"verify_rpc_signature: Invalid signature: secret {}, url {}, method {}, timestamp {}, signature {}, expected_signature {}\",\n        secret, url, method, timestamp, signature, expected_signature\n    );\n\n    return Err(std::io::Error::other(\"Invalid signature\"));\n}\n```\n\nThis log line includes `secret` and `expected_signature`, both derived from the shared HMAC key. Any invalidly signed request triggers this path. The function is reachable from RPC and admin request handlers.\n\n### PoC\n1. Run RustFS with error logging enabled.\n1. Send a request with an invalid signature:\n    ```\n     ts=$(date +%s)\n     curl -v \\\n       -H \"x-rustfs-timestamp: $ts\" \\\n       -H \"x-rustfs-signature: invalid-signature\" \\\n       \"http://localhost:9000/rustfs/rpc/read_file_stream?disk=foo\u0026volume=bar\u0026path=baz\u0026offset=0\u0026length=1\"\n    ```\n1. Observed output:\n    ```\n     HTTP 403 AccessDenied: Invalid signature\n     verify_rpc_signature: Invalid signature: secret rustfsadmin, url /rustfs/rpc/read_file_stream?disk=foo\u0026volume=bar\u0026path=baz\u0026offset=0\u0026length=1, method GET, timestamp 1767852115, signature invalid-signature, expected_signature oisNxNRTb80GXf97s/PGdScJzu8QB9Oxs+uOwf8RiK8=\n    ```\n### Impact\n\n- Exposes the shared RPC HMAC secret to log readers.\n- Enables attackers with log access to forge valid RPC signatures and make unauthorized RPC calls.","status":"published","published":"2026-01-16T15:48:58Z","modified":"2026-01-16T19:11:02Z","cvss":[{"version":"4.0","score":2.9,"vector":"CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:L/VI:N/VA:N/SC:N/SI:N/SA:N/E:P","level":"low"}],"cwes":["CWE-532"],"updated_at":"2026-11-02T14:39:17.333958Z"}],"nvd":[{"id":"CVE-2026-22782","description":"RustFS is a distributed object storage system built in Rust. From \u003e= 1.0.0-alpha.1 to 1.0.0-alpha.79, invalid RPC signatures cause the server to log the shared HMAC secret (and expected signature), which exposes the secret to log readers and enables forged RPC calls. In crates/ecstore/src/rpc/http_auth.rs, the invalid signature branch logs sensitive data. This log line includes secret and expected_signature, both derived from the shared HMAC key. Any invalidly signed request triggers this path. The function is reachable from RPC and admin request handlers. This vulnerability is fixed in 1.0.0-alpha.80.","status":"published","published":"2026-01-16T17:15:54.343Z","modified":"2026-06-17T10:20:25.033Z","cvss":[{"version":"4.0","score":2.9,"vector":"CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:L/VI:N/VA:N/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","level":"low","assessor":"secondary"},{"version":"3.1","score":7.5,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N","level":"high","assessor":"primary"}],"cwes":["CWE-532"],"updated_at":"2026-11-02T14:12:04.066712Z"}],"osv":[{"id":"CVE-2026-22782","title":"RustFS RPC signature verification logs shared secret","description":"RustFS is a distributed object storage system built in Rust. From \u003e= 1.0.0-alpha.1 to 1.0.0-alpha.79, invalid RPC signatures cause the server to log the shared HMAC secret (and expected signature), which exposes the secret to log readers and enables forged RPC calls. In crates/ecstore/src/rpc/http_auth.rs, the invalid signature branch logs sensitive data. This log line includes secret and expected_signature, both derived from the shared HMAC key. Any invalidly signed request triggers this path. The function is reachable from RPC and admin request handlers. This vulnerability is fixed in 1.0.0-alpha.80.","status":"published","published":"2026-01-16T16:14:15.203Z","modified":"2026-10-28T02:31:13.311738172Z","cvss":[{"version":"4.0","score":2.9,"vector":"CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:L/VI:N/VA:N/SC:N/SI:N/SA:N/E:P","level":"low"}],"cwes":["CWE-532"],"updated_at":"2026-11-02T15:44:58.42038Z"},{"id":"GHSA-333v-68xh-8mmq","title":"RustFS's RPC signature verification logs shared secret","description":"### Summary\nInvalid RPC signatures cause the server to log the shared HMAC secret (and expected signature), which exposes the secret to log readers and enables forged RPC calls.\n\n### Details\nIn [`crates/ecstore/src/rpc/http_auth.rs:115-122`](https://github.com/rustfs/rustfs/blob/9e162b6e9ebb874cc1d06a7b33bc4a05786578aa/crates/ecstore/src/rpc/http_auth.rs#L115-L122) , the invalid signature branch logs sensitive data:\n```rs\nif signature != expected_signature {\n    error!(\n        \"verify_rpc_signature: Invalid signature: secret {}, url {}, method {}, timestamp {}, signature {}, expected_signature {}\",\n        secret, url, method, timestamp, signature, expected_signature\n    );\n\n    return Err(std::io::Error::other(\"Invalid signature\"));\n}\n```\n\nThis log line includes `secret` and `expected_signature`, both derived from the shared HMAC key. Any invalidly signed request triggers this path. The function is reachable from RPC and admin request handlers.\n\n### PoC\n1. Run RustFS with error logging enabled.\n1. Send a request with an invalid signature:\n    ```\n     ts=$(date +%s)\n     curl -v \\\n       -H \"x-rustfs-timestamp: $ts\" \\\n       -H \"x-rustfs-signature: invalid-signature\" \\\n       \"http://localhost:9000/rustfs/rpc/read_file_stream?disk=foo\u0026volume=bar\u0026path=baz\u0026offset=0\u0026length=1\"\n    ```\n1. Observed output:\n    ```\n     HTTP 403 AccessDenied: Invalid signature\n     verify_rpc_signature: Invalid signature: secret rustfsadmin, url /rustfs/rpc/read_file_stream?disk=foo\u0026volume=bar\u0026path=baz\u0026offset=0\u0026length=1, method GET, timestamp 1767852115, signature invalid-signature, expected_signature oisNxNRTb80GXf97s/PGdScJzu8QB9Oxs+uOwf8RiK8=\n    ```\n### Impact\n\n- Exposes the shared RPC HMAC secret to log readers.\n- Enables attackers with log access to forge valid RPC signatures and make unauthorized RPC calls.","status":"published","published":"2026-01-16T15:48:58Z","modified":"2026-02-03T03:17:04.868139Z","cvss":[{"version":"4.0","score":2.9,"vector":"CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:L/VI:N/VA:N/SC:N/SI:N/SA:N/E:P","level":"low"}],"cwes":["CWE-532"],"updated_at":"2026-11-02T15:46:35.050232Z"}]}}
