ElectrumのNWCプラグインで送金上限を超える脆弱性、修正版あり
ElectrumのNostr Wallet Connectプラグインで、1日あたりの支払い上限を超えて資金が引き出される脆弱性が見つかりました。4.7.2未満でこのプラグインを使い、外部アプリにウォレットの支払いを任せている組織や個人が対象です。4.7.2に更新し、更新できるまではプラグインを止めて接続先を見直してください。
急ぎ度: 早めに
修正版の4.7.2が出ており、CVSS v3は4.3(medium)ですがv4は9.3と評価が割れていて、KEVへの掲載は確認できないものの、資金が直接減る性質のため、該当する環境は早めに更新すべきです。
関係があるか
Electrumを4.7.2未満で使い、Nostr Wallet Connectプラグインを有効にして外部のNWCクライアントに支払いを許可している環境が対象です。会社の資金を扱うホットウォレットや、決済の自動化にNWCを使っている場合は特に該当しやすくなります。
| 製品 | 影響を受ける版 | 直った版 |
|---|---|---|
| Electrum(Nostr Wallet Connectプラグイン) | 4.7.2未満 | 4.7.2 |
確かめ方
- 1Electrumの版を確認します。画面のAboutで確認するか、コマンドラインから
electrum versionを実行してください。4.7.2未満なら対象です。 - 2プラグインの設定画面で、Nostr Wallet Connectが有効になっているかを見ます。無効で、過去にも使っていなければ、この脆弱性の影響は受けません。
- 3有効な場合は、接続を許可しているNWCクライアントの一覧と、設定している1日の上限額(daily_limit_sat)を控えておきます。心当たりのない接続があれば、あわせて整理の対象にします。
何が起きたか
ElectrumのNostr Wallet Connectプラグインに、設定した1日の支払い上限を超えて送金できてしまう脆弱性があります。接続を許されたNWCクライアントが、本来の上限を超える金額を引き出せる状態になります。4.7.2未満が影響を受け、4.7.2で修正されました。
原因は、上限の守り方が2か所で崩れていたことです。一つは、支払い前の上限確認と、支払い後の使用額の加算が一続きの処理になっていないことです。確認を通ったあと、加算が行われるまでの間に別の要求も確認を通ってしまいます。分類はCWE-367で、確認してから使うまでの間に状況が変わる種類の問題です。
もう一つは、ミリサトシ(1サトシの1000分の1)単位の端数が、サトシ単位に切り捨てられて計上されることです。端数だけの支払いが使用額に反映されず、積み重なると上限の判定からすり抜けます。
攻撃の流れ
-
1
NWC接続済み
ウォレットに接続を許された悪意あるNWCクライアントが、支払い要求を送れる状態にあります。
-
2
上限判定の隙
上限確認と使用額の加算が一続きでないため、同時に届いた要求がどれも確認を通ります。
-
3
端数の切り捨て
ミリサトシの端数が切り捨てられ、使用額に計上されない支払いが積み重なります。
-
4
上限超過の送金
1日の上限を超える金額が支払われ、ウォレットの資金が減ります。
どう悪用されるか
ネットワーク経由で成立し、攻撃の難しさは低く、ウォレットの持ち主の操作も要りません。前提になるのは、悪意のあるNWCクライアントがプラグインに接続して支払い要求を出せることです。CVSS v3では低い権限が必要とされ、v4では権限不要と評価されており、前提の見方がスコア間で分かれています。
被害は、設定した上限を超えて資金が引き出されることです。上限そのものが回避されるため、少額に絞って運用していた組織ほど、想定より大きい額が動くおそれがあります。
今すぐやること
-
1
Electrumを4.7.2に更新する
修正版の4.7.2へ更新します。入手は公式の配布元から行い、配布物の署名を確認してから導入してください。複数台で使っている場合は、NWCを使っている端末から先に進めます。
electrum version -
2
更新後に版とプラグインの状態を確かめる
版が4.7.2以上になったことと、NWCの接続先と上限額が意図した設定のままであることを確認します。
-
3
不要なNWC接続を外し、上限額を下げる
使っていないクライアントの接続は削除します。残す接続も、業務に必要な最小の上限額に引き下げておくと、万一のときの被害が小さくなります。
-
4
ベンダーの告知を追う
GitHubのセキュリティアドバイザリ(GHSA-q7m2-785w-r585)に、追加の情報や注意が載る可能性があります。更新前に一度目を通してください。
すぐ更新できないとき
すぐに更新できないときは、Nostr Wallet Connectプラグインを無効にし、接続中のNWCクライアントをすべて切り離します。NWCを使い続ける必要がある場合は、ウォレットに置く資金を支払いに必要な額まで減らし、被害の上限を物理的に小さくしてください。
背景
Electrumは、ビットコインを扱うデスクトップ向けの代表的なウォレットの一つです。Nostr Wallet Connectは、外部のアプリがNostrの経路を通じてウォレットに支払い要求を出せるようにする仕組みで、1日の上限額を設ければ、接続先に任せる金額を絞れます。今回の脆弱性は、その上限を守る部分に穴があったものです。
上限が最後の防波堤になる設計では、上限の判定が一続きの処理で行われていないと、同時に届いた要求がすべて通ってしまう余地が生まれます。CWE-367が示す確認と使用のずれは、残高や利用枠を扱う機能に起こりやすい型です。Electrumの場合は、さらに金額の単位変換で端数が落ちる点も重なっていました。
よくある質問
Q.CVSS v3とv4で、なぜ4.3と9.3にこれだけ差があるのですか。
Q.すでに上限を超えた支払いが行われていないか、どう調べればよいですか。
まだ分かっていないこと
- 実際の攻撃で悪用された事例があるかどうかは、確認できていません。ベンダーの告知や、各種の脆弱性情報の更新を待つ必要があります。
- Nostr Wallet Connectプラグインが標準で有効かどうかは、公表されていません。使っている環境で、手元の設定を確かめるのが確実です。
- CVSS v3とv4で評価が分かれた理由についての、ベンダーの見解は示されていません。
この記事は、取得元の公開情報をもとに生成 AI で作成しています。誤りを含むことがあります。対応を決める前に、下の原文と参照先を確認してください。
影響パッケージ
| 種類 | パッケージ | 影響を受ける版 | 直った版 |
|---|---|---|---|
| spesmilo | electrum |
4.7.2 未満 |
4.7.2 |
原文の説明 取得元が公開している説明をそのまま載せています (多くは英語)。
Electrum before 4.7.2 contains a spending limit bypass vulnerability in the Nostr Wallet Connect plugin that allows malicious NWC clients to exceed daily_limit_sat by exploiting non-atomic budget checks and millisatoshi truncation. Attackers can send concurrent pay_invoice requests that pass budget_allows_spend() before add_to_budget() runs, or repeatedly pay msat amounts that are floored to whole satoshis, to drain funds beyond the limit.
出典: CVE.org (CVE Program・cvelistV5) NVD GitHub Advisory