Cointime

Download App
iOS & Android

Uniswap V4 のフック メカニズムのセキュリティ リスクを調査する

Validated Venture

Uniswap v4 は間もなく誰でも利用できるようになると思います。

今回、Uniswap チームは野心的な目標を掲げており、無制限の流動性プールと各取引ペアの動的手数料のサポート、シングルトン設計、ライトニング アカウンティング、フック、ERC1155 トークンのサポートなど、多くの新機能 [1] を導入する予定です。標準。 EIP-1153 によって導入された一時ストレージを活用する Uniswap v4 は、イーサリアム カンクンのアップグレード後にリリースされる予定です。

数多くのイノベーションの中でも、フック機構はその強力な可能性により広く注目を集めています。フック メカニズムは、流動性プールのライフサイクルの特定の時点での特定のコードの実行をサポートし、プールのスケーラビリティと柔軟性を大幅に強化します。ただし、フック機構は諸刃の剣にもなり得ます。 Hook は強力で柔軟性がありますが、安全に使用することも大きな課題です。

フックの複雑さは、必然的に新たな潜在的な攻撃ベクトルをもたらします。したがって、私たちは、コミュニティのセキュリティ開発を促進するために、Hook メカニズムに関連するセキュリティ問題と潜在的なリスクを体系的に紹介する一連の記事を執筆し、これらの洞察が安全な Uniswap v4 Hook の構築に役立つと信じています。この記事シリーズの冒頭として、この記事では Uniswap v4 のフック メカニズムに関連する概念を紹介し、フック メカニズムのセキュリティ リスクの概要を説明します。

1 -Uniswap V4の仕組み

これについて詳しく説明する前に、Uniswap v4 のメカニズムを基本的に理解する必要があります。

公式発表 [1] とホワイトペーパー [2] によると、フック、シングルトン アーキテクチャ、ライトニング アカウンティングは、カスタム流動性プールを実装し、複数のプール間で効率的なルーティングを実現するための 3 つの重要な機能です。 1.1 フックフックとは、流動性プールのライフサイクルのさまざまな段階で実行されるコントラクトを指します。Uniswap チームは、フックを導入することで、誰でもトレードオフの意思決定ができ​​るようにしたいと考えています。このようにして、動的な手数料をネイティブにサポートしたり、オンチェーンキャップ注文を追加したり、時間加重平均マーケットメーカー (TWAMM) を通じて大規模な注文を分散したりすることができます。

現在、8 つのフック コールバックがあり、4 つのグループに分かれています (各グループにはコールバックのペアが含まれます)。

- 初期化前/初期化後

- beforeModifyPosition/afterModifyPosition

- スワップ前/スワップ後

- 寄付前/寄付後

以下は、ホワイトペーパー[2]で紹介されているフック交換のプロセスです。

- スワップ前/スワップ後

- 寄付前/寄付後

以下は、ホワイトペーパー[2]で紹介されているフック交換のプロセスです。

図1: フック交換プロセス

Uniswap チームは、いくつかの例 (TWAMM Hook[3] など) を使って操作方法を紹介し、コミュニティ参加者もいくつかの貢献をしました。公式ドキュメント[4]は、より多くのフックの例を収集する Awesome Uniswap v4 Hooks[5] リポジトリにもリンクしています。

1.2 シングルトン、ライトニング アカウンティングおよびロック メカニズム

シングルトン アーキテクチャとフラッシュ アカウンティングは、コストを削減し効率を確保することでパフォーマンスを向上させるように設計されています。新しいシングルトン コントラクトが導入され、すべての流動性プールが同じスマート コントラクト内に保持されます。このシングルトン設計は、すべてのプールの状態を保存および管理するために PoolManager に依存しています。

Uniswap プロトコルの以前のバージョンでは、流動性の交換や追加などの操作には直接トークン転送が必要でしたが、v4 バージョンではライトニング アカウンティングとロック メカニズムが導入されている点が異なります。

ロック機構は次のように機能します。

1. ロッカー コントラクトは、PoolManager のロックを要求します。

2. PoolManager は、ロッカー コントラクトのアドレスを lockData キューに追加し、lockAcquired コールバックを呼び出します。

3. ロッカー コントラクトは、コールバックでロジックを実行します。実行中に、ロッカー コントラクトとプールとのやり取りにより、通貨の増分がゼロ以外になる場合があります。ただし、実行の終了時には、すべてのデルタがゼロに落ち着く必要があります。さらに、lockData キューが空でない場合、最後のロッカー コントラクトのみが操作を実行できます。

