慢雾:DFX Financeが攻撃を受け、Curve契約のフラッシュローン関数に再入防止が施されていなかったため。
ChainCatcher のメッセージによると、SlowMist セキュリティチームの情報に基づき、ETH チェーン上の DFX Finance プロジェクトが攻撃を受け、攻撃者は約 231,138 米ドルの利益を得たとのことです。SlowMist セキュリティチームは以下のように速報を共有しました:
攻撃者はまず、Curve というコントラクトの viewDeposit 関数を呼び出してコントラクト内の預金状況を確認し、その後、返された預金状況に基づいて適切なフラッシュローンで借りる金額を構築しました。
その後、Curve コントラクトの flash 関数を使用してフラッシュローンを実行しました。この関数には再入防止のロックがなかったため、攻撃者はフラッシュローン内の flashCallback 関数を利用してコントラクトの deposit 関数を呼び出し、預金を行いました。
預金関数は外部で ProportionalLiquidity コントラクトの proportionalDeposit 関数を呼び出し、この関数内で第二ステップで借りた資金を Curve コントラクトに戻し、攻撃コントラクトのために預金の記帳を行い、攻撃コントラクトに預金証明書を発行しました。
再入を利用して預金関数を呼び出し、資金を Curve コントラクトに戻したため、フラッシュローンの返済の残高チェックを通過しました。
最後に withdraw 関数を呼び出して引き出しを行い、引き出し時には第三ステップでの預金に対して攻撃コントラクトの記帳を燃焼させ、約 2,283,092,402 枚の XIDR トークンと 99,866 枚の USDC トークンを成功裏に引き出して利益を得ました。
今回の攻撃の主な原因は、Curve コントラクトのフラッシュローン関数に再入防止がなかったため、攻撃者が預金関数を再入してトークンを転送し、フラッシュローンの返済の残高判断を通過したことです。預金時に記帳があったため、攻撃者は成功裏に引き出して利益を得ることができました。(出典リンク)








