#electrum修复4.8.3前版本高危漏洞
62個の署名はすべて検証に通ったのに、送金先アドレスはあなたのものではない
📣 盘面异动群里喊
老舗のビットコインウォレットElectrumは10月24日、セキュリティアップデートとなるバージョン4.8.3を公開しました。公式発表ではこの脆弱性を「High」と評価し、4.8.3より前の全バージョンに影響するとしています。CVE番号は割り当てられていませんが、発表には重い一文がありました。実環境ですでにこの手口を使っているサーバーが確認されています 🦖
普段、ブロックチェーン全体をダウンロードせず、残高や取引について接続先のサーバーを信頼する軽量ウォレットを使っていませんか。公式ドキュメントによると、これは設計上のトレードオフです。問題は、それが攻撃に利用されたことです ⚠️
攻撃者は、あなたが接続しているサーバーを支配します。ウォレットで取引をブロードキャストすると、本物の取引はサーバーに握りつぶされ、mempoolにすら入りません。その後、サーバーは偽の取引をウォレットに送り込みます。その取引は、先ほどの取引と入力、バージョン、ロックタイムが完全に同じで、31個の入力の署名スクリプトも1バイトずつ一致します。唯一の違いは、出力先のアドレスが攻撃者のものに差し替えられていること。そしてこの偽アドレスは、末尾4文字があなたの本当の送金先アドレスと完全に一致するよう、何度も計算を繰り返して作られています。
偽の取引の署名はすべて無効ですが、軽量ウォレットはスクリプト検証を行わないため、それを見抜けません。すると取引履歴から本物の取引が消え、未承認の偽取引だけが残ります。金額は、あなたが支払おうとしていた額に見えます。詐欺師は手数料もほぼゼロに設定し、送金が止まっていることに気づいたあなたが、手動で手数料を引き上げるのを待ちます。
手数料を上げる操作をすると、ウォレットが署名するのはその偽の取引です。あなたは自分の手で、攻撃者にコインを送る取引に署名してしまうのです 💥
公式発表には実際に起きた事例が2件記載されています。10月11日、最初のユーザーが非公開で報告しました。そのユーザーは2-of-3の旧式マルチシグを使い、Trezorのハードウェアウォレットを2台使用。入力は31個、出力は1つで、ブロードキャスト前に両方のハードウェアウォレットの画面でアドレスを確認していました。それでも履歴には、見知らぬアドレス宛ての未承認取引が表示されました。10月18日には2人目のユーザーから報告があり、手数料を引き上げた結果、実際に資金を失いました。最初の報告から4.8.3に「要注意」のラベルが付くまでわずか12日、バイナリの公開までは13日でした。
この件で重要なのは、Electrumがコードを書き間違えたことではないと私は思います。誰もが当然だと思っている境界線、つまり「信頼しているサーバー」が、実はあなたの台帳そのものだということです。サーバーが何を見せるかによって、何が起きたかを判断してしまう。今回は、その言葉が実行可能な攻撃手段になっただけです。
修正後の4.8.3でも検証されるのは、自分のウォレットに属する入力だけです。他人から送られてきた取引は、引き続き検証されません。軽量クライアントには完全なコンセンサスエンジンがないためです。公式も、この部分をカバーするには未承認の親取引を再帰的に検証する必要があり、コストが大きすぎると認めています。
今できることは3つ。すぐに4.8.3へアップデートすること。手数料を上げる前に、出力先アドレスと金額を必ず確認すること。そして長期的には、自分でサーバーを運用することです。公式は、自分のサーバーに接続しているユーザーはこの脆弱性の影響を受けないと明言しています。
普段は軽量ウォレットを使っていますか?それとも自分でノードを運用していますか?コメント欄で話しましょう。
アイコンをタップしてライブ配信を見てください
毎日、ビットコインのセキュリティに関する注目トピックをお届けします。ニュースで何が起きたかを見るだけでなく、その背後にある仕組みやチャンスもわかりやすく解説します 👀🚀
62個の署名はすべて検証に通ったのに、送金先アドレスはあなたのものではない
📣 盘面异动群里喊
老舗のビットコインウォレットElectrumは10月24日、セキュリティアップデートとなるバージョン4.8.3を公開しました。公式発表ではこの脆弱性を「High」と評価し、4.8.3より前の全バージョンに影響するとしています。CVE番号は割り当てられていませんが、発表には重い一文がありました。実環境ですでにこの手口を使っているサーバーが確認されています 🦖
普段、ブロックチェーン全体をダウンロードせず、残高や取引について接続先のサーバーを信頼する軽量ウォレットを使っていませんか。公式ドキュメントによると、これは設計上のトレードオフです。問題は、それが攻撃に利用されたことです ⚠️
攻撃者は、あなたが接続しているサーバーを支配します。ウォレットで取引をブロードキャストすると、本物の取引はサーバーに握りつぶされ、mempoolにすら入りません。その後、サーバーは偽の取引をウォレットに送り込みます。その取引は、先ほどの取引と入力、バージョン、ロックタイムが完全に同じで、31個の入力の署名スクリプトも1バイトずつ一致します。唯一の違いは、出力先のアドレスが攻撃者のものに差し替えられていること。そしてこの偽アドレスは、末尾4文字があなたの本当の送金先アドレスと完全に一致するよう、何度も計算を繰り返して作られています。
偽の取引の署名はすべて無効ですが、軽量ウォレットはスクリプト検証を行わないため、それを見抜けません。すると取引履歴から本物の取引が消え、未承認の偽取引だけが残ります。金額は、あなたが支払おうとしていた額に見えます。詐欺師は手数料もほぼゼロに設定し、送金が止まっていることに気づいたあなたが、手動で手数料を引き上げるのを待ちます。
手数料を上げる操作をすると、ウォレットが署名するのはその偽の取引です。あなたは自分の手で、攻撃者にコインを送る取引に署名してしまうのです 💥
公式発表には実際に起きた事例が2件記載されています。10月11日、最初のユーザーが非公開で報告しました。そのユーザーは2-of-3の旧式マルチシグを使い、Trezorのハードウェアウォレットを2台使用。入力は31個、出力は1つで、ブロードキャスト前に両方のハードウェアウォレットの画面でアドレスを確認していました。それでも履歴には、見知らぬアドレス宛ての未承認取引が表示されました。10月18日には2人目のユーザーから報告があり、手数料を引き上げた結果、実際に資金を失いました。最初の報告から4.8.3に「要注意」のラベルが付くまでわずか12日、バイナリの公開までは13日でした。
この件で重要なのは、Electrumがコードを書き間違えたことではないと私は思います。誰もが当然だと思っている境界線、つまり「信頼しているサーバー」が、実はあなたの台帳そのものだということです。サーバーが何を見せるかによって、何が起きたかを判断してしまう。今回は、その言葉が実行可能な攻撃手段になっただけです。
修正後の4.8.3でも検証されるのは、自分のウォレットに属する入力だけです。他人から送られてきた取引は、引き続き検証されません。軽量クライアントには完全なコンセンサスエンジンがないためです。公式も、この部分をカバーするには未承認の親取引を再帰的に検証する必要があり、コストが大きすぎると認めています。
今できることは3つ。すぐに4.8.3へアップデートすること。手数料を上げる前に、出力先アドレスと金額を必ず確認すること。そして長期的には、自分でサーバーを運用することです。公式は、自分のサーバーに接続しているユーザーはこの脆弱性の影響を受けないと明言しています。
普段は軽量ウォレットを使っていますか?それとも自分でノードを運用していますか?コメント欄で話しましょう。
アイコンをタップしてライブ配信を見てください
毎日、ビットコインのセキュリティに関する注目トピックをお届けします。ニュースで何が起きたかを見るだけでなく、その背後にある仕組みやチャンスもわかりやすく解説します 👀🚀