14,477,791.69USDeを46,309,490.86FRAXに交換すると、USDeDAIのUSDeの数が増えて価格が下がり、FRAXの数が減って価格が上がる
(4)GHOUSDe.exchange4,925,427.20USDeを4,825,479.07GHOと交換することで、USDeDAIのUSDeの数量が増え価格が下がり、GHOの数量が減り価格が上がる
(5) USDeUSDC.exchange
14,886,912.83USDeを14,711,447.94USDCに交換することで、USDeDAIのUSDeの数が増えて価格が下がり、USDCの数が減って価格が上がる
上記。交換後、5つのプールにおけるUSDeの価格は減少する。これにより、最終的にUSDeの価格は大きく下落した。
4.レンディングポジションを継続的に作る、つまり他の資産(WETH、WBTC、DAI)をLendingPool契約に入金し、sUSDeを貸し出す。 sUSDeの価格が大幅に下落したため、貸し出されたsUSDeの量は価格下落前よりもはるかに多くなった。
5.ステップ3と同様です。逆の操作でススデの価格を引き上げる。
サウジアラビアで借りたポジションの価格が上がるにつれて、サウジアラビアで借りたポジションの価格も上がります。ステップ4で借りたポジションの価値が担保の価値を上回り、清算の基準を満たします。
6.借りたポジションを一括清算し、清算報酬を得る
7.ローンを返済し、原資産WETH、WBTC、DAI、sUSDeを引き出す。
8.sUSDeを再びレンディングプールに預け、その時点でsUSDeの価格が膨張し、DAIやUSDを含む他の資産からさらに貸し借りできるようになります。
9.left;">9. トークンを換金してライトニング・ローンを返済。最終利益1,946.89ETH
II.脆弱性分析
上記の分析を通じて、攻撃プロセス全体には、多数のフラッシュレンディングとsUSDeの価格の複数の操作が存在することが判明した。 sUSDeを担保にする場合、それは貸し出される資産の数に影響を与え、sUSDeを貸す場合、それは貸出金利に影響を与え、それは清算係数(健全係数)に影響を与える。
攻撃者はこれを利用して、フラッシュレンディングによってsUSDeの価格を叩き下げ、他の資産を担保に入れ、大量のsUSDeを貸し出し、その後sUSDeの価格を上げ、担保に入れた資産を利益で清算し、残りのsUSDeを担保にして他の資産を貸し出し、最後にフラッシュレンディングを返済すれば攻撃は完了です。
上記のステップ3から、攻撃者はCurve FinanceのUSDe/rvUSD、USDe/AI、FRAX/SDe、GHO/SDe、USDe/SDCプールでUSDeの価格をコントロールすることで、sUSDeの価格を操作していることがわかりました。sUSDe。価格の読み取り機能は以下の通りです:
この場合、スーデ価格は11の価格から計算されます。CurveFinanceによって読み取られ、最後の1つはUniswapV3によって提供されます。
CurveFinanceから読み取られる価格は、USDe/rvUSD、USDe/AI、FRAX/SDe、GHO/SDe、USD/SDCの5つのプールから提供されます。
返される価格は、uwuOracleによって読み取られた価格であり、これはCurveFinance取引プール契約によってprice_oracle(0)とget_p(0)によって計算されます。
(1) 価格はChainlinkで提供される価格であり、操作可能ではありません;
(2) トレーディングプールのパラメーター
攻撃者は、取引プール内のトークン数を操作することでget_p(0)の戻り値を操作し、これにより価格操作が可能になります。
3つのセキュリティ上の推奨事項
この攻撃に対しては、開発プロセスにおいて以下の注意事項を守る必要があります。(1)価格操作の脆弱性に対しては、チェーン下の価格予測マシンを使用することで、価格操作を回避することができます。
(2)プロジェクトが稼動する前に、スマートコントラクトの第三者専門監査会社による監査を受ける必要がある。