Web3フィッシング詐欺における「ROP」の使われ方:詳細分析

このブログでは、新しいタイプのWeb3フィッシングについてご紹介し、フィッシング被害に遭わないための対策について提案します。

Web3フィッシング詐欺における「ROP」の使われ方:詳細分析

新しいフィッシング手法が人気を集めていることがわかりました。セキュリティベンダーが「フィッシングコントラクト」とラベル付けするようなものを展開する代わりに、詐欺師は正規のコントラクトを悪用して攻撃を実行しています。

このブログでは、詐欺師がどのようにそれを行い、フィッシングに遭わないための対策について説明します。

概要

通常、詐欺師は被害者からトークンを盗むためにフィッシングコントラクトを展開します。具体的には、フィッシングコントラクトには不審なpayable関数とマルチコール関数が含まれています。フィッシングウェブサイトを訪問したユーザーは、これらのコントラクトにETHを送金したり、トークンを承認したりします。しかし、セキュリティベンダーやウォレットはこれらのフィッシングコントラクトを検出し、フラグを立てることができるため、それらへのトランザクションは禁止されます。

しかし、私たちは詐欺師が評判の良いWeb3プロジェクトによって展開された正規のコントラクトをフィッシング目的で悪用していることを発見しました。そして、これらの正規のコントラクトはフィッシングとしてラベル付けされ、ブロックされることはありません。これは、新しいコントラクトを展開せずに、既存の正規のコントラクトをフィッシングに再利用するため、Web3フィッシングウェブサイトで「ROP」と名付けました。これは、従来のソフトウェアセキュリティ分野におけるROP攻撃(またはコード再利用攻撃)に似ています。

具体的には、Return-oriented programming (ROP) は、攻撃者が既存のライブラリのコードスニペットを利用できるようにするコンピュータセキュリティエクスプロイト技術です。Web3フィッシングにおいて、「ROP」は、正規のプロジェクトによって展開されたコントラクトを不正な目的で活用することを指します。この現象は、Twitterアカウント@MevRefundが投稿で最初に報告しました。

従来のWeb3フィッシングコントラクトの仕組み

Web3フィッシングの初期段階では、詐欺師はEOA(Externally Owned Account)を設定し、ユーザーをこのアカウントにETHを送金したり、他のトークンを承認させたりするように誘い込みます。しかし、この動作は現在、ウォレットによって容易に検出され、ユーザーによって発見されます。その結果、詐欺師はフィッシングコントラクトの展開に転じました。ETHフィッシングの場合、詐欺師は通常、「Claim」や「Security Update」のような疑わしい名前のpayable関数を使用します。これらの魅力的な関数名は、ユーザーにフィッシングトランザクションに署名させ、ETHを送金させます。

ERC20およびERC721トークンフィッシングの場合、詐欺師はユーザーをフィッシングコントラクトにトークンを承認するように誘い込みます。その後、フィッシングコントラクトのMulticall関数が呼び出され、ユーザーのトークンが送金されます。特に、Multicall関数は、単一の呼び出しで複数の特定の内部トランザクションを実行するように設計されています。NFTゼロオーダー購入、ERC20承認フィッシング、またはERC20パーミットフィッシングなど、さまざまなフィッシングスキームは、さまざまなフィッシングトランザクションを使用します。これにより、トランザクションパラメータを設定し、対応するフィッシングスキームに基づいた特定のフィッシングトランザクションを起動するためにMulticallを活用できます。

現在、多くの人気のあるWeb3ウォレットには、フィッシングアカウントのブラックリストが構築されています。それらはユーザーに積極的に通知し、これらの不正なアカウントへのトランザクションを防ぎます。

Web3フィッシングにおける「ROP」

フィッシングアカウントのブラックリストメカニズムを回避するために、詐欺師はブラックリストに追加できないアカウントに目を向けます。具体的には、評判の良いプロジェクトによって展開されたMulticallコントラクトを悪用し、複雑なトランザクションを実行するためにその機能を利用します。これらの正規のコントラクトはフィッシングアカウントとしてラベル付けできないため、詐欺師はユーザーにこれらのコントラクトにトークンを承認するように促します。これらの正規のコントラクトは誰でも呼び出すことができるため(アクセス制御なし)、詐欺師はそれらを即座に悪用してユーザーのトークンを転送できます。以下の図は、プロセス全体を示しています。

Figure 1: 「ROP」のプロセス全体

例えば、有名なフィッシング犯罪シンジケートであるAngel Drainerは、Uniswap V3: Multicall 2を悪用して89件のフィッシングトランザクションを実行しました。正規のマルチコールコントラクトは、資産を保持しないことを意図していたことに注意してください。したがって、その設計上、誰によってでも呼び出されても問題ありません。しかし、詐欺師はこのコントラクトを悪用して、フィッシングコントラクトを展開することなくフィッシング攻撃を実行しました。

提案

ユーザーは注意を払い、特に承認トランザクションの前に、あらゆるアクションの詳細を注意深く確認することを推奨します。常に承認を確認し、疑わしいものはすべて取り消してください。

Sign up for the latest updates