4. PoolManager は、lockData キューのステータスと通貨増分をチェックします。確認後、PoolManager はロッカー契約を削除します。要約すると、ロック メカニズムは同時アクセスを防止し、すべてのトランザクションを確実にクリアできるようにします。ロッカー コントラクトはロックを順番に適用し、lockAcquired コールバックを通じてトランザクションを実行します。対応するフック コールバックは、各プール操作の前後にトリガーされます。最後に、PoolManager はステータスをチェックします。

このアプローチは、即時転送を実行するのではなく、操作が内部ネットバランス (つまりデルタ) を調整することを意味します。変更はすべてプールの内部残高に記録され、実際の転送は操作の終了時に行われます (つまり、ロック)。このプロセスにより、未処理のトークンがないことが保証され、資金の完全性が維持されます。

ロック メカニズムにより、外部所有アカウント (EOA) は PoolManager と直接対話できません。代わりに、対話は契約を通じて行われる必要があります。このコントラクトは中間ロッカーとして機能し、プール操作を実行する前にロックを要求する必要があります。

契約対話の主なシナリオは 2 つあります。

特定のロッカー コントラクトは、公式コード ベースから取得されるか、ユーザーによって展開されます。この場合、対話はルーターを経由すると考えることができます。

特定のロッカー契約とフックが同じ契約に統合されているか、第三者機関によって管理されています。この場合、対話はフックを通じて行われると考えることができます。この場合、フックはロッカー コントラクトの役割を果たし、コールバックの処理を担当します。

2 - 脅威モデル

関連するセキュリティ問題について議論する前に、脅威モデルを特定する必要があります。主に次の 2 つの状況を考慮します。

脅威モデル I: フック自体は無害ですが、脆弱性があります。

脅威モデル II: フックは本質的に悪意があります。

次のセクションでは、これら 2 つの脅威モデルに基づいて潜在的なセキュリティ問題について説明します。

脅威モデル I: フック自体は無害ですが、脆弱性があります。

脅威モデル II: フックは本質的に悪意があります。

次のセクションでは、これら 2 つの脅威モデルに基づいて潜在的なセキュリティ問題について説明します。

2.1 脅威モデル I におけるセキュリティ問題

脅威モデル I は、フック自体に関連する脆弱性に焦点を当てています。この脅威モデルは、開発者とそのフックが無害であることを前提としています。ただし、スマート コントラクトの既存の既知の脆弱性がフックにも現れる可能性があります。たとえば、フックがアップグレード可能なコントラクトとして実装されている場合、OpenZeppelin の UUPSUpgradeable 脆弱性に関連する問題が発生する可能性があります。

上記の要因を考慮して、v4 バージョンに固有の潜在的な脆弱性に焦点を当てることにしました。 Uniswap v4 のフックは、コア プールの操作 (初期化、位置の変更、スワップ、収集など) の前後にカスタム ロジックを実行できるスマート コントラクトです。フックは標準インターフェイスを実装することが期待されていますが、カスタム ロジックを含めることもできます。したがって、ここでの説明は、標準のフック インターフェイスに関係するロジックに限定されます。次に、フックがこれらの標準フック機能をどのように悪用するかなど、考えられる脆弱性の原因を特定しようとします。

具体的には、次の 2 種類のフックに焦点を当てます。

最初のタイプのフックは、ユーザーの資金を保持することです。この場合、攻撃者はこのフックを攻撃して資金を転送し、資産の損失を引き起こす可能性があります。

2 番目のタイプのフックには、ユーザーまたは他のプロトコルが依存する主要なステータス データが保存されます。この場合、攻撃者はクリティカル状態を変更しようとする可能性があります。他のユーザーまたはプロトコルが誤った状態を使用すると、潜在的なリスクが発生する可能性があります。

これら 2 つの範囲外のフックについては説明の範囲外であることに注意してください。この記事の執筆時点ではフックの実際の使用例がないため、Awesome Uniswap v4 Hooks リポジトリから情報を取得します。 Awesome Uniswap v4 Hooks リポジトリ (コミット ハッシュ 3a0a444922f26605ec27a41929f3ced924af6075) を徹底的に調査した結果、いくつかの重大な脆弱性を発見しました。これらの脆弱性は主にフック、PoolManager、外部サードパーティ間の危険な相互作用に起因しており、主にアクセス制御の問題と入力検証の問題の 2 つのカテゴリに分類できます。具体的な調査結果については、以下の表を参照してください。

