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

  • ヴィタリク氏:仮想通貨ユーティリティの最低点は過ぎた

    ヴィタリック・ブテリン氏は、仮想通貨ユーティリティの最低点は過ぎたとツイートした。テクノロジーの観点から見ると、過去 5 年間の最大の発展は主に、ブロックチェーンのスケーラビリティ問題が差し迫った解決を迎えたことです。 Vitalik氏は特に予測市場Polymarketに言及し、今春のインタビュー後、同社がイーサリアム上に存在することに非常に満足していると述べた。

  • FBI:仮想通貨取引所の従業員になりすまして資金を違法に盗む詐欺師に注意してください

    FBIは8月1日、詐欺師が仮想通貨取引所の従業員になりすまして、一方的なメッセージや電話を通じて資金を盗んでいると警告を発し、アカウントに問題があると主張して被害者にログインメッセージを提供させた。リンクをクリックするか、識別情報を共有します。

  • 7月の安定通貨発行額は1,443億米ドルに増加し、USDTの市場シェアは78.9%に達した

    TheBlockProのデータによると、7月のチェーン上のステーブルコインの調整後の取引量は18.8%増加して9,974億米ドルに達し、ステーブルコインの供給量は1.2%増加して1,443億米ドルに達し、そのうちUSDTとUSDCが市場シェアを占めていた。それぞれ78.9%と17.1%。さらに、ビットコインとイーサリアムの調整後のオンチェーン取引量は全体で31.8%増加し、4,450億米ドルに達しました。このうち、ビットコインの調整後のオンチェーン取引量は34.7%増加し、イーサリアムの調整後オンチェーン取引量は4,450億米ドルに増加しました。 27.7%。

  • アラブ首長国連邦のドバイ商業銀行が仮想資産サービスプロバイダーの専用口座を開設

    アラブ首長国連邦(UAE)のドバイ商業銀行(CBD)は、顧客の資金を管理し、規制上の健全性要件を満たすために、仮想資産サービスプロバイダー(VASP)の専用口座を開始しました。CBDは中央銀行に準拠するための専用口座を開始しました。 UAE およびドバイ仮想資産規制庁 (VARA) の規制。 CEOのベルント・ファン・リンダー氏は、この動きはドバイ商業銀行の中核的な銀行サービスと一致しており、デジタル経済の発展を促進する同銀行の計画を支援すると述べた。

  • ブロックチェーン融資プロトコルMorphoがRibbit Capital主導で5,000万米ドルの資金調達を完了

    DeFi企業モルフォは、CEOのポール・フランボットがまだ大学3年生だったときに1,800万ドルの資金を調達した。今回、モルフォはプライベートトークンセールを通じて5000万ドルを調達したが、評価額は明らかにしなかった。この戦略的資金調達ラウンドは、Robinhood、Revolut、Coinbaseなどの金融テクノロジー企業への初期投資家であるRibbit Capitalが主導しました。

  • 北京:預金保管と家賃監督におけるデジタル人民元の使用を奨励

    「北京市住宅賃貸保証金保管及び家賃監督暫定措置」が発布された。本措置は、本市内で他人の住宅を借りて転貸事業を行う住宅賃貸事業者が賃借人から徴収する敷金及び家賃の保管、監督、管理にも適用されるとしている。この市は、預金の保管と家賃の監督にデジタル人民元の使用を奨励しています。

  • アクティブな融資額は2022年初頭以来の最高水準に戻り、これはDeFiが再び回復していることを示している可能性がある

    ゴールデン・ファイナンスは、仮想通貨市場分析プラットフォームのトークンターミナルが7月31日の記事で「DeFiは再び回復しつつある」と述べたと報じた。データによると、アクティブ融資量やTVLなどの主要指標は最近の最低水準である2023年から上昇しており、その中にはアクティブ融資額も含まれている。融資額は約133億ドルと2022年初め以来の高水準に戻っており、これは「強気市場の先行指標」であるレバレッジが上昇していることを意味する可能性がある。

  • 7月末のグレースケール位置データ更新:GBTCは約241,000BTCに下落、ETHEは約207万ETHを保有

    Grayscale は、7 月 31 日の時点でビットコインとイーサリアムのファンド データを次のように公式に更新しました。

  • 7月のビットコインチェーンのNFT売上高は約7,730万ドルで、2023年11月以来の最低記録となった

    Cryptoslamのデータによると、7月のビットコインチェーンにおけるNFT売上高は77,311,729.1ドルで、2023年11月以来の最低記録を樹立した。さらに、7月のビットコインチェーン上のNFT取引数は12万件未満で、これも2023年11月以来の最低水準となった。その中には、約35,477人の独立した売り手と約49,348人の独立した買い手がいた。

  • Upbit、Bithumb、Coinoneが規制手数料の支払いを開始、総額3億ウォンに上る見込み

    仮想資産ユーザー保護法の施行に伴い、Upbit、Bithumb、Coinone などの仮想資産サービスプロバイダーも規制手数料の支払いを開始します。規制手数料は営業利益に応じて徴収され、総額は3億ウォン(22万ドル)になる見通しだ。 暗号資産サービスプロバイダーの規制上の負担額は、前営業年度の営業利益と負担率に基づいて計算されます。 2024年の株価に基づくと、Upbitの手数料は約2億7,200万ウォン(19万9,000ドル)、Bithumbの手数料は約3,650万ウォンとなる。 CoinoneとGopaxはそれぞれ603万ウォンと83万ウォンである。昨年の営業収益が約17億ウォンだったコルビットは、規制負担金の支払い対象外となっている。規制上の拠出金の実際の徴収は来年開始される。 「監督手数料」とは、金融監督局の検査を受ける金融会社などの金融機関が、監督やサービスの対価として金融監督局に支払う準税金だという。この税は営業利益が30億ウォン(220万ドル)以上の規制対象企業に課される。