#CriticalVulnerability
🚨 $BTC のアプリケーション開発者の皆さんへ: 「bitcoinjs-lib」に重大な脆弱性

広く使われている `bitcoinjs-lib` ライブラリで、2つの深刻なバグが修正されました。この不具合により、完全に有効な署名済みPSBT(部分署名ビットコイン取引)トランザクションで、マイナー手数料が実際より大幅に少なく報告されるおそれがありました。

何が問題なのでしょうか?
ビットコインでは、手数料は入力の合計額から出力の合計額を差し引いた金額です。2つの異なるロジックエラーにより、実際にはウォレットから差し引かれ、マイナーに支払われる金額が最大でほぼ1 BTC(9億サトシ)に達する可能性があるにもかかわらず、ライブラリは最小限の手数料(例:200または1,000サトシ)を報告していました。
1. 入力額の不一致:署名処理では前のトランザクションのデータ全体を使用する一方、手数料計算モジュールは、より低い額が記録された競合データを参照していました。署名は有効なままでしたが、手数料の計算は誤っていました。
2. 入力額の記録漏れ:金額が指定されていない確定済みの入力について、ライブラリはその値を「0」として扱っていました。そのため、インポートされたトランザクションに巨額の実手数料が隠される可能性がありました。

影響を受けるバージョンは? v5シリーズ:以下で修正済み
➡️ 5.2.2(脆弱なバージョン:5.1.0~5.2.1)
➡️ v6シリーズ:6.1.9で修正済み(脆弱なバージョン:6.0.0~6.1.8)
➡️ v7シリーズ:7.0.4で修正済み(脆弱なバージョン:7.0.0-rc.0~7.0.3)

何をすべきですか?
➡️ 修正済みバージョン(5.2.2、6.1.9、7.0.4)にアップデートしてください。
➡️ 現時点でアップデートできない場合は、入力額を独自に検証する仕組みを実装し、署名または手数料計算の前に、不整合のある値をすべて拒否してください。

アプリケーションの安全性は、ライブラリを無条件に信頼するか、1サトシずつ検証するかにかかっています。🛡️