ダニエル フォン ファンジ脚本の作品
編集:angelilu、フォーサイトニュース
昨日、独立研究者のダニエル・フォン・ファンジ氏が X プラットフォームに関する記事を発表し、Curve にはオラクル操作のリスクがあり、攻撃中にこのリスクを検出するのは困難であることを明らかにしました。オラクルの操作により、オラクルが外部イベントまたは現実世界に関する誤ったデータを報告する可能性があり、オラクルに接続されているプロトコルが操作の危険にさらされることがあります。ダニエル・フォン・ファンジ氏は、影響を受ける可能性のある関連チームには通知済みだと述べた。
Curve の創設者 Michael Egorov 氏はコミュニティでこの問題に反応し、「このリスクは古いバージョンのプールに存在する可能性があります。古いバージョンのプールは crvusd では使用されず、オラクルの使用は推奨されません。」と述べ、ダニエル氏も自分の発言を認めました。フォン・ファンジ氏の情報開示のリスクは現実のものです。
しかし、Curve の寄稿者fiddy は、この独立した研究者がこの情報を議論することなく公に公開した方法に不満を表明し、ダニエル・フォン・ファンジによって公開された脆弱性は以前にも非公開で議論されていたが、攻撃者は精度を向上させたいと考えていたと述べて説明を発表しました。ガス料金値上げのコストは高く、外部監査でもこれは影響が低いと分類されました。そして、研究者が明らかにした脆弱性は、last_price 価格を使用する Curve の古い cryptoswap アルゴリズムに関連していますが、新しい cryptoswap-ng 実装では、そのような問題を解決できる AMM 状態価格を使用します。さらに、yAuditDAO はいくつかのオラクル エラーを発見しましたが、現在修正中ですが、これらのオラクルは誰も使用しておらず、これらのステーブルコイン取引プールの LP (流動性プロバイダー) は影響を受けません。
ただし、一部のチームは、開示されたリスクに基づいてセキュリティを強化するためにプロトコルを調整し始めています。 Yearn Financeの開発者@storming0xも、ダニエル・フォン・ファンジ氏が明らかにしたリスクに反応し、「潜在的な攻撃経路を軽減するためにChainlinkの冗長メカニズムを使用する1つの契約を除いて、Yarn契約は影響を受けない」と述べた。新しいバージョンを再デプロイします。」
以下は、カーブ・オラクルにおける価格操作のリスクに関するダニエル・フォン・ファンジ氏の開示の全文です。
過去 2 週間にわたり、私は Curve の価格オラクルを詳しく調査し、非常に珍しい動作をいくつか発見しました。
これらの神託は、あなたが思っているようには機能せず、予想よりも操作が簡単で、通常の状況では間違った方向に進む可能性があります。
簡単な概要: ほとんどのプールでは、攻撃者はわずか 1 ブロックで Curve の価格オラクルを通常価格の 10 倍から 500 倍に操作できます。また、プールを見ても操作されている形跡がないように、操作を非表示にすることもできます。
Curve プールは多数あり、さまざまなプール内のコード ベースの数を正確に数えられる人は誰もいません。
私が書いたことは、特定のプールに当てはまる場合と当てはまらない場合があります。異なるプールには異なる脆弱性があります。穴のないプールもあるかもしれません。
Curve チームはレポートを受け取り、議論し、数分以内に CrvUSD がこれらの問題の影響を受けていないことを確認しました。
また、Curve 価格オラクルを使用するメインネット上の約 100 の契約をチェックし、必要に応じて関連チームに通知しました。
この脆弱性の主な問題は、価格が 1:1 に近くない場合、または手数料が高い場合に、last_price が誤って計算される可能性があることです。
まず、手数料は last_price の計算に含まれていないため、実際のトランザクションやプール残高とは異なる数値が使用されます。
EMA 価格オラクルは last_price によって決まります。 last_price が間違っていると、価格オラクルは間違った目標価格に向かって動き始めます。
通常の取引では、価格オラクルのポジション価格がプール内の実際の現在価格から 1% 以上乖離しているのを見たことがあります。最悪のシナリオはさらに悪化する可能性があります (チャートの正規化価格)。
プールによっては、このドリフト誤差が実際の価格よりも高くなる場合もあれば、低くなる場合もあります。
最大の問題は、操作中に、last_price エラーが実際に操作された価格よりも 1 桁大きくなる可能性があり、プール オラクルが事実上操作される可能性が大幅に高くなるということです。
たとえ小さな取引であっても、最終価格とオラクル価格の乖離が修正され、とんでもない状況につながる可能性があります。
たとえ小さな取引であっても、最終価格とオラクル価格の乖離が修正され、とんでもない状況につながる可能性があります。
大きな価格変動と last_price 計算エラーの重畳的な影響により、攻撃者は裁定取引者と戦うために数十のブロックで高価格を維持するために多大なコストを費やすことなく、次のブロックの EMA 価格オラクルを操作できます。
理論的には、攻撃者は、この操作を実行するために必要な 2 つの連続するブロックのマイニングを制御することができます。攻撃者はこのような価格攻撃を実行するには十分な資本を持っている必要がありますが、過去の攻撃者の多くは数千万ドルを手元に持っていました。
それはさておき、カーブの価格オラクル操作から身を守るための一般的な戦略とその有効性について話しましょう。
Curve v1 プールには、操作、実際の価格、価格オラクル、last_price、EMA 価格の検出に使用できる 4 つの数値があります。残念ながら、price_oracle 価格を操作する 1 回の取引では、1 回の操作後にこれらすべてが同じ数値にリセットされる可能性があります。
Curve v2 プールの Price_scale は、価格オラクルよりも操作が困難です。変化はより遅く、移動には実際の取引手数料コストが必要になります。この速い価格オラクルが遅い価格スケールと一致する場合、状況は安定していますよね?
いいえ!攻撃の中核的な問題は、実際の価格、高速オラクル、低速スケールという 3 つの数値を調整することです。実際の価格は瞬時に操作できるため、コントロールが容易です。次に問題は、他の 2 つの間の交差部分を設計することになります。
攻撃者は一時的に価格を吊り上げ、次のブロックで通常に戻り、下落する価格オラクルが上昇するprice_scaleに遭遇するまで数ブロック待って攻撃します。実際の価格は、オラクルを混乱させるのに十分なブロックに対して高く維持するだけでよく、price_scale もそれに続きます。
多くのオラクルはキャップを使用し、使用する価格を Curve オラクル価格から最大値 1:1 に制限します。これは素晴らしいことであり、ばかげた高い値を排除します。ただし、資産が実際にペッグ解除されている場合、攻撃者はその資産を低価格で購入し、再ペッグされたように見せかけることができることに注意してください。
プロトコルは時々最小値を設定し、カーブ価格オラクルの応答がペッグの特定のパーセンテージを下回った場合、それは無視されます。しかし、資産が実際に分離するときに価格を無視すると、価格のオラクルを持つ目的全体が無効になります。
もう 1 つの一般的な戦略は、別の AMM システムの価格を混ぜることです。多くは他のプールの品質と処理特性に依存します。液体が少なく操作が簡単であれば、それは目的を損なうことになります。
悪い + 悪い = 悪い。
もう 1 つの一般的な戦略は、別の AMM システムの価格を混ぜることです。多くは他のプールの品質と処理特性に依存します。液体が少なく操作が簡単であれば、それは目的を損なうことになります。
悪い + 悪い = 悪い。
ステーブルコイン/ステーブルコイン取引ペアの新しい Curve プールは、last_price を 1:1 の値の 2 倍に内部的に制限します。これにより、last_price を愚かなほど高い値に設定することができなくなり、EMA に過負荷がかかるため、ブロック攻撃が防止されます。
しかし、間違った資産が法的に分離されるとしたら、それは間違いです。
Curve プールを使用して担保資産の価格を決定したい場合は、おそらくそうすべきではありません。
新しいプールは通常、攻撃コストが高くなります。これは、不正なプールが市場に与える影響が小さい場合 (おそらく収益分配を保護するため)、およびプール シミュレーションに対する攻撃がコストがかかる場合に選択肢となる可能性があります。
最後に著者は、価格オラクルの動作を仮定や理論に基づいて予測するのではなく、実際に使用されるプールに対して実際の攻撃シミュレーションを実行することを推奨しています。操作攻撃をシミュレートすることで、さまざまな状況でプールがどのように動作するかをよりよく理解できます。
次のグラフは、過去 90 日間の Curve oracle 使用量の増加を示すグラフです。
一部の Curve プールには、パフォーマンスが良好な価格オラクルがあり、それらが奇妙な動作をすることはなく、パフォーマンスの良い EMA から期待されるとおりの動作をします。しかし、まだ確認が必要です...
全てのコメント