Web3セキュリティ高

トークンの無制限承認が危険な理由

無制限承認を行うと、利用者アドレスは毎回新しい許可を求めることなく、承認対象トークンを非常に大きな上限まで移動できます。

トークンの無制限承認が危険な理由を判断するフロー

無制限承認を行うと、利用者アドレスは毎回新しい許可を求めることなく、承認対象トークンを非常に大きな上限まで移動できます。その利用者アドレスが悪意を持つ、または侵害された場合、承認を取り消すまで、そのウォレットにある現在と将来の対象トークン残高が危険にさらされます。

順序を守って承認する#

  1. アプリ名だけでなく、利用者アドレスを確認します。 続行する前に、正確なドメイン、コントラクトアドレス、ネットワーク、権限を独立した公式情報と照合してください。
  1. 画面で指定できる場合は、必要な金額だけを承認します。 資産や署名権限を渡す前に金額を確認し、承認後の状態もオンチェーンで検証してください。
  1. 残高を限定した取引用ウォレットを使います。 前提が間違っていても重大な損失にならない金額だけを入れてください。
  1. 一度限りの操作が終わったら、利用許可を確認します。 正確なアドレス、ネットワーク、許可額を公式情報と照合してください。
  1. 利用しているすべてのチェーンで、古い承認を取り消します。 対象を確認してから実行し、取り消しがオンチェーンで確定したことを検証してください。

最も重要な考え方#

無制限承認の利便性は、一度のスワップが終わった後も残ります。利用者が承認を忘れている間に、アプリがアップグレードされる、管理者鍵が漏れる、フロントエンドでインシデントが起きる可能性があります。

承認前に確認できる内容と、承認後に監視するしかない内容を分けてください。後者については、許可額、保有残高、有効期間に厳しい上限を設けます。

中止または方針変更が必要な状況#

利便性と最大損失額を比較してください。金額を限定した承認を繰り返すとガス代は増えますが、露出する金額に上限を設け、利用者アドレスを再確認する機会も増えます。

注意すべき失敗例#

  • 残高がゼロなら承認も消えると思う。 承認はオンチェーンに残り、後から同じトークンを受け取ると再びリスクになります。
  • オンチェーンで取り消さず、サイトとの接続だけを解除する。 接続解除はローカルセッションを消すだけで、利用許可は残ります。
  • 検証していないルーターへ最大額を承認する。 表示ラベルが正しく見えても送付先が異なる可能性があり、確定した承認は悪用されるおそれがあります。
  • 偽のツールで一括取り消しへ署名する。 取り消しに見せかけた悪意ある操作が混ざり、被害範囲を広げる可能性があります。

保存すべき証拠#

画面に成功メッセージが表示されたかどうかだけで結果を判断してはいけません。ページを閉じた後でも確認できる証拠を使ってください。

確認項目保存する証拠中止条件
アプリ名だけでなく利用者アドレスを確認する公式資料と一致する正確なURLまたはコントラクトアドレス残高ゼロなら承認も消えると思っている
画面で指定できる場合、必要な金額だけを承認する取引IDと、それに対応するエクスプローラー記録オンチェーンで取り消さず接続解除だけで済ませようとしている
残高を限定した取引用ウォレットを使う取引IDと、それに対応するエクスプローラーまたは口座記録検証していないルーターへ最大額を承認しようとしている

取引ハッシュ、公式の問い合わせ番号、日付入りスクリーンショットが承認履歴の記録に役立つ場合は保存してください。ただし、シードフレーズ、秘密鍵、認証コードは含めないでください。

よくある質問#

無制限承認で、ほかのトークンも移動できますか?

通常、指定したトークンコントラクトと利用者アドレスにだけ適用されます。ただし、別の権限が付与されている可能性はあります。

承認は自動的に期限切れになりますか?

標準的なERC-20の利用許可は、トークンやPermitの仕組みに有効期限が実装されていない限り、通常は期限切れになりません。

Permit2は常に無制限承認ですか?

いいえ。Permitの仕組みは金額と有効期限を限定できますが、利用者は実際の署名内容を読む必要があります。

関連ガイド#

参考資料#

リスクに関する注意: 暗号資産の操作は取り消せない場合があります。シードフレーズ、秘密鍵、パスワード、認証コードは決して共有せず、ドメインとウォレットの確認画面をそれぞれ独立して検証してください。

編集方針

本記事は教育目的で、信頼できる情報源に基づいています。セキュリティ対策、取引所のルール、法的要件は変わるため、重要な操作の前に公式情報を確認してください。