Horizon Alert
Summary of the vulnerability and why it matters
This advisory concerns a vulnerability in a JavaScript library used for Bitcoin-related applications. The flaw could allow malicious actors to manipulate transaction data, potentially leading to incorrect processing by services that rely on the library's validation functions, such as explorers or exchanges. The main concern is confirming if your applications utilize this specific library and are therefore exposed.
- A library flaw could allow transaction data manipulation.
- Confirms relevance for Bitcoin applications and services.
- Understand exposure and validate library use.
Attack Path
How an attacker could exploit the issue
An attacker could manipulate transaction data within a Bitcoin block to create a situation where a block's Merkle root appears valid even with duplicate transactions. This could happen by a peer appending duplicate transactions, causing a different transaction list to retain the original Merkle root. Systems that rely on validating this root, such as explorers or SPV clients, might then process duplicated transactions, potentially leading to incorrect accounting or network instability.
- Requires network access.
- Achieved by sending specially crafted transactions.
- Risk of incorrect transaction processing.
Live Threat
Current exploitation, exposure, and threat context
The bitcoinjs-lib library's block-root verification could be tricked into accepting a manipulated transaction list that retains a valid Merkle root. This could allow specially crafted transactions to be processed twice by consumer applications, or cause honest blocks to be rejected by SPV clients and other consumers.
- Affected block-root validation logic.
- Accepts recomputed root without checking mutation.
- Duplicate transactions processed, blocks rejected.
Operational Fix
Recommended remediation, mitigation, and detection steps
Application owners and platform teams are likely responsible for addressing this vulnerability in the bitcoinjs-lib, as it impacts how block roots are validated in applications like explorers, exchange indexers, or SPV clients. The initial step is to identify all instances of the affected library, confirm their exposure and criticality, and then coordinate remediation efforts with accountable owners.
- Ownership: Application and platform teams.
- Verify first: Identify all library instances.
- Action: Plan remediation based on risk.