RustFS przed wersją 1.0.0-beta.2 używa hardkodowanego, publicznie znanegoklucza współdzielonego 'rustfsadmin' do uwierzytelniania żądań w warstwie RPC między węzłami klastra. Atakujący z dostępem sieciowym może podszywać się pod legalny węzeł i uzyskać pełny dostęp do systemu bez żadnych poświadczeń.
▸ Pokaż oryginał (EN)
RustFS is a distributed object storage system built in Rust. Prior to 1.0.0-beta.2, the internode RPC layer authenticates every request with an HMAC-SHA256 signature using a shared secret. The function that produces this secret, get_shared_secret() in crates/ecstore/src/rpc/http_auth.rs, falls back to the public, source-tree-embedded DEFAULT_SECRET_KEY = "rustfsadmin" when neither the RUSTFS_RPC_SECRET environment variable nor the global S3 secret key has been configured. This vulnerability is fixed in 1.0.0-beta.2.
Funkcja get_shared_secret() w pliku crates/ecstore/src/rpc/http_auth.rs generuje sekret HMAC-SHA256 używany do podpisywania każdego żądania RPC między węzłami. Gdy zmienna środowiskowa RUSTFS_RPC_SECRET ani globalny klucz S3 nie są skonfigurowane, funkcja cofa się do wartości domyślnej DEFAULT_SECRET_KEY = 'rustfsadmin', która jest osadzona w publicznym kodzie źródłowym repozytorium. Każdy, kto zna ten klucz (a jest on publicznie dostępny), może samodzielnie generować poprawne sygnatury HMAC i wysyłać dowolne żądania RPC do węzłów klastra.
Atakujący bez żadnego uwierzytelnienia może wysyłać uwierzytelnione żądania do warstwy RPC klastra RustFS, co prowadzi do pełnej kompromitacji poufności, integralności i dostępności przechowywanych danych.
Należy zaktualizować RustFS do wersji 1.0.0-beta.2 lub nowszej. Niezależnie od aktualizacji zaleca się jawne skonfigurowanie zmiennej środowiskowej RUSTFS_RPC_SECRET na silny, losowy sekret, aby uniknąć polegania na wartości domyślnej.
RustFS we wszystkich wersjach przed 1.0.0-beta.2, w których nie skonfigurowano zmiennej środowiskowej RUSTFS_RPC_SECRET ani globalnego klucza S3
Podatność dotyczy wyłącznie instalacji, w których nie skonfigurowano własnego sekretu RPC — w takich środowiskach klucz 'rustfsadmin' jest osadzony w publicznym kodzie źródłowym na GitHub, co czyni go trywialnie dostępnym dla atakujących. Szczegóły opublikowane w GitHub Security Advisory GHSA-r5qv-rc46-hv8q.
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H