Aurellion、Diamondコントラクトの欠陥悪用で約455,003 USDC流出

SlowMistによると、Aurellion Labs関連のDiamondコントラクトに存在する保護されていないinitialize(address)関数により、リエントラントな所有権の乗っ取り、悪意あるFacetの注入、約455,003 USDCの窃取が可能となった。

USDC

要約

Aurellionは、約455,003 USDCが流出するエクスプロイト被害を受けた。SlowMistによると、攻撃者はSafeOwnable Facet内の保護されていないinitialize(address)関数を悪用し、リエントラントな初期化によってDiamondコントラクトの所有権を変更した。その後、diamondCutを呼び出し、pullERC20機能を持つ悪意あるFacetを追加した。このコントラクトレベルのアクセスにより、攻撃者はUSDCを移動させることが可能となり、モジュラー型スマートコントラクトシステムにおける初期化保護の不備が所有権侵害と資金窃取につながり得ることが示された。

用語解説
  • Diamond contract: ロジックを複数のFacetに分離するモジュラー型スマートコントラクトのアーキテクチャであり、中核コントラクトを置き換えることなくアップグレードや機能変更を可能にする。
  • Facet: Diamondアーキテクチャにおけるコントラクトモジュールで、特定の機能を提供し、アップグレードを通じて追加、置換、削除が可能である。
  • diamondCut: コントラクト内のFacetを変更するために使われるDiamond標準の関数であり、所有権の乗っ取り後に悪用されると悪意あるロジックを注入できる。