ニュース暗号資産BitcoinウォレットElectrum、支払いを攻撃者アドレスに迂回させていた高危険度の脆弱性を修正

BitcoinウォレットElectrum、支払いを攻撃者アドレスに迂回させていた高危険度の脆弱性を修正

著者: Decrypt·

重要ポイント

  • •10月24日にリリースされたElectrum 4.8.3は、悪意あるサーバーが偽のトランザクションを表示し、fee-bumpによる支払いを攻撃者が管理するアドレスへ迂回できていた高危険度のエクスプロイトを修正した。
  • •脆弱性の原因は、Electrumがサーバーから受け取った未確認トランザクションの署名を検証していなかったことであり、偽装されたゼロ手数料の支払いがユーザーの履歴上、停滞しているように表示された。
  • •セキュリティ勧告は、一部のサーバーが実際にこの攻撃を実行していたと述べており、あるユーザーは10月18日、操作されたトランザクションをfee-bumpした後に損失を確定したと報告している。
  • •修正パッチは、未確認トランザクションを履歴に追加する前にウォレット自身のインプットの暗号署名を検証する。一方、外部送信者からのトランザクションは署名検証なしで引き続き受け入れられる。
  • •4.8.3より前のバージョンを実行しているユーザーは依然として露出しており、アップデートするか出力アドレスを手動で確認すべきである。自前のサーバーにのみ接続しているユーザーは影響を受けない。
BitcoinウォレットElectrum、支払いを攻撃者アドレスに迂回させていた高危険度の脆弱性を修正

BitcoinウォレットElectrumは10月24日、バージョン4.8.3をリリースした。このリリースには、悪意あるサーバーが偽のトランザクションを注入し、ユーザーを攻撃者が管理するアドレスへの支払いに誘導できていた高危険度のエクスプロイトに対する修正が含まれている。

この脆弱性は、現在入手可能な4.8.3より前のウォレットの全バージョンに影響する。少なくとも1人のユーザーがこのエクスプロイトによる資金喪失を確認している。

攻撃の仕組み

Electrum開発者SomberNightが公開したセキュリティ勧告によると、この攻撃は未確認トランザクションに対するウォレットの信頼モデルを悪用するものだ。ユーザーが侵害されたサーバー経由で支払いをブロードキャストすると、サーバーは実際のトランザクションを隠蔽し、偽の矛盾するトランザクションを注入できる。偽のトランザクションには攻撃者の出力アドレスとゼロ手数料が表示され、支払いが停滞しているように見せかける。

Electrumはサーバーから受け取った未確認トランザクションの署名を検証しないため、偽装されたトランザクションは正当なものとしてウォレットの履歴に表示される。ユーザーが停滞しているように見える支払いをfee-bumpすると、出力アドレスが攻撃者のものである全く新しい有効なトランザクションに署名してブロードキャストすることになる。本来の支払いは一度も送信されておらず、fee-bumpこそが実際にネットワークに到達する最初のトランザクションであり、攻撃者に支払う結果となる。

fee-bump自体はBitcoinで日常的に行われる慣行であり、停滞しているように見える支払いを促す標準的な手段だ。そのため、この偽装は日常的なトラブルシューティングの手順を資金が迂回される瞬間へと変えてしまう。そもそも偽のトランザクションに表示されるゼロ手数料こそが、支払いの停滞という印象を作り出している。

SomberNightは、攻撃者が偽のトランザクションの出力アドレスを、ユーザーが意図した宛先の末尾4文字と一致するように調整(grind)できると指摘した。長いBitcoinアドレスの末尾だけを目視確認する人には、一致しているように見える。

実際に攻撃が発生

勧告は、「一部のサーバーが実際にこの攻撃を実行している」と述べており、2件のユーザー報告がこれを裏付けている。dannydeezyと名乗るユーザーが10月11日に最初にこの疑わしいサーバー挙動を報告したが、操作されたトランザクションがローカルサーバーを越えて伝播することはなく、資金の損失はなかった。別のユーザーRaju-K12は10月18日、操作されたトランザクションをfee-bumpした後に損失が確定したと報告した。

修正パッチの内容

4.8.3の修正は、未確認トランザクションをローカル履歴に追加する前に、ウォレット自身のインプットの暗号署名を検証することで、主要な攻撃面を閉じるものである。これにより、サーバーは有効な署名なしに、ユーザー自身のアドレスに関わる偽のトランザクションを注入できなくなる。攻撃者はこの署名を偽造できない。修正は10月23日にリポジトリへタグ付けされ、翌日には公式リリースページでバイナリが公開された。

外部送信者からのトランザクション、すなわちインプットのいずれもユーザーのウォレットに属さないトランザクションは、署名検証なしで引き続き受け入れられる。SomberNightは勧告の中でこの残されたギャップを認め、解消には追加の作業が必要であると述べている。Electrumがいつ、どのようにこの検証を外部発のトランザクションに拡張するかが、今後のリリースで注目すべき主要な未解決項目である。

慣熟した標的

最古参のBitcoinソフトウェアウォレットの一つであるElectrumは、過去にも悪意あるキャンペーンに対応してきた。2018年に始まった攻撃は不正サーバーを使って偽のアップデート通知を配信し、2020年までにElectrumユーザーから推定2,500万ドルを搾取した。

誰でもノードを運用できるという同ウォレットのオープンなサーバーモデルこそが、この種の攻撃を可能にしている。Electrumは完全なブロックチェーンをダウンロードするのではなく外部サーバーにブロックチェーンデータを依存するライトクライアントであり、このトレードオフはウォレットを高速に保つ一方で、セキュリティをサーバーに向けた信頼モデルに置くことになる。今回のエクスプロイトは、まさにその信頼モデルを直接的に攻撃した。自分が運用するサーバーにのみ接続しているユーザーは影響を受けない。

4.8.3より前のバージョンを実行し続けているユーザーは依然として露出しており、直ちにアップデートできない場合は、トランザクションに署名する前に出力アドレスと金額を手動で確認すべきである。Electrum 4.8.3はelectrum.orgおよびプロジェクトのGitHubリポジトリから入手可能である。