# Uniswap v4のHookメカニズム:可能性とリスクの共存Uniswap v4がまもなく登場します。このアップデートでは、各トレードペアに対して無限の流動性プールと動的手数料をサポートする新機能、シングルトン設計、フラッシュアカウンティング、Hookメカニズム、ERC1155トークン標準のサポートが含まれています。その中でも、Hookメカニズムはその強力な可能性から広く注目されています。Hook機構は流動性プールのライフサイクルの特定のポイントでカスタムコードを実行することを可能にし、プールの拡張性と柔軟性を大幅に向上させます。しかし、Hook機構は同時に二刃の剣でもあります。強力で柔軟性がある一方で、Hookを安全に使用することもまた簡単な課題ではありません。Hookの複雑さは避けられない新たな潜在的攻撃ベクトルをもたらします。この記事では、Uniswap v4のHookメカニズムに関する概念を紹介し、その存在する安全リスクを概説します。## Uniswap v4のコアメカニズム深く探る前に、Uniswap v4のメカニズムについて基本的な理解が必要です。公式の発表とホワイトペーパーによれば、Hook、シングルインスタンスアーキテクチャ、そしてフラッシュアカウントは、カスタム流動性プールと複数のプールにまたがる効率的なルーティングを実現するための三つの重要な機能です。### HookメカニズムHookは、流動性資金プールのライフサイクルの異なる段階で運用される契約であり、誰でも意思決定を行えるようにすることを目的としています。この方法を通じて、ネイティブに動的手数料をサポートしたり、オンチェーンのリミットオーダーを追加したり、時間加重平均を使用して大口注文を分散させることができます(TWAMM)。現在、8つのHookコールバックがあり、4つのグループに分かれています(各グループには1対のコールバックが含まれています):- beforeInitialize/afterInitialize - beforeModifyPosition/afterModifyPosition- スワップ前/スワップ後- beforeDonate/afterDonate(寄付後)! [なぜフックはUniswap V4の「両刃の剣」なのですか? ](https://img-cdn.gateio.im/social/moments-f652bf2a22ca7f28f19b4ce9880d0548)### シングルトン、ライトニング会計とロックメカニズムシングルトンアーキテクチャとライトニングブックキーピングは、コストを削減し、効率を確保することでパフォーマンスを向上させることを目的としています。すべての流動性プールが同じスマートコントラクトに保存される新しいシングルトン契約が導入されました。このシングルトン設計は、すべてのプールの状態を保存および管理するためにPoolManagerに依存しています。v4バージョンは、ライトニング会計とロックメカニズムを導入しました。ロックメカニズムの動作方法は次のとおりです:1. ロッカー コントラクトは、PoolManager のロックを要求します。2. PoolManagerはそのロッカー契約アドレスをlockDataキューに追加し、lockAcquiredコールバックを呼び出します。3. locker契約はコールバック内でそのロジックを実行します。実行中のプールとの相互作用は非ゼロの通貨増加を引き起こす可能性がありますが、実行が終了する時には、すべての増加はゼロに精算されなければなりません。4. PoolManagerはlockDataキューと通貨の増加の状態をチェックします。検証後、そのロッカー契約を削除します。全体的に、ロックメカニズムは同時アクセスを防ぎ、すべての取引が清算されることを保証します。この方法は、操作が即時送金を実行するのではなく、内部の純残高を調整することを意味します。変更はプールの内部残高に記録され、実際の送金は操作が終了した時に行われます。ロックメカニズムが存在するため、外部のすべてのアカウント(EOA)はPoolManagerと直接相互作用することができません。すべての相互作用は契約を通じて行わなければなりません。主に2つの契約相互作用シナリオが存在します:- locker契約は公式コードベースから派生するか、ユーザーによってデプロイされます。この場合、ルーターを通じての相互作用と見なすことができます。- locker契約とHookを同じ契約に統合するか、第三者が制御する。この場合はHookを介しての相互作用と見なされる。## 脅威モデル関連するセキュリティ問題を議論する前に、脅威モデルを特定する必要があります。主に以下の2つの状況を考慮します:- 脅威モデルI: Hook自体は良性ですが、脆弱性があります。- 脅威モデルII: Hook自体が悪意を持っている。### 威胁モデルIにおけるセキュリティ問題脅威モデルIは、Hook自体に関連する脆弱性に焦点を当てています。この脅威モデルは、開発者とそのHookが悪意を持っていないと仮定しています。しかし、スマートコントラクトに既知の脆弱性が存在するため、それらはHookにも現れる可能性があります。私たちはv4バージョン特有の潜在的な脆弱性に焦点を当てることを選択しました。主に以下の2種類のHookに注目しています:- ユーザーの資金を保管するHook。攻撃者はこのHookを攻撃して資金を移動させ、資産の損失を引き起こす可能性があります。- ユーザーまたは他のプロトコルが依存する重要な状態データを保存するフック。攻撃者は重要な状態を変更しようとする可能性があり、他のユーザーやプロトコルが誤った状態を使用する場合、潜在的なリスクをもたらす可能性があります。研究の結果、私たちはいくつかの深刻な脆弱性を発見しました。主にHook、PoolManager、および外部の第三者とのリスクの相互作用に起因しており、アクセス制御の問題と入力検証の問題の2つのカテゴリに分類できます。#### アクセス制御の問題v4のコールバック関数は問題を引き起こす可能性があり、8つのフックコールバックとロックコールバックが含まれています。これらの関数はPoolManagerによってのみ呼び出されるべきであり、他のアドレスから呼び出されるべきではありません。フックに関しては、特にプール自体以外の他の当事者によって呼び出される可能性があるため、強力なアクセス制御メカニズムを確立することが重要です。#### 入力検証の質問ロックメカニズムが存在するにもかかわらず、いくつかの脆弱なフック実装における入力検証の不備により、信頼できない外部呼び出しが発生する可能性のある攻撃シナリオが存在します。- Hookは、ユーザーがインタラクトしようとしている資金プールを検証していません。これは、偽のトークンが含まれている可能性があり、有害なロジックを実行する悪意のある資金プールです。- 一部の重要なHook関数は、任意の外部呼び出しを許可します。信頼されていない外部呼び出しは非常に危険であり、再入攻撃を含むさまざまなタイプの攻撃を引き起こす可能性があります。#### 使用上の注意Hookに関連するこのようなセキュリティ問題を回避するためには、敏感な外部/公共関数に対する必要なアクセス制御を適切に実行し、入力パラメータを検証することで、相互作用を確認することが重要です。さらに、再入保護は、Hookが標準的なロジックフローの中で繰り返し実行されないことを保証するのに役立つかもしれません。! [なぜフックはUniswap V4の「両刃の剣」なのですか? ](https://img-cdn.gateio.im/social/moments-ba4bfa88e0ac0b6246e82ad879361ff3)### 脅威モデルIIにおけるセキュリティ問題この脅威モデルでは、開発者とそのフックが悪意を持っていると仮定します。重要なのは、提供されるフックがユーザーの送金または暗号資産の承認を処理できるかどうかです。アクセスフックの方法に基づいて、フックを2つのカテゴリに分けます:- ホスティング型フック: フックはエントリーポイントではありません。ユーザーはルーターを介してフックと対話する必要があります。- 独立型Hook:Hookはエントリーポイントであり、ユーザーが直接インタラクトできるようにします。#### ホスティング型Hookユーザーの暗号資産はrouterに転送または承認されます。PoolManagerが残高チェックを実行するため、悪意のあるHookがこれらの資産を直接盗むことは容易ではありません。しかし、v4バージョンの手数料管理メカニズムが攻撃者によってHookを通じて操作される可能性など、潜在的な攻撃面が依然として存在します。#### スタンドアロンフックHookがエントリーポイントとして使用されると、状況はさらに複雑になります。Hookはより多くの権限を持ち、このインタラクションを通じて理論的に望む任意の操作を実行できます。v4バージョンでは、コードロジックの検証が非常に重要です。主な問題は、コードロジックを操作できるかどうかです。Hookがアップグレード可能である場合、見かけ上安全なHookがアップグレード後に悪意のあるものになる可能性があり、重大なリスクをもたらします。これらのリスクには:- アップグレード可能な代理(は直接攻撃される可能性があります)- 自己破壊ロジックを持っています。selfdestructとcreate2を共同で呼び出す場合、攻撃される可能性があります。#### 使用上の注意重要な点は、Hookが悪意のあるものであるかどうかを評価することです。具体的には、ホスティング型Hookについては費用管理の行動に注目すべきです; 一方、独立型Hookについては、主にそれらがアップグレード可能であるかどうかに注目する必要があります。! [なぜフックはUniswap V4の「両刃の剣」なのですか? ](https://img-cdn.gateio.im/social/moments-97c1e5846e4f09953053f0fb97876f16)## まとめこの記事では、Uniswap v4のHookセキュリティ問題に関連するコアメカニズムの概要を簡潔に説明し、2つの脅威モデルと関連するセキュリティリスクを提案します。Hookメカニズムは強力な機能を持っていますが、新たなセキュリティの課題も伴います。開発者とユーザーはこれらの潜在的リスクを十分に認識し、Uniswap v4を使用する際の資産の安全を確保するために適切な防止策を講じる必要があります。
Uniswap v4 Hookメカニズム:強力な機能の背後にあるセキュリティの課題
Uniswap v4のHookメカニズム:可能性とリスクの共存
Uniswap v4がまもなく登場します。このアップデートでは、各トレードペアに対して無限の流動性プールと動的手数料をサポートする新機能、シングルトン設計、フラッシュアカウンティング、Hookメカニズム、ERC1155トークン標準のサポートが含まれています。その中でも、Hookメカニズムはその強力な可能性から広く注目されています。
Hook機構は流動性プールのライフサイクルの特定のポイントでカスタムコードを実行することを可能にし、プールの拡張性と柔軟性を大幅に向上させます。しかし、Hook機構は同時に二刃の剣でもあります。強力で柔軟性がある一方で、Hookを安全に使用することもまた簡単な課題ではありません。Hookの複雑さは避けられない新たな潜在的攻撃ベクトルをもたらします。
この記事では、Uniswap v4のHookメカニズムに関する概念を紹介し、その存在する安全リスクを概説します。
Uniswap v4のコアメカニズム
深く探る前に、Uniswap v4のメカニズムについて基本的な理解が必要です。公式の発表とホワイトペーパーによれば、Hook、シングルインスタンスアーキテクチャ、そしてフラッシュアカウントは、カスタム流動性プールと複数のプールにまたがる効率的なルーティングを実現するための三つの重要な機能です。
Hookメカニズム
Hookは、流動性資金プールのライフサイクルの異なる段階で運用される契約であり、誰でも意思決定を行えるようにすることを目的としています。この方法を通じて、ネイティブに動的手数料をサポートしたり、オンチェーンのリミットオーダーを追加したり、時間加重平均を使用して大口注文を分散させることができます(TWAMM)。
現在、8つのHookコールバックがあり、4つのグループに分かれています(各グループには1対のコールバックが含まれています):
! なぜフックはUniswap V4の「両刃の剣」なのですか?
シングルトン、ライトニング会計とロックメカニズム
シングルトンアーキテクチャとライトニングブックキーピングは、コストを削減し、効率を確保することでパフォーマンスを向上させることを目的としています。すべての流動性プールが同じスマートコントラクトに保存される新しいシングルトン契約が導入されました。このシングルトン設計は、すべてのプールの状態を保存および管理するためにPoolManagerに依存しています。
v4バージョンは、ライトニング会計とロックメカニズムを導入しました。ロックメカニズムの動作方法は次のとおりです:
ロッカー コントラクトは、PoolManager のロックを要求します。
PoolManagerはそのロッカー契約アドレスをlockDataキューに追加し、lockAcquiredコールバックを呼び出します。
locker契約はコールバック内でそのロジックを実行します。実行中のプールとの相互作用は非ゼロの通貨増加を引き起こす可能性がありますが、実行が終了する時には、すべての増加はゼロに精算されなければなりません。
PoolManagerはlockDataキューと通貨の増加の状態をチェックします。検証後、そのロッカー契約を削除します。
全体的に、ロックメカニズムは同時アクセスを防ぎ、すべての取引が清算されることを保証します。この方法は、操作が即時送金を実行するのではなく、内部の純残高を調整することを意味します。変更はプールの内部残高に記録され、実際の送金は操作が終了した時に行われます。
ロックメカニズムが存在するため、外部のすべてのアカウント(EOA)はPoolManagerと直接相互作用することができません。すべての相互作用は契約を通じて行わなければなりません。主に2つの契約相互作用シナリオが存在します:
locker契約は公式コードベースから派生するか、ユーザーによってデプロイされます。この場合、ルーターを通じての相互作用と見なすことができます。
locker契約とHookを同じ契約に統合するか、第三者が制御する。この場合はHookを介しての相互作用と見なされる。
脅威モデル
関連するセキュリティ問題を議論する前に、脅威モデルを特定する必要があります。主に以下の2つの状況を考慮します:
威胁モデルIにおけるセキュリティ問題
脅威モデルIは、Hook自体に関連する脆弱性に焦点を当てています。この脅威モデルは、開発者とそのHookが悪意を持っていないと仮定しています。しかし、スマートコントラクトに既知の脆弱性が存在するため、それらはHookにも現れる可能性があります。
私たちはv4バージョン特有の潜在的な脆弱性に焦点を当てることを選択しました。主に以下の2種類のHookに注目しています:
ユーザーの資金を保管するHook。攻撃者はこのHookを攻撃して資金を移動させ、資産の損失を引き起こす可能性があります。
ユーザーまたは他のプロトコルが依存する重要な状態データを保存するフック。攻撃者は重要な状態を変更しようとする可能性があり、他のユーザーやプロトコルが誤った状態を使用する場合、潜在的なリスクをもたらす可能性があります。
研究の結果、私たちはいくつかの深刻な脆弱性を発見しました。主にHook、PoolManager、および外部の第三者とのリスクの相互作用に起因しており、アクセス制御の問題と入力検証の問題の2つのカテゴリに分類できます。
アクセス制御の問題
v4のコールバック関数は問題を引き起こす可能性があり、8つのフックコールバックとロックコールバックが含まれています。これらの関数はPoolManagerによってのみ呼び出されるべきであり、他のアドレスから呼び出されるべきではありません。フックに関しては、特にプール自体以外の他の当事者によって呼び出される可能性があるため、強力なアクセス制御メカニズムを確立することが重要です。
入力検証の質問
ロックメカニズムが存在するにもかかわらず、いくつかの脆弱なフック実装における入力検証の不備により、信頼できない外部呼び出しが発生する可能性のある攻撃シナリオが存在します。
Hookは、ユーザーがインタラクトしようとしている資金プールを検証していません。これは、偽のトークンが含まれている可能性があり、有害なロジックを実行する悪意のある資金プールです。
一部の重要なHook関数は、任意の外部呼び出しを許可します。
信頼されていない外部呼び出しは非常に危険であり、再入攻撃を含むさまざまなタイプの攻撃を引き起こす可能性があります。
使用上の注意
Hookに関連するこのようなセキュリティ問題を回避するためには、敏感な外部/公共関数に対する必要なアクセス制御を適切に実行し、入力パラメータを検証することで、相互作用を確認することが重要です。さらに、再入保護は、Hookが標準的なロジックフローの中で繰り返し実行されないことを保証するのに役立つかもしれません。
! なぜフックはUniswap V4の「両刃の剣」なのですか?
脅威モデルIIにおけるセキュリティ問題
この脅威モデルでは、開発者とそのフックが悪意を持っていると仮定します。重要なのは、提供されるフックがユーザーの送金または暗号資産の承認を処理できるかどうかです。
アクセスフックの方法に基づいて、フックを2つのカテゴリに分けます:
ホスティング型フック: フックはエントリーポイントではありません。ユーザーはルーターを介してフックと対話する必要があります。
独立型Hook:Hookはエントリーポイントであり、ユーザーが直接インタラクトできるようにします。
ホスティング型Hook
ユーザーの暗号資産はrouterに転送または承認されます。PoolManagerが残高チェックを実行するため、悪意のあるHookがこれらの資産を直接盗むことは容易ではありません。しかし、v4バージョンの手数料管理メカニズムが攻撃者によってHookを通じて操作される可能性など、潜在的な攻撃面が依然として存在します。
スタンドアロンフック
Hookがエントリーポイントとして使用されると、状況はさらに複雑になります。Hookはより多くの権限を持ち、このインタラクションを通じて理論的に望む任意の操作を実行できます。
v4バージョンでは、コードロジックの検証が非常に重要です。主な問題は、コードロジックを操作できるかどうかです。Hookがアップグレード可能である場合、見かけ上安全なHookがアップグレード後に悪意のあるものになる可能性があり、重大なリスクをもたらします。これらのリスクには:
使用上の注意
重要な点は、Hookが悪意のあるものであるかどうかを評価することです。具体的には、ホスティング型Hookについては費用管理の行動に注目すべきです; 一方、独立型Hookについては、主にそれらがアップグレード可能であるかどうかに注目する必要があります。
! なぜフックはUniswap V4の「両刃の剣」なのですか?
まとめ
この記事では、Uniswap v4のHookセキュリティ問題に関連するコアメカニズムの概要を簡潔に説明し、2つの脅威モデルと関連するセキュリティリスクを提案します。Hookメカニズムは強力な機能を持っていますが、新たなセキュリティの課題も伴います。開発者とユーザーはこれらの潜在的リスクを十分に認識し、Uniswap v4を使用する際の資産の安全を確保するために適切な防止策を講じる必要があります。