コピペで68億円が消えた|アドレスポイズニングの構造と対策
取引履歴からアドレスをコピーして送金したことはありますか?
「毎回同じ宛先に送るのだから、履歴から選べば楽だし安全だ」——そう考えるのは自然な判断に思えます。しかし2024年5月、まさにその「楽で自然な行動」が約6800万ドルを一瞬で消し去りました。確認画面でアドレスの数文字を見た。一致していた。それでも資金は永遠に戻りませんでした。
履歴の中に紛れ込んでいた
この事件で被害を受けた投資家は、普段どおりウォレットの取引履歴からアドレスをコピーして送金しました。原因は「アドレスポイズニング」と呼ばれる攻撃手法です。
攻撃者はまず、正規アドレスと先頭4〜6文字・末尾4〜6文字が完全に一致する偽アドレスを生成します。そのアドレスから被害者のウォレットに少額を送りつけ、取引履歴の中に「正規アドレスに酷似したもの」を紛れ込ませる。あとは次の大口送金を待つだけです。
被害者が取引履歴から選んだのは、攻撃者が仕掛けておいた偽物でした。
人間の「確認」が持つ構造的な限界
ビットコインのアドレスは34〜62文字の英数字で構成されています。全文字を毎回目視確認する人間はほぼいません。ほとんどのウォレットアプリは表示スペースの都合上、先頭数文字と末尾数文字だけを見せる設計になっています。
攻撃者はこの「人間の認知的省略」を正確に突いています。膨大な計算リソースを投じて部分一致するアドレスを生成する技術は確立されており、専用ツールで自動化されています。被害者が「確認した」という行動をとっていても、見ていた情報が最初から操作されていれば確認は意味をなしません。
ブロックチェーンの不可逆性が攻撃を完成させる
クレジットカードの不正利用であれば、銀行に申告して取り消しを求めることができます。しかしビットコインの送金は、ブロックに取り込まれた瞬間に誰も止められない。運営会社もなく、管理者もなく、サポートセンターもない。
セルフカストディの強みでもある「不可逆性」が、攻撃が成立した後には最大の弱点になります。6800万ドルがブロックに刻まれたとき、その事実を変える手段は地球上のどこにも存在しませんでした。
この手口は取引所出金時も同様に機能する
「自分はセルフカストディをしていないから関係ない」と思うのは危険です。取引所からハードウォレットに出金するとき、あなたはどこからアドレスをコピーしていますか?
ハードウォレットの画面を見ながら1文字ずつ打ち込む人は少数派でしょう。多くの場合、過去の送金履歴か、どこかにメモしたアドレスをコピーして貼り付けます。そのメモが保存された時点以降に偽アドレスが混入していれば、同じ結果を招きます。セルフカストディ同士の送金でも、アドレスを扱う場面はすべて攻撃対象になります。
唯一の防衛策は「全文字確認」だけ
残念ながら、この攻撃に対するソフトウェア的な完全解はまだ存在しません。ハードウォレットを使っていても、マルチシグ構成でも、最終的にアドレスを確認するのが人間である以上、全文字を目視するしかありません。
具体的には以下を習慣にすることです。
- 送金前にハードウォレットの物理画面に表示されたアドレスと送信先アドレスを1文字ずつ照合する
- 取引履歴からのコピペは行わない。送金のたびに受取人から最新アドレスを取得する
- ウォレットアプリが先頭・末尾だけを表示している場合は、必ずフルアドレスを展開して確認する
これは面倒に感じるかもしれません。しかし6800万ドルを失った投資家も、確認を怠ったわけではありませんでした。確認の方法が間違っていたのです。
「ちゃんと確認した」では守れない
セキュリティの世界では、攻撃者は常に人間の「安全確認の習慣」の中にある穴を狙います。アドレスポイズニングが厄介なのは、被害者が「確認した」という自己認識を持ったまま被害に遭う点です。
取引履歴は便利なものです。しかしそれを「信頼できるアドレス帳」として使い始めた瞬間に、攻撃の入り口が開きます。一度習慣化した行動は無意識になる。無意識になった行動は確認できない。これが攻撃者の狙う最終状態です。
次にビットコインを送金するとき、受取アドレスを全文字確認してください。1回の確認習慣が、取り返しのつかない損失を防ぐ唯一の盾です。
※本記事は一般的な情報提供を目的としており、投資助言ではありません。
この記事が参考になったら、セルフカストディの具体的な始め方もチェックしてみてください。
LINE登録でセルフカストディの始め方を学ぶ 正しい手順を無料でお届けします