Katalog CVE

CVE-2026-107846

KrytyczneCVSS 9.3
Opublikowano: Przetłumaczono: NVD NIST

Streszczenie

W bibliotece bitcoinjs-lib (JavaScript dla Node.js i przeglądarek) w wersjach od 2.3.0 do 5.2.1, 6.1.8 i 7.0.2 funkcja fastMerkleRoot dopełnia nieparzyste poziomy drzewa Merkle'a przez hashowanie ostatniego węzła z samym sobą, ale nie zgłasza sąsiadujących zduplikowanych hashy. Ścieżki walidacji mogą zaakceptować przeliczony korzeń bez sprawdzenia mutacji, umożliwiając peerowi dodanie zduplikowanych transakcji przy zachowaniu oryginalnego korzenia Merkle'a, nagłówka bloku i proof of work.

Ocena ryzyka

Odbiorcy polegający na walidacji korzenia bloku (eksploratory, indeksery giełd, klienci SPV) mogą przetworzyć transakcję dwukrotnie lub odrzucić uczciwy blok, co prowadzi do niespójności i błędów w księgowaniu.

Rekomendacja

Zaktualizuj bitcoinjs-lib do wersji 5.2.1, 6.1.8 lub 7.0.2 i zweryfikuj logikę walidacji korzenia bloku w aplikacjach.

Powiązane podatności

Oryginalny opis (angielski, źródło NVD)

bitcoinjs-lib is a JavaScript Bitcoin library for Node.js and browsers. From 2.3.0 until 5.2.1, 6.1.8, and 7.0.2, fastMerkleRoot pads odd Merkle-tree levels by hashing the final node with itself but does not report adjacent duplicate hashes. The affected block-root verifier was introduced as Block.checkMerkleRoot() alongside Block.calculateMerkleRoot(), while later versions expose validation through checkTxRoots() and __checkMerkleRoot; these validation paths can accept a recomputed root without checking for mutation. A peer can append duplicate transactions so a different transaction list retains the original Merkle root, block header, proof of work, and block identifier. Consumers that rely on block-root validation, including explorers, exchange indexers, or SPV clients, can process a duplicated transaction twice or blacklist the shared block hash and reject the honest block. This issue is fixed in versions 5.2.1, 6.1.8, and 7.0.2.

Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS