1億2000万ドルの損失をもたらしたBalancer V2攻撃の予備分析。

11月3日、Balancer V2プロトコルとそのフォークプロジェクトが複数のチェーンで攻撃を受け、1億2000万ドルを超える深刻な損失が発生しました。BlockSecによる予備分析では、以下のような攻撃の仕組みが明らかになりました。

  • 攻撃の本質: 攻撃者が不変量(D)を操作し、Balancer Pool Token(BPT)の価格計算を歪め、batchSwap操作を通じて安定プールから利益を得ました。
  • 背景: 影響を受けたのはComposable Stable Pool。プールはスケーリングと丸め処理を行うため、非対称な丸め方向の繰り返しがわずかな偏差を生み、攻撃に利用されました。
  • 攻撃の3段階
    1. BPTを原資産に償還し、トークン残高を丸めの臨界値に調整。
    2. 細工された数量でスワップを行い、計算上の不変量Dを人為的に減少させ、BPT価格を低下させた。
    3. 価格が低下したBPTをより多く取得し、流動性引き出し時に他の資産を奪って利益を得た。

この複雑な攻撃は、プロトコルの数学的モデルと精度処理の脆弱性を突くものでした。

要約

11月3日、Balancer V2プロトコルとそのフォークプロジェクトが複数のチェーンで攻撃を受け、1億2000万ドルを超える深刻な損失が発生しました。BlockSecは最初の機会に早期警告を発し[1]、予備的な分析結論を発表しました[2]。これは非常に複雑な攻撃でした。予備的な分析の結果、攻撃者が不変量を操作し、BPT(Balancer Pool Token)(つまりBalancer PoolのLPトークン)の価格計算を歪め、batchSwap操作を通じて安定したプールで利益を得ることが原因でした。

背景情報

1. スケーリングと丸め

異なるトークンの小数点以下の桁数を標準化するために、Balancer 契約は次のようになります。

  • upscale: 計算を実行する前に、残高と金額を均一な内部精度にアップスケールします。
  • downscale: 結果を元の精度に縮小し、方向性のある丸めを実行します (たとえば、入力は通常、プールが不足しないように切り上げられ、出力パスは多くの場合、下方に切り捨てられます)。

結論: 同じトランザクション内で、異なるステージで使用される非対称の丸め方向は、非常に小さなステップで繰り返し実行されると、体系的なわずかな偏差につながる可能性があります。

2. DとBPTの価格

Balancer V2プロトコルのComposable Stable Pool[3]とフォークプロトコルがこの攻撃の影響を受けました。Stable Poolは、1:1に近い交換比率を維持する(または既知の交換レートで交換される)ことが期待される資産に使用され、大きな価格ショックを引き起こすことなく大規模な交換を可能にするため、類似または関連資産間の資本利用効率が大幅に向上します。

  • プールは Stable Math (Curve ベースの StableSwap モデル) を使用します。ここで、不変量 D はプールの「仮想合計値」を表します。
  • BPT(プールのLPトークン)のおおよその価格は次のとおりです。

上記の式は、Dが理論上小さくなると(実際には資金が引き出されない場合でも)、BPTの価格が安くなることを示しています。BTPはプールシェアを表し、流動性を引き出す際にどれだけのプール準備金を取得できるかを計算するために使用されます。したがって、攻撃者がより多くのBPTを取得できれば、流動性を引き出す際に利益を得ることができます。

攻撃分析

Arbitrum の攻撃トランザクションを例にとると、batchSwap 操作は次の 3 つの段階に分けられます。

フェーズ1:攻撃者はBPTを原資産に償還し、トークンの1つ(cbETH)の残高を四捨五入の臨界値(金額 = 9)に正確に調整します。このステップは、次のフェーズにおける精度損失の土台となります。

フェーズ2:攻撃者は、巧妙に細工された数量(= 8)を用いて、別の原資産(wstETH)とcbETHをスワップします。トークン数量のスケーリング時に切り捨てが行われるため、計算されたΔxはわずかに小さく(8.918から8に)、Δyが過小評価され、不変量D(CurveのStableSwapモデルから導出される)も小さくなります。BPT価格 = D / totalSupplyであるため、BPT価格は人為的に抑制されます。

フェーズ 3: 攻撃者は基礎資産を BPT にリバース スワップし、プール内の残高を復元するとともに、BPT の価格低下から利益を得て、より多くの BPT トークンを取得します。

最後に、攻撃者は別の収益性の高いトランザクションを使用して流動性を引き出し、余分な BPT を使用してプール内の他の基礎資産 (cbETH および wstETH) を取得し、利益を得ました。

トランザクションへの攻撃:

https://app.blocksec.com/explorer/tx/arbitrum/0x7da32ebc615d0f29a24cacf9d18254bea3a2c730084c690ee40238b1d8b55773

利益の出る取引:

https://app.blocksec.com/explorer/tx/arbitrum/0x4e5be713d986bcf4afb2ba7362525622acf9c95310bd77cd5911e7ef12d871a9

参照:

[1]https://x.com/Phalcon_xyz/status/1985262010347696312

[2]https://x.com/Phalcon_xyz/status/1985302779263643915

[3]https://docs-v2.balancer.fi/concepts/pools/composable-stable.html

共有先:

著者:BlockSec

本記事はPANews入駐コラムニストの見解であり、PANewsの立場を代表するものではなく、法的責任を負いません。

記事及び見解は投資助言を構成しません

画像出典:BlockSec侵害がある場合は、著者に削除を連絡してください。

PANews公式アカウントをフォローして、一緒に強気相場と弱気相場を乗り越えましょう
おすすめ記事
11分前
1時間前
2時間前
3時間前
4時間前
12時間前

人気記事

業界ニュース
市場ホットスポット
厳選読み物

厳選特集

App内阅读