合計 22 の関連プロジェクトが見つかりました (Uniswap v4 に関連しないプロジェクトを除く)。これらのプロジェクトのうち、8 プロジェクト (36%) が脆弱であると考えられます。脆弱な 8 つのプロジェクトのうち、6 つにアクセス制御の問題があり、2 つは信頼できない外部呼び出しに対して脆弱でした。

2.1.1 アクセス制御の問題

説明のこの部分では、主に、8 つのフック コールバックやロック コールバックなど、v4 のコールバック関数によって引き起こされる可能性のある問題に焦点を当てます。もちろん、検証が必要な状況は他にもありますが、これらの状況は設計によって異なるため、ここでは説明しません。

これらの関数は PoolManager によってのみ呼び出す必要があり、他のアドレス (EOA やコントラクトを含む) によって呼び出すことはできません。たとえば、報酬がプール キーによって分配される場合、対応する関数がどのアカウントでも呼び出せる場合、報酬が誤って請求される可能性があります。

したがって、特にフックはプール自体以外の関係者によって呼び出される可能性があるため、フックに対する強力なアクセス制御メカニズムを確立することが重要です。アクセス権を厳密に管理することで、流動性プールはフックとの不正または悪意のある相互作用のリスクを大幅に軽減できます。

2.1.2 入力確認の質問

Uniswap v4 では、ロック メカニズムにより、ユーザーはファンド プール操作を実行する前にコントラクトを通じてロックを取得する必要があります。これにより、現在対話に参加しているコントラクトが最新のロッカー コントラクトであることが保証されます。それにもかかわらず、攻撃シナリオの可能性は依然として存在します。つまり、一部の脆弱なフック実装における不適切な入力検証による信頼できない外部呼び出しです。

Uniswap v4 では、ロック メカニズムにより、ユーザーはファンド プール操作を実行する前にコントラクトを通じてロックを取得する必要があります。これにより、現在対話に参加しているコントラクトが最新のロッカー コントラクトであることが保証されます。それにもかかわらず、攻撃シナリオの可能性は依然として存在します。つまり、一部の脆弱なフック実装における不適切な入力検証による信頼できない外部呼び出しです。

まず、フックはユーザーが対話しようとしているプールを検証しません。これは、偽のトークンを含み、有害なロジックを実行する悪意のあるプールである可能性があります。

第 2 に、一部のキー フック関数では任意の外部呼び出しが可能です。

信頼できない外部呼び出しは、再入攻撃として知られるものを含むさまざまな種類の攻撃につながる可能性があるため、非常に危険です。これらの脆弱なフックを攻撃するために、攻撃者は自分の偽のトークン用に悪意のある資金プールを登録し、そのフックを呼び出して資金プール内で操作を実行することができます。プールと対話するときに、悪意のあるトークン ロジックが制御フローをハイジャックして、望ましくない動作を実行します。

2.1.3 脅威モデルⅠに対する予防策

このようなフックに関連するセキュリティ問題を回避するには、機密性の高い外部/パブリック関数への必要なアクセス制御を適切に実施し、入力パラメータを検証することにより、対話を認証することが重要です。さらに、再入保護は、標準ロジック フローでフックが繰り返し実行されないようにするのに役立ちます。適切なセキュリティ保護手段を実装することで、プールはそのような脅威に関連するリスクを軽減できます。

2.2 脅威モデル II のセキュリティ問題

この脅威モデルでは、開発者とそのフックが悪意のあるものであると仮定します。範囲が広いため、v4 バージョンに関連するセキュリティ問題のみに焦点を当てます。したがって、提供されたフックがユーザーによって譲渡または認可された暗号資産を扱えるかどうかが鍵となります。フックにアクセスする方法によってフックに付与される権限が決まるため、フックを 2 つのカテゴリに分類します。

マネージドフック: フックはエントリポイントではありません。ユーザーはルーター (おそらく Uniswap によって提供される) を介してフックと対話する必要があります。

スタンドアロン フック: フックは、ユーザーがフックと直接対話できるようにするエントリ ポイントです。

図 2: 悪意のあるフックの例

2.2.1 マネージドフック

この場合、ユーザーの暗号資産 (ネイティブ トークンやその他のトークンを含む) がルーターに転送または承認されます。 PoolManager は残高チェックを実行するため、悪意のあるフックがこれらの資産を直接盗むのは簡単ではありません。ただし、潜在的な攻撃対象領域は依然として存在します。たとえば、v4 バージョンの経費管理メカニズムは、攻撃者によってフックを通じて操作される可能性があります。

