背景の紹介
2024 年 11 月 25 日、私たちは BNB スマート チェーンへの攻撃を監視しました。攻撃されたプロジェクトはDCFでした。攻撃トランザクションは
https://bscscan.com/tx/0xb375932951c271606360b6bf4287d080c5601f4f59452b0484ea6c856defd6fd
この攻撃により、総額約 44 万米ドルの損失が発生しました。
攻撃とインシデントの分析
まず、攻撃者はフラッシュローンを使用して、一連の PancakeSwapV3 プールから大量の BUSD を借りました。
その後、攻撃者は、PancakeSwap のスワップ関数を使用して、変換されたトークンを転送し、その後コールバック関数でトークンを支払い、一連の再帰的なスワップを通じて大量の BUSD を取得しました。
その後、攻撃者は攻撃を実行するために使用されたプリンシパルを入手した後、DCF プロジェクトへの攻撃を開始しました。
最初のステップ:
攻撃者は保有するすべての DCF を攻撃コントラクトに転送し、
ステップ 2:
攻撃者は 80,435,691 BUSD を使用して 4,039 DCF を 0x16600100b04d17451a03575436b4090f6ff8f404 と交換しました。
ステップ 3:
攻撃者は残りの 29,919,679 BUSD を使用して、1,062,693 DCT を攻撃契約と交換しました。
ステップ 4:
攻撃者は転送を使用して 82 DCF を PancakeSwap ペア BUSD-DCF に転送しました。DCF 転送の具体的な実装を見てみましょう。
ご覧のとおり、to が PancakeSwap ペアのアドレスである場合、赤枠内のコードが実行され、ここに脆弱性が表示されます。 Deadcfg が 2 であるため、このコードは PancakeSwap ペアから転送された DCF 量の約半分を破棄し、最終的に同期します。この操作により、PancakeSwap ペア BUSD-DCF の DCF の量が大幅に減少し、DCF の価格が大幅に上昇します。この操作により、DCF価格は171BUSDから1,708,540,682,977,674BUSDに、9,991,465,982,325倍に増加しました。 DCFの伝達関数内のコードliquidHepler.addLiquidityは、PancakeSwapペアBUSDDCT内のDCTの一部を消費するため、DCTの価格も上昇します。
最後に、攻撃者は手に残っている DCF を使用して、PancakeSwap ペア BUSD-DCF の 72,612,978 BUSD を空にしました。上記の操作により DCT の価格も上昇したため、攻撃者が以前 29,919,679 BUSD と交換した DCT の価値は 38,302,987 BUSD となりました。最終的に、攻撃者がフラッシュローンで借りた BUSD を返還した後、利益は 442,028 BUSD となりました。
要約する
この脆弱性の原因は、プロジェクト チームが DCF の転送機能を実装する際に間違ったロジックを書いたことにあります。これにより、攻撃者はペアの DCF をスワップ ペアに転送して破壊し、DCF の価格を簡単に操作できるようになります。アービトラージがついに完了しました。プロジェクト当事者は、オンライン化する前に契約を監査する際に、相互監査のために複数の監査会社を選択するよう努めることをお勧めします。