mirror of
https://github.com/rustfs/rustfs.git
synced 2026-07-26 16:28:15 +00:00
7b20554056
The internode RPC HMAC secret is derived from the S3 credential pair via `derive_rpc_secret` when `RUSTFS_RPC_SECRET` is unset. The derivation uses the secret key as the HMAC key, so when the default secret key (`rustfsadmin`) is in effect the derived RPC secret is a fixed, publicly computable value. Any network peer can then forge valid `x-rustfs-signature` headers and invoke internode RPC routes (e.g. `read_file_stream`), bypassing S3 IAM entirely. `normalize_rpc_secret` already rejected the literal default when it was supplied directly, but `resolve_rpc_secret` still derived a secret from the default credential pair. Make the derivation path fail closed: refuse to derive while the default secret key is in effect, forcing operators to set `RUSTFS_RPC_SECRET` (or a non-default `RUSTFS_SECRET_KEY`). A default access key paired with a non-default secret key remains safe and is still allowed. Addresses GHSA-68cw-96m3-h2cf (incomplete-fix follow-up to CVE-2026-45039).