2.2.2 独立したフック フックがエントリ ポイントとして使用される場合、状況はさらに複雑になります。

この場合、ユーザーがフックを直接操作できるため、フックの機能がさらに強化されます。理論的には、フックはこのインタラクションで必要なことを何でも行うことができます。 v4 バージョンでは、コード ロジックの検証が非常に重要です。主な問題は、コードのロジックを操作できるかどうかです。フックがアップグレード可能である場合、これは、一見安全なフックがアップグレード後に悪意のあるものになる可能性があり、重大なリスクを引き起こす可能性があることを意味します。これらのリスクには次のものが含まれます。

アップグレード可能なエージェント (直接攻撃可能)。

自己破壊ロジック付き。自己破壊と作成の共同呼び出しの場合、攻撃の可能性2。

2.2.3 脅威モデルⅡに対する予防策

アップグレード可能なエージェント (直接攻撃可能)。

自己破壊ロジック付き。自己破壊と作成の共同呼び出しの場合、攻撃の可能性2。

2.2.3 脅威モデルⅡに対する予防策

フックが悪意のあるものであるかどうかを評価することが重要です。具体的には、マネージド フックの場合はコスト管理の動作に焦点を当てる必要がありますが、独立したフックの場合はアップグレード可能かどうかが主な焦点となります。 - 3 - 結論 この記事では、まず、Uniswap v4 のフック セキュリティ問題に関連するコア メカニズムの概要を簡単に説明します。続いて、2 つの脅威モデルを提案し、関連するセキュリティ リスクの概要を簡単に説明します。以降の記事では、各脅威モデルにおけるセキュリティ問題の詳細な分析を実施します。乞うご期待!

コメント

全てのコメント

