CRITICAL🇬🇧 English

CVE-2024-1631

Słabe generowanie kluczy ed25519 w bibliotece Dfinity ICP-JS-Core

CVSS 9.1v3.1pub. 2024-02-21upd. 2025-12-10

Biblioteka @dfinity/identity generuje pary kluczy ed25519 przy użyciu niewiarygodnego (insecure) ziarna losowości zamiast kryptograficznie bezpiecznego źródła. Podatność może prowadzić do kompromitacji klucza prywatnego tożsamości, a w konsekwencji do utraty środków lub kontroli nad zasobami na platformie Internet Computer.

Pokaż oryginał (EN)

Impact: The library offers a function to generate an ed25519 key pair via Ed25519KeyIdentity.generate with an optional param to provide a 32 byte seed value, which will then be used as the secret key. When no seed value is provided, it is expected that the library generates the secret key using secure randomness. However, a recent change broke this guarantee and uses an insecure seed for key pair generation. Since the private key of this identity (535yc-uxytb-gfk7h-tny7p-vjkoe-i4krp-3qmcl-uqfgr-cpgej-yqtjq-rqe) is compromised, one could lose funds associated with the principal on ledgers or lose access to a canister where this principal is the controller.

🤖 Analiza AI
Jak działa

Funkcja Ed25519KeyIdentity.generate umożliwia generowanie pary kluczy ed25519 z opcjonalnym 32-bajtowym ziarnem (seed) podawanym przez użytkownika. Gdy ziarno nie jest przekazywane przez wywołującego, biblioteka powinna samodzielnie wygenerować klucz prywatny przy użyciu kryptograficznie bezpiecznej losowości. Na skutek błędu wprowadzonego w jednej z późniejszych zmian kodu, biblioteka zaczęła używać przewidywalnego, niezabezpieczonego ziarna, co sprawia, że generowane klucze prywatne są deterministyczne i możliwe do odtworzenia przez atakującego. Znany, skompromitowany klucz prywatny odpowiada konkretnej tożsamości (535yc-uxytb-gfk7h-tny7p-vjkoe-i4krp-3qmcl-uqfgr-cpgej-yqtjq-rqe).

Skutki

Atakujący może odtworzyć klucz prywatny tożsamości wygenerowanej przez podatną wersję biblioteki, co umożliwia przejęcie kontroli nad powiązanymi zasobami — w tym kradzież środków z portfeli (ledgerów) oraz przejęcie kontroli nad kanisterami (canisters), dla których dana tożsamość jest kontrolerem.

Mitygacja

Należy zaktualizować pakiet @dfinity/identity do wersji 1.0.1 lub nowszej, dostępnej na npm (https://www.npmjs.com/package/@dfinity/identity/v/1.0.1). Wszelkie pary kluczy wygenerowane przez podatne wersje biblioteki bez podania własnego bezpiecznego ziarna należy uznać za skompromitowane i niezwłocznie wymienić, a powiązane zasoby (środki, kontrola nad kanisterami) zabezpieczyć poprzez zmianę tożsamości kontrolera.

Kogo dotyczy

Biblioteka @dfinity/identity (pakiet npm) — wersje, w których wprowadzono zmianę psującą generowanie bezpiecznego ziarna; zgodnie z referencjami poprawka dostępna jest w wersji 1.0.1

Uwagi

W opisie technicznym wprost wskazano skompromitowany identyfikator tożsamości: 535yc-uxytb-gfk7h-tny7p-vjkoe-i4krp-3qmcl-uqfgr-cpgej-yqtjq-rqe. Każda aplikacja korzystająca z tej konkretnej tożsamości powinna zostać potraktowana jako bezpośrednio zagrożona.

CVSS Vector
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N
  • Dfinity Icp Js Core

    APP
    Dfinity
    0.20.0 – 1.0.1 (bez)
🔵
ZWERYFIKUJ U PRODUCENTA
Brak jednoznacznych danych o patchu. Sprawdź referencje od producenta.
CWE
Referencje

Powiązane podatności

CVE-2024-7884HIGH7.5ten sam vendor

When a canister method is called via ic_cdk::call* , a new Future CallFuture is created and can be awaited by...

CVE-2023-6245HIGH7.5ten sam vendor

The Candid library causes a Denial of Service while parsing a specially crafted payload with 'empty' data typ...

CVE-2024-11991MEDIUM5.6ten sam vendor

Motoko's incremental garbage collector is impacted by an uninitialized memory access bug, caused by incorrect ...

CVE-2024-4435MEDIUM5.9ten sam vendor

When storing unbounded types in a BTreeMap, a node is represented as a linked list of "memory chunks". It was ...