Source:Beosin
2024年3月5日夜遅く(BST)、Beosin Traceプラットフォームによると、ArbitrumチェーンのWooPPV2契約プロジェクトはが価格操作攻撃を受け、約850万ドルの損失が発生した。ハッカーはLightning Loanを使ってUSDC.eとWooトークンを貸し出し、WooPPV2契約を通じてトークンの交換を頻繁に行った。WooPPV2契約の価格計算に欠陥があったため、ハッカーは交換プロセス中に価格を操作することができ、結果として大量のWooトークンが盗まれました。Beosinのセキュリティチームはこの事件を最初に分析しました。
脆弱性の分析
WooPPV2契約にはスワップ関数があり、ユーザーがトークン交換を行うために呼び出すことができます。ユーザーはトークンを交換するためにこの関数を呼び出すことができ、ここでメインのUSDC.eとWooの2つの交換(以下は分析するUSDC.eとWooの間の交換に従っている)、quoteToken変数内の関数は、USDC.e.
_sellQuote 関数と _sellBase 関数はほとんど同じロジックで、どちらも価格に基づいて交換するトークン数を計算し、トークンを呼び出し元に送信します。sellQuote関数は、呼び出し元がWooトークンをUSDC.eで交換するときに呼び出されます。主な関数は、Wooトークンの価格を保持する構造体を返すために使用されるstateと_calcBaseAmountSellQuote、および交換するトークンの数と新しい価格を計算する関数である_calcBaseAmountSellQuoteです。数量と新しい価格を計算します。
次に_calcBaseAmountSellQuote関数のロジックを見てみましょう。主なロジックはUSD.eをWooの価格で割った数、交換可能なWooの数、現在の価格と新しい価格の交換後に計算された交換数です。
_sellBase関数は_sellQuote関数と同じです。calcQuoteAmountSellBase関数は少し異なり、主なロジックはWooの数にWooの価格を掛け合わせ、交換可能なUSDC.eの数を得ることです。
この換金ロジックから問題が見つかります。Uniswapや他の伝統的なスワップの商品-定数モデルは異なっており、このモデルは直接価格に基づいて乗算と除算を行って数量を計算するため、償還プロセスでスリッページはありませんが、価格は再び償還によって変更されます。呼び出す側が計算に気をつければ、トークンを中に仕舞うことができる。
例えば:
プールに当初1,000枚のAトークンと1,000枚のBトークンがあり、Bトークンの価格が1だとします。次に、交換した500枚のBトークンを使って、1,000枚のAトークンと交換し、最終的にプールは500:1,000となり、500枚のAトークンが無から設定されます。
今回のケースでは、攻撃者はこのセキュリティ問題を利用しました。
攻撃の流れ
このインシデントでは、攻撃者は同じ手法を何度か使っています。style="text-align: left;">0xe80a16678b5008d5be1484ec6e9e77dc6307632030553405863ffb38c1f94266このトランザクションを例として挙げます。
1.攻撃者はライトニングクレジットを通じて1,000万USDC.e以上と272万Wooトークンを貸し出しました。
2.次に、攻撃者は10万USDC.eを使って3回に分けてWooトークンと交換します。Wooの価格はまだ通常の価格であり、攻撃者は現在800万以上のWooトークンを保有しています。
3.攻撃者は、Wooトークンを3回に分けて購入します。その直後、攻撃者は直接800万以上のWooトークンを使ってUSDC.eと交換しました。上記の問題により、この時、800万以上のWooはすべて通常の価格で交換され、200万以上のUSDC.eと交換され、上記の計算式によると、この時のWooの価格は7と計算され、1000万倍近く縮小しました。
4.結局、Wooトークンの価格が極端に小さかったため、攻撃者は非常に少ない数のUSDC.eを使って、800万以上のWooトークンを換金しました。Wooトークンを交換し、最終的にLightning Loanに戻して市場から退出しました。
資金調達トラッカー
。
ハッキング後、攻撃者は200ETHをクロスチェーンブリッジ経由でイーサチェーン上のアドレスに送金し、残りの2,000ETH以上はアービトラムチェーン上のアドレスに保管されました。
アービトラムチェーンに対する今回の価格操作攻撃を考慮すると、仮想資産空間におけるセキュリティリスクの重要性を認識することが重要です。
。