承認フィッシングとは何でしょうか。秘密鍵を盗まずに資産を移す盗難手法です。攻撃者は公式そっくりのサイト(しばしば「期間限定エアドロップ」を謳う)を立て、ウォレットを接続させ取引に署名させます。「エアドロップを受け取る」つもりが、実際に署名するのは「この契約にトークンを無制限に使わせる」または「全NFTを移す」承認です。承認が有効になると、相手はあなたの知らないうちに資産を抜き取れます。その間、秘密鍵と助記詞は一度も漏れていません。
鍵が安全でもなぜやられるのでしょうか。盗難が「鍵」の層ではなく「署名」の層で起きるからです。オンチェーンのあらゆる操作は秘密鍵の署名による承認が必要ですが、ウォレットは通常、鍵自体を渡さず、ローカルで命令に署名して送ります。問題はその命令の中身です。無害な転送かもしれないし、危険な無制限承認かもしれません。攻撃者は鍵を必要とせず、危険な命令への「署名に同意」させるだけで十分です。だから鍵を守るのは基本にすぎず、すべての署名を理解することが本当の防衛線なのです。
署名が安全かどうかどう見分けるのでしょうか。3つを確認します。第一に種類:単なる「転送」か「承認」(approve / setApprovalForAll)か。承認は特に注意が必要です。第二に金額:承認される数量は具体的で妥当な数字か、それとも「無制限」か。無制限承認は最大の危険信号です。第三に対象:承認する契約アドレスに見覚えがあるか。実際に使っている正規のプロトコルか。このどれか一つでも不明瞭または違和感があれば、キャンセルしましょう。よく見るための10秒は、後で取り戻せない損失に勝ります。
防御チェックリスト、5つを実践しましょう。1:署名前に必ず内容を読み、「転送」と「承認」を区別し、無制限承認を見たらまずキャンセル。2:正規のエアドロップは承認署名を必要とせず、助記詞も求めないことを常に覚えておく。3:承認管理ツールで古い・疑わしい承認を定期的に確認し取り消す。4:大口資産はコールドウォレットに置き、ハードウェアウォレットのクリア署名でデバイス上で二重確認する。5:日常のホットウォレットには少額だけを置き、対話用ウォレットと大金保管用ウォレットを分ける。この5つを反射的にすれば、オンチェーンの主流の盗難手口を避けられます。