アドレスポイズニング:0値送金がスワップ履歴に紛れ込む仕組み
イーサリアムの20ブロックで、USDT送金ログの25%が0値だった。署名も鍵も不要で、次にコピーする受取・返金アドレスを狙う。
2026年11月7日、イーサリアムの連続20ブロック(26,363,482–26,363,501)からUSDTのTransferログをすべて取得した。2,346件のうち587件が0値で、この約4分間の同トークン送金の25.0%に当たる。多くはバッチ取引で届いたが、一つは違った。0x8c6ff6…91e1から0x8c6f58…91e1への0値送金で、2つのアドレスは先頭4文字と末尾4文字の16進が完全に一致する。これがアドレスポイズニングだ。鍵は盗まれず、コントラクトは承認されず、署名も求められない。攻撃者が買ったのは受取人の履歴の1行だけで、次のコピー&ペーストが間違ったアドレスを選ぶことに賭けている。 (XMR→USDT 出口ルート)
仕組み。 攻撃者はまず、対象アドレスの先頭と末尾に一致するアドレスを作る。EVMアドレスは20バイト、40個の16進文字で表示される。先頭k文字と末尾k文字を固定しても中央は自由だ。バニティ検索ではk+k文字の一致に約16^(2k)回の試行が必要になる。3+3なら1,670万回でノートPCでも数分、4+4なら43億回でGPU群なら可能だが無料ではない。次に攻撃者は偽アドレスから対象へ0 USDT(または0.000001)を送る。直接でもバッチコントラクト経由でもよい。取引は有効で、ガスを少し払うだけで、攻撃者のアドレスが対象の履歴に書き込まれる。ウォレットとエクスプローラーは先頭と末尾の数文字しか表示しないので、偽物は一見正しく見える。 (XMR→USDT 出口ルート)
実測が言えること、言えないこと。 別の20ブロック区間では0値の割合は14.6%(2,287件中333件)、同時期のUSDC区間は19.0%(1,638件中311件)だった。割合はスパムの波で動く。0値送金は安いノイズだ。最初の区間のバッチ取引1件は、4つのトークンコントラクトに116件の0値Transferログを出し、1,767,530ガス、46.5 gweiを払った。0.0000822 ETH、14:10 UTCのETH 2,243ドルで約0.18ドル、1ログ当たり約0.0016ドルだ。多くの0値送金はエアドロップのゴミかインデクサーの小細工で、ポイズニングの信号は金額ではなくアドレスのペアにある。
なぜ少なくとも今回のサンプルではイーサリアム型なのか。 TRONの連続60ブロック(87,795,702–87,795,761)には27,423取引、5,514回のTRC20 transfer呼び出しがあり、0値は1件もなかった。残高のあるアドレスからUSDT-TRC20コントラクト(TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t)のtransfer(0)をシミュレートすると63,999エネルギーを使い、ネットワークの100 sun/エネルギーでは6.3999 TRX、TRX 0.3196ドルで約2.04ドル。イーサリアムのバッチは1ログ0.0016ドルで、約1,300倍安い。このコスト差は、今回測ったような0値バルクスパムがイーサリアム側で現れる一つの説明になる。TRONが安全という意味ではない。サンプルは約3分で、偽TRC20コントラクトや別の送金方法ならアドレスを植えられる。 (XMR→USDT 出口ルート)
スワップ欄では何を意味するか。 スワップでは受取アドレスと返金アドレスを自分で指定し、サイトが入金アドレスを発行する。当サイトの入金アドレスは注文ごとに生成され、注文後にはじめて現れるので、事前にポイズンできない。受取と返金は違う。自分のウォレット、アドレス帳、履歴から来る。偽アドレスを受取欄に貼れば、スワップの出金は攻撃者へ。返金欄に貼れば、失敗注文の返金がそこへ行く。返金欄は急いで埋められ、前の注文ページからコピーされることが多い——まさにポイズニングが頼る習慣だ。Moneroの長いbase58アドレスも、ウォレットが短縮表示するなら役に立たない。規則は同じだ。
実際に効く5つの確認。 1)受取・返金アドレスは取引履歴、エクスプローラー、チャットからコピーしない。ウォレットの受取画面を開くか、自分のウォレットのQRを読む。2)文字列全体を比較する。先頭と末尾4文字ではない——中央こそ偽物が違う場所だ。ハードウェアウォレットではデバイス画面で全体を読む。3)よく使うコイン/ネットワークごとにアドレス帳の項目を作り、ラベルを付ける。保存済みの項目は0値送金では書き換えられない。4)ネットワークを確認する。EVMアドレスはイーサリアム、BSC、Arbitrum、Baseで同じ形をしており、イーサリアムのポイズンアドレスをBSCの受取欄に貼れてしまう。5)大口は少額の別注文から。大口注文への分割入金は部分支払いと解釈されうるので、サービスが明記していない限り入金を分割しない。
サイトにできること、できないこと。 注文フォームは5項目だけで、シードフレーズも署名も求めない。受取アドレスは注文作成時に固定され、注文ページから後で変更できない。これで承認フィッシングは消えるが、コピー&ペーストのリスクは消えない。アドレスは入力した文字列そのものだ。注文ページには入金アドレスと金額が表示され、返金アドレスは注文に保存される。ウォレットに0値トークンが現れたら、操作しない、アドレスをコピーしない、可能なら非表示にする。取り消す承認はない——承認などしていない。0値送金は資金を動かせず、アドレスの広告しかできない。
チェックリストと執筆時点の数字。 送金前:文字列全体の比較、ネットワーク確認、アドレス帳、ハードウェア画面、大口なら別の小口注文。0の行は支払いでも残高でもなく、広告だ。執筆時点(2026年11月7日14:23 UTC)、100 USDT-TRC20は0.1434147 XMR、1,000は1.613784 XMR(2ルート、150bps優位)、1 XMRは606.72 USDT(2ルート、201bps)、0.01 BTCは1.224825 XMR(2ルート、101bps)。カタログは438資産・65ネットワーク、うち6種は追加IDが必要。数字は動く、ページのライブ見積りが正だ。 (XMR→USDT 出口ルート)