ノンカストディアル · 読み取り専用

EIP-7702攻撃の解説

EthereumのPectraアップグレードにより、通常のウォレットが一時的にスマートコントラクトのように振る舞えるようになりました。ドレイナーはすぐにそれを、従来の承認チェックでは見えない新たなワン署名型のエクスプロイトへと変えました。

ウォレットを無料でスキャン Telegramで24時間365日監視

公開アドレスだけ。ウォレット接続なし。署名も不要。

EIP-7702が実際に行うこと

EIP-7702は、通常のウォレット(EOA)が「認可(authorization)」に署名して、その実行を別のアドレスにあるコードへ委任できるようにするものです。委任が有効な間、そのウォレットはスマートコントラクトのようなアカウントになります。本来は、新しいアドレスに移らずにアカウント抽象化の正当なアップグレード、トランザクションのバッチ処理やガス代の肩代わりを行うためのものです。

ドレイナーはどう認可を悪用するのか

フィッシングページは、この同じ署名を受け取り、アップグレード、あるいは「アカウント認証」の手順のように見せかけます。署名すると、あなたのウォレットの実行は攻撃者のコントラクトへ委任されます。トークンごとに個別の承認へ署名する必要はありません、委任されたコードがあなたのアカウントとして振る舞い、そこにあるものを何でも動かせるのです。

なぜ従来の防御は見逃すのか

承認スキャナーは、トークンのアローワンスストレージに触れるapprove()やPermitの呼び出しを監視します。7702の認可はそのどちらも行わないため、後から承認を取り消しても何も変わりません。chainId 0で署名された委任は、すべてのチェーンで同時に有効です、これは、単一の正当なアプリのためではなく、大量の資金流出を狙って作られた委任の特徴です。

Guardianはどう署名前に捉えるのか

VeriqlのGuardianは、保留中のリクエスト内のあらゆるauthorizationListをデコードし、chainId 0(全チェーン対象)の委任をドレイナーの特徴としてフラグを立て、宛先コントラクトのコードが何をするかにかかわらず、あなたが署名する前に全画面のSTOPを表示します。Pectra以降、既知のアプリ以外で観測された7702委任の大多数は悪意あるものだったため、想定外の委任プロンプトはすべて停止のサインとみなしましょう。

よくある質問

トークン承認を取り消せば、悪意ある7702委任を元に戻せますか?

いいえ。委任はアローワンスストレージに触れないため、そこには取り消すものが何もありません。元に戻すには、同じウォレットから、委任を何にも向けない新しい認可に署名する必要があります、ウォレットが完全に侵害されている場合は必ずしも現実的ではないため、残った資産を新しいウォレットへ移すのがより安全な既定策です。

EIP-7702そのものは危険ですか?

いいえ:これは正当なEthereumのアップグレードです。リスクは他のあらゆるドレイナーの手口とまったく同じで、他人のコントラクトのために何かへ署名するよう騙されることです。署名がより新しいというだけで、当初はそれを監視しているツールが少なかったのです。

関連記事