人気が高まっている新しいタイプのフィッシング手法を発見しました。フィッシングコントラクト(セキュリティベンダーがラベル付けする可能性のあるもの)を展開する代わりに、詐欺師は正規のコントラクトを悪用して攻撃を実行しています。
このブログでは、詐欺師がどのように使用するかを示し、フィッシングを回避するための提案を行います。
概要
通常、詐欺師は被害者からトークンを盗むためにフィッシングコントラクトを展開します。具体的には、彼らのフィッシングコントラクトには、疑わしいpayable関数とmulti-call関数が含まれています。フィッシングウェブサイトを訪れたユーザーは、これらのコントラクトにETHを送金するか、トークンを承認します。しかし、セキュリティベンダーやウォレットは、これらのフィッシングコントラクトを検出およびフラグ付けでき、それらへのトランザクションを禁止につながる可能性があります。
しかし、詐欺師が評判の良いWeb3プロジェクトによって展開された正規のコントラクトを、フィッシング目的で悪用していることを発見しました。そして、これらの正規のコントラクトはフィッシングとしてラベル付けおよびブロックすることはできません。これらは新しいコントラクトを展開せずに、既存の正規のコントラクトをフィッシングのために再利用するため、Web3フィッシングウェブサイトで「ROP」と名付けました。これは、従来のソフトウェアセキュリティ分野におけるROP攻撃(またはコード再利用攻撃)に似ています。
具体的には、Return-oriented programming(ROP)は、攻撃者が既存のライブラリ内のコードスニペットを利用できるコンピューターセキュリティエクスプロイト技術です。Web3フィッシングでは、「ROP」は、詐欺目的で正規のプロジェクトによって展開されたコントラクトを活用することを指します。この現象は、Twitterアカウント@MevRefundによって最初に報告されました。
従来のWeb3フィッシングコントラクトの仕組み
Web3フィッシングの初期段階では、詐欺師はExternally Owned Account(EOA)を設定し、ユーザーをこのアカウントにETHを送金または他のトークンを承認するように誘導します。しかし、この動作は現在、ウォレットによって容易に検出され、ユーザーによって発見されています。その結果、詐欺師はフィッシングコントラクトの展開に移行しました。ETHフィッシングの場合、詐欺師は通常、「Claim」や「Security Update」のような疑わしい名前のpayable関数を採用します。これらの魅力的な関数名は、ユーザーにフィッシングトランザクションに署名させ、ETHを送金させます。
ERC20およびERC721トークンフィッシングの場合、詐欺師はユーザーをフィッシングコントラクトにトークンを承認するように誘導します。その後、フィッシングコントラクトのMulticall関数が呼び出され、ユーザーのトークンが転送されます。特に、Multicall関数は、単一の呼び出しで複数の特定の内部トランザクションを実行するように設計されています。NFTゼロオーダー購入、ERC20承認フィッシング、またはERC20許可フィッシングなど、さまざまなフィッシングスキームは、異なるフィッシングトランザクションを使用します。これにより、トランザクションパラメータを設定し、Multicallを利用して、対応するフィッシングスキームに基づいて特定のフィッシングトランザクションを開始できます。
現在、多くの人気のあるWeb3ウォレットは、フィッシングアカウントのブラックリストを構築しています。これらは積極的にユーザーに通知し、これらの不正なアカウントへのトランザクションを防ぎます。
Web3フィッシングにおける「ROP」
フィッシングアカウントのブラックリストメカニズムを回避するために、詐欺師はブラックリストに追加できないアカウントに目を向けます。具体的には、評判の良いプロジェクトによって展開されたMulticallコントラクトを悪用し、複雑なトランザクションを実行するためにその機能を利用します。これらの正規のコントラクトはフィッシングアカウントとしてラベル付けできないため、詐欺師はユーザーにこれらのコントラクトにトークンを承認するように促します。これらの正規のコントラクトは誰でも呼び出すことができるため(アクセス制御なし)、詐欺師はそれらをすぐに悪用してユーザーのトークンを転送できます。次の図は、プロセス全体を示しています。

例えば、有名なフィッシング犯罪シンジケートであるAngel Drainerは、Uniswap V3: Multicall 2を利用して89件のフィッシングトランザクションを実行しました。正規のマルチコールコントラクトは、資産を保持しないことを意図していたことに注意してください。そのため、その設計では誰でも呼び出すことは問題ありません。しかし、詐欺師はこのコントラクトを悪用して、フィッシングコントラクトを展開せずにフィッシング攻撃を実行しました。
提案
トランザクションを実行する前に、特に承認トランザクションの詳細を慎重に確認し、注意を払うことをお勧めします。常に承認を確認し、疑わしいものはすべて取り消してください。



