Electrumに送金すり替えの脆弱性、4.8.3で修正
ビットコインウォレットのElectrumに、悪意あるサーバーへ接続していると、送金したばかりの取引を攻撃者宛ての偽の取引にすり替えられる脆弱性が見つかりました。暗号資産を扱う担当者や、業務端末にElectrumを入れている組織が対象で、修正版4.8.3への更新が必要です。
急ぎ度: 早めに
CVSS v3は7.5、v4は9.3と高く、資産を直接失う脆弱性で、修正版4.8.3がすでに出ているためです。
関係があるか
Electrumで暗号資産を送金している個人や組織が対象です。とくに、第三者が運用する公開サーバーへ接続している環境は、悪意あるサーバーに当たる可能性があります。
| 製品 | 影響を受ける版 | 直った版 |
|---|---|---|
| Electrum | 4.8.3より前のすべての版 | 4.8.3 |
確かめ方
- 1ElectrumのメニューのHelpからAboutを開き、表示される版が4.8.3以上かを確認します。
- 2pipで導入した環境なら、
pip show electrumでVersionの行を見ます。 - 3社内で使っている端末を洗い出し、Electrumが入っている端末と版の一覧を作ります。個人用の端末で業務の資金を扱っていないかも見ておくと、見落としが減ります。
- 4接続先のサーバーが自前で運用しているものか、第三者のものかを、ネットワーク設定の画面で確認します。
何が起きたか
Electrumに、送金した直後の取引を別の取引にすり替えられる脆弱性が見つかりました。悪意あるサーバーに接続していると、利用者が送った取引が握りつぶされ、代わりに攻撃者宛てに支払う偽の取引が画面に表示されます。その偽の取引に対して手数料の引き上げ(RBF)を行い署名すると、資金が攻撃者の宛先へ渡ります。
原因は署名の検証漏れです。4.8.3より前のElectrumは、承認前の取引(mempool上の取引)に含まれる、自分のウォレットが持つ入力について、署名を検証していませんでした。サーバーから届いた取引を、本人が署名したものとして信じてしまうわけです。分類はCWE-347(暗号署名の不適切な検証)です。
修正版の4.8.3で、この検証が追加されました。ベンダーのアドバイザリと修正コミットが公開されています。
攻撃の流れ
-
1
悪意ある接続先
利用者のElectrumが、攻撃者の用意したサーバーに接続している。
-
2
送金を実行
利用者が通常どおり取引をブロードキャストする。
-
3
取引のすり替え
サーバーが元の取引を握りつぶし、攻撃者宛ての手数料ゼロの偽の取引を返す。
-
4
検証をすり抜け
古い版は自分の入力の署名を検証せず、偽の取引をそのまま表示する。
-
5
署名して送金
利用者が手数料引き上げに署名し、資金が攻撃者の宛先へ渡る。
どう悪用されるか
認証は要りませんが、攻撃者は利用者のElectrumが接続するサーバーの側に立つ必要があります。つまり、悪意あるサーバーに接続している、または接続先が乗っ取られている状況が前提です。複雑さは高く評価されています。
CVSS v3のベクトルでは、利用者の操作が必要とされています。偽の取引に対する手数料の引き上げと署名がそれに当たります。一方、CVSS v4のベクトルでは操作は不要、複雑さも低いと評価され、9.3という高い値になっています。
悪用されると、利用者は意図しない宛先に支払う取引へ署名してしまいます。ウォレットの資金を失う被害です。機密性、完全性、可用性の影響は、いずれも高と評価されています。
今すぐやること
-
1
Electrumを4.8.3以上に更新する
ウォレットを使う端末すべてで、修正版に更新します。配布元の公式サイトからダウンロードし、署名の確認を済ませてから入れてください。
-
2
利用している端末と版を洗い出す
社内でElectrumが動いている端末を一覧にします。更新が済んだことを版の表示で確かめます。
pip show electrum -
3
最近の送金履歴を見直す
送金直後に取引が消えた、手数料が0の取引が出た、手数料引き上げを促された、といったことがなかったかを確認します。心当たりがあれば、別の手段で履歴を照合してください。
-
4
接続先サーバーの運用方針を決める
資金を扱う端末は、自前で運用する信頼できるサーバーに接続する方針にするかを、更新と合わせて検討します。
すぐ更新できないとき
すぐに更新できないときは、送金した取引が突然表示から消えたり、手数料ゼロの取引が現れたりしたら、手数料引き上げには署名しないでください。署名の前に、宛先アドレスと金額を必ず見直します。接続先を自前で運用する信頼できるサーバーに限る方法もあります。ただし、これらはリスクを下げる手段にとどまり、根本の対処は修正版への更新です。
背景
Electrumは、ブロックチェーン全体を端末に保存せず、サーバーから取引や残高の情報を受け取って動く軽量ウォレットです。そのため、サーバーは便利な情報源であると同時に、信頼しきってはいけない相手でもあります。サーバーが返す情報は、ウォレット側で検証して初めて安全に使えます。
今回の脆弱性は、その検証の一部が抜けていたものです。未承認の取引を置き換えて手数料を引き上げる機能(RBF)は、本来、送金が詰まったときの救済手段です。この仕組みを逆手に取ると、利用者の操作そのものが攻撃の入口になります。接続先のサーバーを選べる設計だけに、接続先をどう決めているかが、影響を受けるかどうかの分かれ目になります。
よくある質問
Q.すでに手数料引き上げに署名してしまったかもしれません。どうすればよいですか。
まだ分かっていないこと
- 実際の攻撃で悪用された事例が確認されているかは、公表されていません。最新の状況はベンダーのアドバイザリ(GitHubのGHSA-6jp4-8v48-cc5v)で確認してください。
- ハードウェアウォレットと組み合わせて使っている場合に、署名の段階で防げるかどうかは、公表されていません。
- Electrumから派生したウォレットが同じ影響を受けるかどうかは、公表されていません。
この記事は、取得元の公開情報をもとに生成 AI で作成しています。誤りを含むことがあります。対応を決める前に、下の原文と参照先を確認してください。
影響パッケージ
| 種類 | パッケージ | 影響を受ける版 | 直った版 |
|---|---|---|---|
| spesmilo | electrum |
4.8.3 未満 |
4.8.3 |
原文の説明 取得元が公開している説明をそのまま載せています (多くは英語)。
Electrum before 4.8.3 fails to verify signatures of wallet-owned inputs in unconfirmed mempool transactions, allowing malicious servers to replace a just-broadcast transaction with a conflicting one. Attackers can swallow the user's transaction and display an invalid zero-fee copy paying an attacker address, tricking users into RBF fee-bumping and signing it.
出典: CVE.org (CVE Program・cvelistV5) NVD