爆料全文:Curveがオラクル操作の脆弱性を暴露される
著者:ダニエル・フォン・ファンゲ
編訳:angelilu,Foresight News
昨日、独立研究者ダニエル・フォン・ファンゲがXプラットフォームで発表し、Curveに予言機操作のリスクが存在することを明らかにし、そのリスクは攻撃時に検出が非常に困難であると述べました。予言機の操作行為は、予言機が外部イベントや現実世界に関する誤ったデータを報告する原因となり、予言機に接続されているプロトコルも操作リスクにさらされます。ダニエル・フォン・ファンゲは、影響を受ける可能性のある関連チームに通知したと述べています。
Curveの創設者マイケル・エゴロフはコミュニティ内でこの問題に対して返信し、「このリスクは古いバージョンのプールに存在する可能性があり、crvusdでは古いバージョンのプールを使用しておらず、予言機の使用も推奨しない」と述べました。また、ダニエル・フォン・ファンゲが明らかにしたリスクが実際に存在することを確認しました。
しかし、Curveの貢献者fiddyは、この独立研究者が議論なしに情報を公開した方法に不満を表明し、ダニエル・フォン・ファンゲが明らかにした脆弱性について以前に私的に議論したことがあると澄明しましたが、攻撃者が精度を高めるためにGas費用を増加させるコストが高いと考え、外部監査もこの点を低影響として分類したと述べました。また、この研究者が明らかにした脆弱性はCurveの古いcryptoswapアルゴリズムに関連しており、このアルゴリズムはlast_price価格を使用していますが、新しいcryptoswap-ng実装はAMM状態価格を使用しており、このような問題を解決できます。さらに、yAuditDAOは確かにいくつかの予言機の誤りを発見し、現在修正中であり、誰もこれらの予言機を使用しておらず、これらのステーブルコイン取引プールのLP(流動性提供者)は影響を受けていません。
しかし、すでにいくつかのチームはそのリスクに基づいてプロトコルの調整を開始し、安全性を強化しています。Yearn Financeの開発者@storming0xもダニエル・フォン・ファンゲが明らかにしたリスクに対して反応し、「Yearnの契約は影響を受けておらず、Chainlinkを使用した冗長メカニズムを持つ契約を除いて、潜在的な攻撃経路を軽減しています。慎重を期して、Yearn開発チームは新しいバージョンを再展開することを決定しました」と述べました。
以下はダニエル・フォン・ファンゲがCurveの予言機価格操作リスクを明らかにした全文です:
過去2週間、私はCurveの価格予言機を深く研究し、いくつかの非常に異常な行動を発見しました。
これらの予言機の動作はあなたが思っているほどではなく、予想以上に操作されやすく、通常の状況でも誤動作する可能性があります。
簡単に概要を述べると:ほとんどのプールでは、攻撃者は1つのブロック内でCurveの価格予言機を通常の価格の10倍から500倍に操作することができます。そして、この操作は隠蔽される可能性があり、プールを確認しても操作の兆候を全く発見できないことがあります。
Curveのプールの数は多く、現在、異なるプールのコードベースの数を正確に統計することはできません。
私が書いた内容は特定のプールに適用される場合もあれば、適用されない場合もあります。異なるプールには異なる脆弱性があります。あるプールには脆弱性が全くないかもしれません。
Curveチームは報告を受け取り、議論する際に素晴らしいパフォーマンスを示し、数分以内にCrvUSDがこれらの問題の影響を受けないことを確認しました。
私はまた、主ネット上で約100のCurve価格予言機を使用している契約を確認し、適宜関連チームに通知しました。
この脆弱性の重要な問題の1つは、価格が1:1に近くない場合や手数料が高い場合、last_priceが誤って計算される可能性があることです。
まず、手数料はlast_priceの計算に含まれていないため、使用される数字は実際の取引やプールの残高の数字とは異なります。
EMA価格予言機はlastpriceに基づいています。lastpriceが誤っている場合、価格予言機は誤った目標価格に向かって動き始めます。
通常の取引では、私は価格予言機がプール内の実際の現在価格から1%以上ずれているのを見たことがあります。最悪のケースではさらに悪化する可能性があります(グラフ内の標準化された価格)。
プールによっては、この漂移誤差が実際の価格よりも高い場合もあれば低い場合もあります。
最大の問題は、操作中にlast_priceの誤差が実際に操作された価格よりも1桁高くなる可能性があり、プールの予言機が効果的に操作される可能性が大幅に高まることです。
たとえ非常に小さな取引でも、最後の価格/予言機価格の偏差を修正することができ、いくつかの荒唐無稽な状況を引き起こします。
大幅な価格変動とlast_price計算エラーの重なり合いにより、攻撃者は次のブロックでEMA価格予言機を操作でき、アービトラージャーに対抗するために数十のブロックで高価格を維持するために巨額のコストをかける必要がありません。
理論的には、攻撃者は連続する2つのブロックの採掘を制御することができ、これはこの操作を実現するために必要です。攻撃者はこの価格攻撃を行うために十分な資本を持っている必要がありますが、過去の多くの攻撃者は数千万ドルの資金を持っています。
次に、Curve価格予言機操作に対する一般的な防御戦略とその効果について話しましょう。
Curve v1プールには、操作を検出するために使用できる4つの数字があります。実際の価格、価格予言機、lastprice、EMA価格。残念ながら、一度操作が行われると、操作されたpriceoracle価格に対する単一の取引がこれらすべてを同じ数字にリセットすることができます。
Curve v2プールのpricescaleは価格予言機よりも操作が難しいです。それは変化が遅く、実際の取引コストが必要です。この迅速な価格予言機と遅いpricescaleが一致すれば、状況は安定しますよね?
いいえ!核心的な攻撃の問題は、実際の価格、迅速な予言機、遅いスケールの3つの数字を整合させることです。実際の価格は簡単に制御できるため、すぐに操作される可能性があります。したがって、問題は他の2つの間に交点を設計することになります。
攻撃者は価格を一時的に引き上げ、その後次のブロックで正常に戻し、数ブロック待って攻撃を行い、下降する価格予言機が上昇するpricescaleに出会うまで待ちます。実際の価格は1つのブロック内で高値を維持するだけで、予言機を混乱させるのに十分であり、pricescaleはそれに従います。
多くの予言機は上限を使用しており、これによりCurve予言機価格で使用される価格が1:1の最高値に制限されています。これは良いことであり、愚かな高値を排除します。しかし、資産が実際にデカップリングした場合、攻撃者は低価格で資産を購入し、その後操作によって再びペッグされているように見せかけることができます。
プロトコルは時折最低限度を設定し、Curve価格予言機の応答がペッグの一定のパーセンテージを下回ると無視されます。しかし、資産が実際にデカップリングしているときに価格を無視すると、価格予言機を持つ目的を失うことになります。
もう1つの一般的な戦略は、別のAMMシステムの価格を混合することです。これは他のプールの質と操作特性に大きく依存します。流動性が低く、操作されやすい場合、目的を達成することはできません。
悪い + 悪い = 悪い。
ステーブルコイン/ステーブルコイン取引ペアの新型Curveプールは、lastpriceを1:1値の2倍に制限しています。これにより、lastpriceは愚かな高値に押し上げられず、EMAがオーバーロードされることを防ぎます。
しかし、誤った資産が合法的にデカップリングした場合、それは間違いです。
Curveプールを使用して担保資産の価格を設定したい場合、そうすべきではないかもしれません。
新型プールは通常、攻撃コストが高くなります。操作されたプールが市場に与える影響が小さい場合(おそらく収益分配を保護するためだけ)、かつプールに対する攻撃コストが非常に高い場合、使用することができます。
最後に、著者は使用するプールに対して実際の攻撃シミュレーションを行うことを推奨し、仮定や理論に基づいて価格予言機の動作を予測するのではなく、実際に使用されているプールで詳細なシミュレーションテストを行うべきだと述べています。操作攻撃をシミュレーションすることで、プールがさまざまな状況でどのように機能するかをよりよく理解できます。
以下の図は、過去90日間のCurve予言機使用量の増加を示しています:
いくつかのCurveプールは優れた価格予言機を持っており、私はそれらが何の奇妙な行動も示さないことを確認しました。それらは完全に良好なパフォーマンスのEMAが期待されるものに一致しています。しかし、まだ確認する必要があります……