Recommended for you

  • 米上院銀行委員会の委員長は、ステーブルコインの利回りに関する新たな草案が早ければ今週中にも公表される可能性があると述べた。

    Cointimeの報道によると、上院銀行委員会の委員長を務めるティム・スコット上院議員は、ワシントンD.C.で開催されたブロックチェーンサミットで、議員らは早ければ今週中にも、少なくともステーブルコイン関連の条項を含む新たな法案草案を目にする可能性があると述べた。スコット議員は、法案の中で最も注目を集めているのはステーブルコインの利回り問題だが、議員らは引き続きこの問題に取り組んでいると指摘した。 スコット議員は、「今週中に最初の提案が提出されるだろう。もしそれが週末までに実現すれば、少なくとも法案の枠組みが形になりつつあるかどうかが分かるだろう。そうなれば、我々はより良​​い状況に立てると思う」と述べた。また、ステーブルコインの利回り問題に関して、民主党のアンジェラ・アルソブルックス上院議員、共和党のトム・ティリス上院議員、そしてホワイトハウス高官のパトリック・ウィット氏の尽力も、この進展に貢献していると述べた。 スコット氏は、過去1か月間の交渉で、ドナルド・トランプ大統領とその家族の暗号資産プロジェクトに対する議員の懸念、主要な規制機関における超党派代表の欠如、顧客確認(KYC)規制など、その他の未解決問題も取り上げられたと述べた。 スコット氏はまた、「倫理問題と定足数については、合意に非常に近づいていると思います。これは相手側にとっても重要な問題だと認識しているので、こちらも対応しています。また、いくつかの人事についても進展が見られており、これは良いニュースです。DeFiに関しては、マーク・ワーナー上院議員が注力している分野であり、マネーロンダリング対策(AML)は非常に重要な要素です。これらの問題についても前進していると思います」と述べた。

  • ゴールデンモーニングブリーフィング|3月18日の主要な夜間動向

    21:00~7:00 キーワード:ファントムウォレット、ストライプウォレット、オートノマスウォレット、イラン 1. イランは、米国とイスラエルが自国領土を使用することを容認する国に対して、合法的に攻撃できると主張している。 2. 米国CFTC(商品先物取引委員会)は、ファントムウォレットはブローカーとしての登録を必要としないと発表。 3. アリゾナ州司法長官は、予測マーケティング担当者のカルシ氏を刑事告発。 4. 米国国務省は、世界中のすべての在外公館に対し、「直ちに」安全保障評価を実施するよう命じた。 5. ロビンフッド・ベンチャーキャピタルは、ストライプウォレットとイレブンラボに約3500万ドルを投資。 6. GSRは、オートノマスウォレットとアーキテックを買収するために5700万ドルを投資し、暗号資産ファンド管理プラットフォームを構築。 7. 米国証券取引委員会(SEC)とCFTCは、ほとんどのデジタル資産は証券ではないとする新たな暗号資産ガイダンスを発表。

  • 米国証券取引委員会(SEC)と商品先物取引委員会(CFTC)は、仮想通貨に関する新たな見解を発表し、ほとんどのデジタル資産は証券の範疇には含まれないとした。

    Cointimeは3月18日、米国証券取引委員会(SEC)と商品先物取引委員会(CFTC)が暗号資産に関する68ページのガイダンス文書を公表し、ほとんどのデジタル資産は証券ではないと明記したと報じた。この新たな説明では、ステーブルコイン、デジタル商品、および「デジタル商品」トークンの分類が詳細に説明されており、これらはすべて証券ではないと両機関は述べている。また、「非証券暗号資産」がどのようにして証券になり得るのかを説明し、マイニング、プロトコルステーキング、エアドロップに連邦証券法がどのように適用されるのかを明確にしている。 SECはさらに、非証券デジタル資産が投資契約の対象となる仕組みについても説明している。SECの説明によると、「非証券暗号資産は、発行者が投資家に対し共同事業への投資を促し、必要な経営業務を行うという約束または表明を行い、かつ購入者がそこから利益を得ると期待する理由がある場合に、投資契約の対象となる」。

  • マスターカードは、ステーブルコイン企業であるBVNKを最大18億ドルで買収する計画だ。

    Cointimeの報道によると、Mastercardはステーブルコインインフラのスタートアップ企業であるBVNKを、条件付き買収額3億ドルを含め最大18億ドルで買収する計画だ。この買収は、BVNKとCoinbaseの約20億ドル規模の合併交渉が決裂してからわずか4ヶ月後のことである。両社は火曜日に発表した共同声明で、この取引を確認した。

  • ビットコインが7万5000ドルを突破

    市場データによると、BTCは75,000ドルを突破し、現在75,033.01ドルで取引されており、24時間で2.83%上昇しています。市場は著しい変動に見舞われているため、リスク管理には十分ご注意ください。

  • ビットコインが7万1500ドルを突破

    市場データによると、BTCは71,500ドルを突破し、現在71,510.19ドルで取引されており、24時間で1.06%上昇しています。市場は著しい変動に見舞われているため、リスク管理には十分ご注意ください。

  • イーサリアムが2100ドルを突破

    市場データによると、イーサリアム(ETH)は2,100ドルを突破し、現在2,100.58ドルで取引されており、24時間で0.44%上昇しています。市場は著しい変動に見舞われていますので、リスク管理に十分ご注意ください。

  • 米国の現物イーサリアムETFには、昨日2670万ドルの純流入があった。

    Farside Investorsが監視しているデータによると、3月14日、米国の現物イーサリアムETFには昨日、2670万ドルの純流入があった。

  • 米国司法省はパウエル事件の判決を不服として控訴する予定であり、これによりウォーシュ氏の任命が遅れる可能性がある。

    3月14日、裁判官が連邦準備制度理事会(FRB)に発行された召喚状を却下した後、ロバート・ピロ連邦検事は、FRB議長ジェローム・パウエル氏に対する捜査を継続すると誓い、5月に任期が満了する後任のケビン・ウォーシュ氏の任命を遅らせる可能性があると述べた。ジェームズ・ボスバーグ連邦地裁判事は、FRB本部の改修工事とパウエル氏の同プロジェクトに関する発言に関連する召喚状を政府が正当化する証拠を提示できなかったと述べた。ピロ氏は、「この手続きは過激な判事によって恣意的に妨害された。手続きは円滑に進むべきだったが、そうはならなかった。彼らは恥ずべき行為をしている」と述べた。上院銀行委員会のメンバーであるティリス上院議員は、司法省によるパウエル氏に対する捜査が続く限り、FR​​B議長の指名を阻止すると警告した。「この判決は、パウエル議長に対する刑事捜査がいかに弱く根拠のないものであったかを裏付けるものであり、FRBの独立性に対する失敗した攻撃に過ぎない」とティリス氏は述べた。 「この控訴は、ケビン・ウォーシュ氏の次期連邦準備制度理事会議長への就任承認を遅らせるだけだろう。」