レンディングプロトコル上のロングテール資産をTWAPオラクル攻撃から保護する
レンディング プロトコルのハッキングのほとんどはスマート コントラクトの脆弱性に起因しており、毎年数億ドルが盗まれています。開発者や監査人は一般的な攻撃に対してより慎重になり、プロトコルは複数回のコード レビューとバグ報奨金プログラムを受けています。しかし、レンディング プロトコルは、市場のボラティリティや、デペッグ イベントやオラクル操作などの価格設定の問題による経済的な攻撃にも直面しています。
これらの攻撃を防ぐために、ほとんどのプロトコルは流動性の高い資産のみをリストし、最も信頼性の高いオラクル プロバイダー (主に Chainlink) を活用しています。ほとんどのレンディング プロトコルは分散型取引所の時間加重平均価格 (TWAP) オラクルを使用していませんが、TWAP オラクルは最もアクセスしやすいオプションの 1 つです。ただし、ほとんどのプロトコルは、これらのオラクルを単独で安全に使用する安全な方法を見つけることができていません。これは、通常、他の方法に比べてリスクが高すぎるためです。
Uniswap V3 TWAP 価格オラクルは、Inverse Finance、Rari Capital、Euler Finance などの貸付プロトコルで使用されています。レポートでは Uniswap とその V3 オラクルについて繰り返し言及していますが、他の TWAP オラクルも同様に機能する可能性があります。これらのオラクルには、プロトコルに自由に統合でき、集中管理への依存度が低いなど、多くの利点がありますが、欠点が広範囲での使用を妨げています。
オラクル、特に TWAP オラクルが操作された例は数多くあり、こうした攻撃が発生する理由を詳述した研究もあります。通常、Uniswap プールなどのオラクル ソースで流動性が不十分な場合、問題となり、価格にオラクルを利用する貸出プロトコルが攻撃のリスクにさらされます。
オイラーファイナンスチームは、マイケル・ベントレーによるUniswap v3 TWAPオラクルの操作を含むレポートを書き、オラクル攻撃を公開した。
攻撃者は、フラッシュローンを使用して 1 ブロック内で攻撃を完了することで、失敗のリスクを抑えようとします。フラッシュローンを使用すると、攻撃者は本来よりも多くの流動性を利用することができますが、フラッシュローンが 1 ブロック内で最も流動性の高い資産に対して成功する可能性は低いです。
たとえば、下の図 1 は、USDC/WETH 0.3% 手数料ペアに 20% の価格影響を与える 1 ブロック攻撃を実行するための総コスト (5,988.5 億ドル) を示しています。借入や担保要因 (LTV 比率) などの貸出制限により、攻撃者は通常、利益を生む攻撃を成功させるために、価格を 20% を大きく超えて引き上げたり下げたりする必要があります。
攻撃を実行するためのブロックの数を最小限に抑えることは、2 つの理由から重要です。まず、攻撃者は同じブロック内で返済する必要があるフラッシュ ローンを利用します。次に、発生するブロックの数が増えると、攻撃者が裁定取引を行う可能性が高まります。裁定取引により、トレーダーが価格差に気づき、攻撃が完了する前に価格を通常に戻す取引を行うため、攻撃は終了します。
USDC、USDT、WETH などの最も利用されている資産は、通常、特にフラッシュ ローンの場合、TWAP オラクル操作攻撃を防ぐのに十分な流動性があります。これは、ほとんどのレイヤー 2 チェーンとその他のチェーンの流動性が比較的低いため、Ethereum メインネットではより顕著です。貸付プロトコルは、通常、ブルーチップ資産に Chainlink 価格オラクルを使用します。これは、ほとんどの場合、担保資産として設定されているこれらの資産を保護するコストに見合う価値があるためです。
最も流動性の高いプールが十分な流動性を持っていないとしても、Uniswapや他のDEXには、即座に裁定取引の機会を提供するプールが数多くあります。異なるプールにある2つの非常に流動性の高いトークンの価格差は、裁定取引の機会を手動で見つけたトレーダー、ボット、アグリゲーター、またはおそらくUniswapの
オートルーターは、取引を複数のプールに分割することで、利用可能な最良の価格を見つけます。つまり、攻撃者が Uniswap V3 上の低ボリュームで低流動性のプールをオラクルとして使用している、多額の預金がある貸出プールを見つけた場合、同じトークンの他のプールのボリュームと流動性が高くても、オートルーターによる次の取引で裁定取引の機会が利用されるため、攻撃は失敗する可能性があります。オートルーターは他の無関係なトークンのルートに分割することもできるため、攻撃が成功するのはさらに困難です。
同様の仮定は、流動性が低く、取引量が多いプールについても当てはまります。流動性が低い場合、プールのオラクルは脆弱なターゲットになる可能性があります。ただし、取引量が多いため、取引は市場レートに合わせて価格を常に調整します。そのため、攻撃が成功する可能性は低くなります。
攻撃者は、流動性プロバイダーがフルレンジの流動性または集中流動性を提供できるため、Uniswap V3 の流動性スプレッドも考慮する必要があります。フルレンジの流動性は、ゼロから無限大までの全価格範囲で両側にトークンを追加するため、攻撃のコストが増加します。集中流動性は、特定の範囲が片側のみになるもので、現在の価格と範囲内の流動性の割り当てに応じてコストが増加または減少する可能性があります。Wonderland の CTO 0xGorilla は、記事でこれについてさらに詳しく説明しています。
「安全な」Uniswap プールは、価格オラクルが安全であるためには、数十億ドル相当のトークンをフルレンジに分散させる必要はありません。上の図 1 を考えてみましょう。1 ブロックで価格を 20% 動かすのに 5,988.5 億ドルかかり、10 ブロックにすると 2 億ドル近くかかります。このプールには、合計で約 7,000 万ドルの価値がロックされています。ただし、このプールの分散は完全にフルレンジではありません。流動性の多くが集中しているため、リスクが増大する可能性があります。
オイラーオラクルツールは、このプールでは、1,000万ドルで価格が100万ドルのコストで約14%下落し、170万ドルのコストで約56%上昇することも示しています。これはオラクルとして使用するには潜在的に懸念されるものですが、Uniswapのデータによると、0.05%の手数料プールには1億2,900万ドルのTVLと24億ドルの7日間の取引量が含まれているため、この0.3%のプールは貸付プロトコルで使用される主なプールではないでしょう。
ユーザーは、Uniswap V3 TWAP 価格オラクルを利用する貸付プロトコルに預け入れるリスクをよりよく理解するために、さまざまな流動性スプレッド プロファイルに注意する必要があります。図 2 のグラフは、ユーザーが Uniswap プールで見つける可能性のあるさまざまな流動性プロファイルを示しています。
以下のグラフ LP 1 は、Uniswap V3 プールでよく想定される流動性プロファイルを示しています。流動性 (L) は一般に現在の価格 (P) の周辺に集中していますが、2 つのトークン Token01 と Token02 の各方向から離れるにつれて徐々に減少します。
LP 2 は、流動性が現在の価格の周りの数ティックに極度に集中している、USDC/USDT などの典型的なステーブルコイン ペア プロファイルを示しています。
LP 3 は、流動性の集中ティックがない場合のフルレンジ プールがどのようになるかを示します。
LP 4 の流動性は現在の価格の Token01 側に集中しているため、ダンプは高価ですが、ポンプは安価になりますが、LP 5 ではその逆を示しています。
レンディング プロトコルが両方のトークンを担保として許可している場合、攻撃者は、コストが低く収益性の高い方向にポンピングまたはダンプを選択できます。 1 つの資産が分離されており、担保として使用できない場合、攻撃者は利益を得るためにそれをダンプすることしかできません。 分離された資産をポンピングして利益を得る方法は他にもありますが、オラクル攻撃で分離された資産を単にダンプしたり、他の種類のエクスプロイト方法に頼ったりするよりも複雑で、コストがかかり、リスクが高い可能性があります。
LP 6 はこれを実際に示しており、ポイント A の古い価格 (P1) からポイント B の新しい価格 (P0) にトークンをダンプする方がコストが低くなります。
レンディング プロトコルがプールに Uniswap V3 TWAP 価格オラクルを使用する場合、ユーザーは流動性レベル、スプレッド、トランザクション量に注意する必要があります。攻撃者にとって非常に脆弱な Uniswap プールは、流動性が低く、取引量が少なく、流動性が目標価格と現在の価格から離れた場所に集中しており、Uniswap や他の DEX に他のプールがないか、少なくとも同様の構造のプールがありません。
ロングテール資産プールは一般的に流動性が低く、攻撃コストも低いですが、攻撃者にとって必ずしもリスクが低いわけではありません。取引量が少ないと裁定取引によって攻撃が中断される可能性は低くなりますが、流動性が非常に集中し、攻撃のために取得するトークンがオープンマーケットで流通する数が少ない場合があります。これにより、攻撃者が利益を得ることが不可能になる可能性があります。
マルチブロック攻撃の収益性は、Uniswap プール内のトークンの価値が、レンディング プロトコルのターゲット プールの流動性の価値よりも低いかどうかによって決まります。Uniswap プールの価値を決定する際には、現在のトークン価格での価値が高すぎる場合にオラクルを操作するコストも考慮する必要があります。したがって、Uniswap プールの値はレンディング プロトコルのプールの値よりも高くなる可能性がありますが、これを元に戻すコストがレンディング プロトコルのプールの値よりも低ければ、攻撃は収益性があります。
攻撃者が利益を得られると判断したら、攻撃に必要なトークンを購入する方が効率的か、借りる方が効率的かを検討します。まず、攻撃でトークンを Uniswap で売却して得た利益からトークンの購入コストを差し引きます。流動性の低い Uniswap プールの価格を下げようとしていることを考えると、これはスリッページによる損失である可能性が高くなります。ただし、購入できるトークンが足りない、または十分なトークンを購入するための資金が足りないという問題である可能性もあります。攻撃者は、攻撃が失敗した場合に十分なトークンを購入するためのコストが高すぎると、潜在的な損失が大きすぎると考えるかもしれません。
トークンの購入があまりにも問題である場合、攻撃者は標的の貸出プロトコルまたは別のプロトコルからトークンを借りることができます。他の誰かが攻撃を先取りしていないと仮定すると、攻撃者は標的の貸出プロトコルからトークンを借りることでコストを削減する可能性が高くなります。オラクルを操作することで価格が変化するため、標的の貸出プロトコルからトークンを借りるコストは次第に安くなります。
最後に、攻撃者は、より多くの担保を危険にさらしながらブロックを最小限に抑えるか、または、より少ない担保を利用するために複数回の借入と売却を試みるかどうかを検討します。理想的な状況は、最大額の預金を盗むために必要な最低限の担保額を見つけることです。価格が変動するか、価格が意図したターゲットまでさらに下がることができない場合、攻撃者はプロトコル内の担保の一部またはすべてをロックする可能性があります。
攻撃者が標的のレンディング プロトコルからトークンを借りて、それを販売し、Uniswap の価格オラクルを操作すると仮定すると、潜在的な利益を計算できます。これを行うには、借入と担保の要素 (両方ある場合)、預け入れる担保の量、オラクル プールの流動性など、レンディング プロトコルの制限を考慮する必要があります。
マルチブロック攻撃の使用
ユーザーポジション 1 には、預け入れた担保に基づいて攻撃者が借りることができるトークンの最大量が表示されます。攻撃者は、ターゲットの Uniswap プールで借りたトークンの最大量を販売し、利益と新しい価格を清算ラウンド 1 セクションに入力します。ユーザーポジション 2 とそれ以降の清算ラウンドでは、新しく借りたトークンの価格に必要な担保を考慮した新しい値が表示されます。
追加ラウンドの目的は、最初のラウンドが十分でない場合、希望する価格効果を生み出すためにどれだけのトークンを販売できるかを追跡することです。ユーザーは、できるだけ少ない販売ラウンドで利益のある攻撃を達成するために必要な担保の量を決定することもできます。追加セクションでは、攻撃者が担保を残したり、最終ラウンドで攻撃を終了したりした場合の利益を計算し、蓄積した利益または損失を取得します。
ユーザーは、TWAP オラクルを使用して貸付プロトコルを操作する際に、さまざまなシナリオをシミュレートし、個別のリスク フレームワークを構築できます。オイラー オラクル ツールとマルチブロック攻撃シミュレーターを組み合わせることで、ユーザーはフラッシュ ローンやマルチブロック攻撃の潜在的なリスクの全体像を把握することもできます。さらに、ユーザーは多数のシミュレーションを実行して、貸付プロトコルのベスト プラクティス リスク パラメータ、オラクル攻撃のリスクが最も高いトークン カテゴリを発見したり、早期警告システムを開発したりすることもできます。
ユーザーは、API やアドオンを使用してこのシートを自動化したり、計算に基づいてアプリを開発したりできます。スプレッドシートのポイントは、API またはアプリが削除、制限、または変更された場合に、将来誰でも使用できる方法論を確保することです。
このツールの焦点は、通常、大多数のオラクルではカバーされていないロングテール資産の貸付に対するリスク認識を高め、セキュリティを強化することです。また、このツールは、裁定取引や攻撃におけるブロックの正確な数を無視し、代わりにマルチブロック攻撃の潜在的なコストと利益の計算に重点を置いています。
マルチブロック攻撃シミュレータには、ユーザーの便宜を図るためのユーザーガイド、計算、例が含まれています。シミュレータタブの青いセルをコピーして編集してください。
ロングテール資産の貸付市場を創出する大きな可能性はありますが、安全な貸付機会を可能にするためのリスクがメリットを上回る可能性があることは明らかです。プロトコルは、ユーザーが関連するリスクのレベルを認識できるように、少なくともより多くのツールを提供する必要があります。ミームコイン、ガバナンストークン、分散型トークンのローンチなどのロングテール資産は、貸付市場やデリバティブの恩恵を受けることができますが、これらのトークンは操作に対して最も脆弱でもあります。
ロングテール資産の貸借可能性を解き放つ試みは続いており、オラクルの追加、借入の上限設定、隔離されたプールの作成、引き出しの遅延などの取り組みが行われています。ボラティリティ制御は、真の価格変動とオラクルを操作することを目的とした価格変動を区別できない可能性が高いため、最も流動性の低い資産で機能するかどうかは不確実です。
いくつかの貸付プロトコルでは、時間ベースのローンの作成を検討してきました。しかし、不良債権を生み出すという根本的な問題は依然として存在しており、貸し手はそのリスクを受け入れる覚悟が必要です。この調査では貸付プロトコルのこの分野を詳しくは調べていませんが、変動金利ベースのプロトコルが引き続き市場を支配しています。
潜在的な解決策としては、Uniswap の取引量、流動性スプレッド、トークンの量を調べて、ロングテールの貸借市場におけるリスクを判断することが考えられます。リスク評価が高い市場は、Uniswap のオラクル プールにより多くの流動性が提供されるまで、ロックまたは上限が設定されます。これらの要素の一部は、Euler V1 のオラクル評価システムで利用されました。
他のソリューションは、Uniswap V4フックとして、またEuler V2やBunniなどの既存のプロトコルのアップデートや改訂版として開発されています。価格オラクルは、時間加重自動マーケットメーカー(TWAMM)やBedlam Researchが概説したオーダーブックベースの貸付プロトコルなど、他のタイプの分散型取引所を利用することで、より効率的になることもあります。Kamino Financeなどのプラットフォームは、動的LTVを含むさまざまなリスク管理対策を紹介していますが、GammaSwap、Timeswap、Ammalgamなどの他のプロトコルは、オラクルレスやその他のソリューションを提供しています。
結局のところ、流動性の低い価格の情報源が 1 つしかない場合、リスク管理をいくら行っても、貸付プロトコルの参加者にとって安全かつ経済的に実現可能なものにすることはほとんど不可能です。