文:ベオシン 最近、BNB Chain エコシステムプロジェクトの MobiusDAO が攻撃を受け、攻撃者はプロジェクト契約の論理的な脆弱性を利用して大量の MBU トークンを鋳造し、売却して利益を得ました。Beosin セキュリティチームはこの事件の脆弱性分析と資金追跡を行い、その結果を以下のように共有します: 詳細な攻撃ステップ (1) 攻撃者は最初に攻撃コントラクトを展開しました(0x631adFF068D484Ce531Fb519Cda4042805521641)そして、コントラクトを使用してメビウスプロキシコントラクトのデポジット機能を0x95e92B09b89cF31Fa9F1Eca4109A85F88EB08531呼び出し、メビウスコントラクトは9.7x10 ^ 15 MBUトークン以上を鋳造し、それらを攻撃コントラクトに送信しました。 攻撃トランザクションハッシュ:0x2a65254b41b42f39331a0bcc9f893518d6b106e80d9a476b8ca3816325f4a150 (2) 攻撃契約は MBU トークンを受け取った後、PancakeSwap 関連契約を呼び出して MBU トークンを売却し、利益を得ます。 脆弱性分析 Mobius契約の入金関数は、入金を受け取ると同量のMBUトークンを鋳造し、入金者に送信します。この関数では、ユーザーがWBNBを入金するたびに、BNBの価格を取得して、鋳造および転送するMBUトークンの数量を計算します。BNBの価格はgetBNBPriceInUSDT関数から取得され、この関数は小数点以下18桁までの価格を返します。上の図に示すように、返される価格は約656ドルです。 Mobiusのロジックコントラクトはオープンソースではないため、逆コンパイルを通じて、関数が18桁の小数の結果を返す際に、コントラクトが再度その値を10^18倍することで、通常の結果に対して10^18倍のMBUトークンの数量が生成されるという脆弱性があることが判明しました。 盗まれた資金の追跡 Beosin Trace は、盗まれた資金の追跡を行い、次のことを発見しました:盗まれた資金は攻撃者によって約 215 万枚の USDT トークンに変換され、そのうち 135 万枚の USDT は BNB に交換され Tornado Cash に預け入れられ、残りの 80 万枚の USDT はクロスチェーンで Ethereum チェーンの ETH に変換され、その後 Tornado Cash に預け入れられました。Beosin Trace はハッカーに関連するアドレスをブラックリストに追加し、今後も追跡を続けます。 Beosin Traceの分析によると、すべての盗まれた資金はTornado Cashに預けられています。 まとめ この攻撃の核心は、攻撃者がプロジェクトコントラクトの算術エラーを利用して、大量のトークンを鋳造し、それらを販売して利益を得たことです。 これは非常に簡単に見つけることができるコードのバグでしたが、Mobiusのプロジェクトチームは、バグを見つけるための契約に対して徹底的なコードテストを以前に実施しておらず、監査も行わなかったため、215万ドル以上の損失が発生しました。 Beosinのセキュリティチームは、同様の状況を避けるために、プロジェクトチームがプロジェクトの契約コードの監査とセキュリティテストを強化すべきだと提案した。
215万ドルの損失! MobiusDAOインシデントの脆弱性分析と盗まれた資金の追跡
文:ベオシン
最近、BNB Chain エコシステムプロジェクトの MobiusDAO が攻撃を受け、攻撃者はプロジェクト契約の論理的な脆弱性を利用して大量の MBU トークンを鋳造し、売却して利益を得ました。Beosin セキュリティチームはこの事件の脆弱性分析と資金追跡を行い、その結果を以下のように共有します:
詳細な攻撃ステップ
(1) 攻撃者は最初に攻撃コントラクトを展開しました(0x631adFF068D484Ce531Fb519Cda4042805521641)
そして、コントラクトを使用してメビウスプロキシコントラクトのデポジット機能を0x95e92B09b89cF31Fa9F1Eca4109A85F88EB08531呼び出し、メビウスコントラクトは9.7x10 ^ 15 MBUトークン以上を鋳造し、それらを攻撃コントラクトに送信しました。
攻撃トランザクションハッシュ:0x2a65254b41b42f39331a0bcc9f893518d6b106e80d9a476b8ca3816325f4a150
(2) 攻撃契約は MBU トークンを受け取った後、PancakeSwap 関連契約を呼び出して MBU トークンを売却し、利益を得ます。
脆弱性分析
Mobius契約の入金関数は、入金を受け取ると同量のMBUトークンを鋳造し、入金者に送信します。この関数では、ユーザーがWBNBを入金するたびに、BNBの価格を取得して、鋳造および転送するMBUトークンの数量を計算します。
BNBの価格はgetBNBPriceInUSDT関数から取得され、この関数は小数点以下18桁までの価格を返します。上の図に示すように、返される価格は約656ドルです。
Mobiusのロジックコントラクトはオープンソースではないため、逆コンパイルを通じて、関数が18桁の小数の結果を返す際に、コントラクトが再度その値を10^18倍することで、通常の結果に対して10^18倍のMBUトークンの数量が生成されるという脆弱性があることが判明しました。
盗まれた資金の追跡
Beosin Trace は、盗まれた資金の追跡を行い、次のことを発見しました:盗まれた資金は攻撃者によって約 215 万枚の USDT トークンに変換され、そのうち 135 万枚の USDT は BNB に交換され Tornado Cash に預け入れられ、残りの 80 万枚の USDT はクロスチェーンで Ethereum チェーンの ETH に変換され、その後 Tornado Cash に預け入れられました。Beosin Trace はハッカーに関連するアドレスをブラックリストに追加し、今後も追跡を続けます。
Beosin Traceの分析によると、すべての盗まれた資金はTornado Cashに預けられています。
まとめ
この攻撃の核心は、攻撃者がプロジェクトコントラクトの算術エラーを利用して、大量のトークンを鋳造し、それらを販売して利益を得たことです。 これは非常に簡単に見つけることができるコードのバグでしたが、Mobiusのプロジェクトチームは、バグを見つけるための契約に対して徹底的なコードテストを以前に実施しておらず、監査も行わなかったため、215万ドル以上の損失が発生しました。 Beosinのセキュリティチームは、同様の状況を避けるために、プロジェクトチームがプロジェクトの契約コードの監査とセキュリティテストを強化すべきだと提案した。