CRITICAL🇬🇧 English

CVE-2024-36400

nano-id (Rust): zbyt mała entropia generowanych identyfikatorów

CVSS 9.4v3.1pub. 2024-06-04upd. 2024-11-21

Biblioteka nano-id dla języka Rust generowała identyfikatory z użyciem znacznie zredukowanego zestawu znaków, co drastycznie obniżało entropię wyników. W kontekstach wymagających bezpieczeństwa, takich jak tokeny sesji, czyni to wygenerowane ID podatnymi na ataki brute-force.

Pokaż oryginał (EN)

nano-id is a unique string ID generator for Rust. Affected versions of the nano-id crate incorrectly generated IDs using a reduced character set in the `nano_id::base62` and `nano_id::base58` functions. Specifically, the `base62` function used a character set of 32 symbols instead of the intended 62 symbols, and the `base58` function used a character set of 16 symbols instead of the intended 58 symbols. Additionally, the `nano_id::gen` macro is also affected when a custom character set that is not a power of 2 in size is specified. It should be noted that `nano_id::base64` is not affected by this vulnerability. This can result in a significant reduction in entropy, making the generated IDs predictable and vulnerable to brute-force attacks when the IDs are used in security-sensitive contexts such as session tokens or unique identifiers. The vulnerability is fixed in 0.4.0.

🤖 Analiza AI
Jak działa

Funkcja `nano_id::base62` używała zestawu 32 znaków zamiast wymaganych 62, a funkcja `nano_id::base58` korzystała z 16 znaków zamiast 58. Makro `nano_id::gen` było dodatkowo podatne w przypadku użycia niestandardowego zestawu znaków, którego rozmiar nie jest potęgą liczby 2. Skutkiem jest znaczna redukcja przestrzeni możliwych wartości identyfikatorów, co czyni je przewidywalnymi. Funkcja `nano_id::base64` nie jest dotknięta tym problemem.

Skutki

Atakujący może przewidzieć lub w krótkim czasie odgadnąć brute-force'em wygenerowane identyfikatory, co w przypadku użycia ich jako tokenów sesji lub unikalnych kluczy grozi nieautoryzowanym dostępem do kont lub zasobów (naruszenie poufności i integralności).

Mitygacja

Należy zaktualizować bibliotekę nano-id do wersji 0.4.0 lub nowszej, w której podatność została naprawiona. Po aktualizacji zaleca się unieważnienie i ponowne wygenerowanie wszystkich identyfikatorów bezpieczeństwa (tokenów sesji, unikalnych kluczy) wytworzonych przez podatne wersje biblioteki.

Kogo dotyczy

Biblioteka nano-id dla Rust (crate nano-id) — wersje poprzedzające 0.4.0, korzystające z funkcji `nano_id::base62`, `nano_id::base58` lub makra `nano_id::gen` z niestandardowym zestawem znaków o rozmiarze niebędącym potęgą 2

Uwagi

Podatność dotyczy wyłącznie zastosowań, w których wygenerowane identyfikatory pełnią funkcję bezpieczeństwa (np. tokeny sesji). Funkcja `nano_id::base64` nie jest podatna. Poprawka dostępna w commicie a9022772b2f1ce38929b5b81eccc670ac9d3ab23 w repozytorium viz-rs/nano-id.

CVSS Vector
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:L
  • Viz Nano Id

    APP
    Viz
    < 0.4.0
🔵
ZWERYFIKUJ U PRODUCENTA
Brak jednoznacznych danych o patchu. Sprawdź referencje od producenta.
CWE
Referencje