Cointime

Download App
iOS & Android

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

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

  • マスク氏、ロシアに政治亡命を申請?ロシアが反応

    外国メディアの報道によると、ロシア下院のダヴァンコフ副議長は現地時間20日、米国の億万長者マスク氏がロシアへの亡命を申請したと述べた。その後、クレムリンはこの発言を否定した。報道によると、ダヴァンコフ氏はロシア外務省がマスク氏の政治亡命申請を受理したと述べた。ロシアのペスコフ大統領報道官は、「マスク氏はなぜ亡命を申請したいのか?これは噂であり、誰も確認していない」と述べた。ロシア外務省もダヴァンコフ氏の発言を批判し、その発言はエチケットの最低限の基準を超えており、彼のような地位にある人物にふさわしくないと述べた。

  • ラブブの中古市場価格が急落

    ポップマートの公式アプリは、ラブブシリーズのブラインドボックスの補充に関するプッシュ通知を開始し、ECライブブロードキャストルームでも大量の商品が公開されました。その夜、多くの消費者がソーシャルプラットフォームに予約注文を投稿しました。公式補充の影響を受け、中古市場でのラブブの価格は急落しました。ある流行玩具の中古取引ソフトウェアのデータによると、ラブブ3.0の1箱のリサイクル価格は1,500元から2,800元、650元、800元まで下落しました。以前は、一部の転売業者が注文獲得ソフトウェアに頼って在庫を積み上げ、10倍以上のプレミアムで販売していましたが、公式の大規模な補充は品薄の予想を打ち破り、市場で売り切れました。

  • モルガン・スタンレー:オフショア人民元ステーブルコインは、国境を越えた決済の実際の使用例を検証するだろう

    モルガン・スタンレーの最新調査レポートは、香港ステーブルコイン法の関連政策が、オフショア人民元ステーブルコインの法的道筋を実質的に切り開いたと指摘しています。香港の約1兆人民元に及ぶ豊富なオフショア流動性プールに支えられたオフショア人民元ステーブルコインは、クロスボーダー決済の実際のユースケースを検証することになるでしょう。人民元ステーブルコインの開発は、人民元スワップ協定、CIPS(クロスボーダー人民元銀行間決済システム)、そして世界的な人民元決済サービスネットワークを含む、クロスボーダー人民元決済インフラの潜在的な構成要素として捉えられるべきです。

  • AIスタートアップのCluelyが1500万ドルの資金調達を完了、a16zも参加

    AIスタートアップのCluelyは、1,500万ドルの資金調達ラウンドを完了したと発表しました。この資金調達にはa16zも参加しています。Cluelyは人工知能(AI)ツールを開発する企業です。同社の主力製品は、ユーザーの画面と音声をリアルタイムで監視することで、面接、営業電話、会議などの場面で即座にサポートを提供できる、人目につかないAIアシスタントです。(BusinessInsider)

  • 市場ニュース:トランプ大統領は明日午前6時に国家安全保障会議に出席する予定

    市場ニュースによると、トランプ米大統領は日曜日の北京時間午前6時に国家安全保障会議に出席する予定。

  • JuChainエコシステム初のメタバースシティFomo Cityは、ローンチ後わずか5時間で1万人以上のオンチェーンユーザーを獲得しました。

    公式ニュースによると、JuChainエコシステム初のネイティブメタバース共同統治都市であるFomo Cityは、本日13時14分19秒に第一期都市建設を正式に開始しました。オンライン開始からわずか5時間で、1万人以上のオンチェーンユーザーが第一期都市共同建設に参加し、コミュニティの参加意欲は高く、予想をはるかに上回りました。

  • 連邦準備制度理事会の金融政策報告書:関税が経済に与える影響を評価するのは時期尚早

    連邦準備制度理事会(FRB)が金曜日に議会に提出した最新の金融政策報告書では、米国のインフレ率は上昇し、労働市場の状況は堅調であると述べつつも、トランプ大統領の関税の影響はまだ現れ始めたばかりかもしれないと示唆し、より明確な状況が整うまで行動を起こさないというFRBの見解を改めて表明した。「貿易政策は依然として変化を続けているため、今年の輸入関税引き上げが米国の消費者物価に与える影響は非常に不透明であり、消費者と企業がどのように反応するかを評価するのは時期尚早だ」とFRBは報告書の中で述べた。「関税の影響は公式の消費者物価統計で直接観察することはできないが、今年の様々な商品の純価格変動のパターンは、関税が最近の商品インフレの上昇に寄与した可能性があることを示唆している」。報告書はまた、不確実性にもかかわらず、金融システムは「回復力」を備えていると述べている。

  • KindlyMDとNakamotoがビットコイン準備プログラムを支援するために新たなPIPEファイナンスで5150万ドルを調達

    ビットコインネイティブの持株会社であるナカモト・ホールディングス社との合併計画を先日発表したKindly MD, Inc.(NASDAQ: NAKA)は、ビットコイン準備金の構築計画を支援するため、プライベートエクイティ公募(PIPEファイナンス)による5,150万ドルの追加資金調達を完了したことを発表しました。KindlyMDはこれまでにPIPEファイナンスを通じて約5億6,300万ドル、転換社債を含めた総額は約7億6,300万ドルを調達しています。

  • 6月20日夜の重要な出来事のリスト

    12:00-21:00 キーワード: TikTok、ウォーラー、Self Chain、Animoca Brands 1. ノルウェー政府、仮想通貨マイニングを一時的に禁止へ 2. TikTok、トランプ大統領の公式ミームコイン購入疑惑を否定 3. ウォーラーFRB理事:早ければ7月の会合で利下げの可能性も 4. Self Chain創設者、5000万ドル相当のOTC仮想通貨詐欺への関与を否定 5. Animoca Brands:香港ドルにペッグされたステーブルコインの発行準備を進めており、ブロックチェーンアプリケーションで中国本土の機関と協力したいとしている 6. 米国上場企業Everything Blockchain、SOL、XRP、SUI、TAO、HYPEに1000万ドルを投資予定

  • ウォーラーFRB理事は明確なハト派的なシグナルを発し、7月の利下げを支持する

    ウォーラーFRB理事は最近、7月に利下げを検討すべきだという意見に賛同するとともに、関税が持続的なインフレにつながることはないと考えていると述べた。同理事は、関税は一時的な要因であり、FRBは雇用市場の崩壊を待ってから利下げを行うべきではないと述べた。ウォーラー理事は、現在、雇用市場は安定しているものの、新卒者の失業率が高いなど、いくつかの兆候が現れ始めていると述べた。FRBは6か月間、インフレショックの到来をじっと待っていた。ウォーラー理事は、FRBには利下げの余地があり、その後インフレの状況を見極めると考えている。ウォーラー理事は、FRBは早ければ7月にも利下げを行う可能性があると述べた。ウォーラー理事の発言以前は、市場はFRBが7月に利下げを行う可能性はわずか14%と予想していた。