Critical, CVSS 9.3npmAmendedPublished
bitcoinjs-lib: Undetected merkle node duplication in block root computation validates a forged transaction list
CVE-2026-107846 · GHSA-8vv3-6qpc-gpw6
- Affected
- npm bitcoinjs-lib >= 2.3.0, < 5.2.1; >= 6.0.0, < 6.1.8; >= 7.0.0-rc.0, < 7.0.2
- Fixed in
- 5.2.16.1.87.0.2· Vendor fix available
- Issue
- fastMerkleRoot pads an odd level by hashing the last node with itself. It does not report that it did so, and checkTxRoots never looks for repeated transactions. A peer can therefore duplicate transactions to fill the pad and produce a block with a different transaction list but the same merkle root. The block hash and block id do not change, so the header still carries valid proof of work. In the proof of concept a real mainnet block goes from nine transactions to ten, and separately to twelve, with the same id every time, and checkTxRoots accepts all three. Bitcoin Core rejects this case through the mutated flag in ComputeMerkleRoot and the bad-txns-duplicate reason in CheckBlock. This is CVE-2012-2459. Details A bitcoin merkle tree pads an odd level by hashing the last node with itself. Duplicating transactions to fill that pad therefore yields the same root for a different transaction list. This is CVE-2012-2459. Bitcoin Core detects it in ComputeMerkleRoot, which scans…
Recommended action: Upgrade to 7.0.2, 6.1.8 or 5.2.1 by release line, then redeploy and verify.A vendor fix does not resolve your finding until you verify it in your own systems.