Bitcoin apps risk massive fee drain, and 2 library bugs are blamed

Applications importing PSBTs can miscalculate miner fees and miss an excessive-fee warning if they rely on the vulnerable library's accounting. Read the full story on CryptoSlateUnderstand the crypto stories that matter and what to watch next. Get The Catalyst in your inbox

Bitcoin apps risk massive fee drain, and 2 library bugs are blamed

Bitcoinjs-lib, a library used to build Bitcoin applications, has patched two bugs that can make software understate the miner fee a valid transaction would pay if broadcast and accepted.

The Oct. 26 security disclosures identify fixes in versions 5.2.2, 6.1.9 and 7.0.4 for the corresponding release lines.

The affected format is a partially signed Bitcoin transaction (PSBT), and BIP 174 defines it as a way to pass transaction information and signatures between clients. Signing, combining signatures, finalizing inputs, and extracting the transaction are separate functions, even when one application performs several of them.

The risk concerns applications that import these packages and trust bitcoinjs-lib's fee calculation or excessive-fee safeguard without independently checking the outputs being spent. Maintainers need to review their dependency version and how they validate imported PSBTs.

A Bitcoin transaction's fee is the difference between the value of its inputs and its outputs, so understating an input makes the calculated fee look smaller.

In the first flaw, signing and fee accounting can use different values for the same input. Signing uses the full previous transaction, while fee accounting prefers a conflicting record containing a smaller value. As a result, the vulnerable software can authorize the real transaction while evaluating the wrong fee.

The advisory describes a demonstration on bitcoinjs-lib 7.0.1 in which the actual fee was 900,000,000 satoshi, but the library reported 200 satoshi. The signature verified, and extraction returned without the default fee-rate warning.

Related Reading

The second advisory describes finalized inputs with both input-value records missing. The calculator counts those inputs as zero, and an already-signed PSBT imported from another party can reach this calculation without needing another signing operation.

Originally published by cryptoslate Aggregated for informational purposes. All rights belong to the original publisher.
← Back to all news