
リプレイ:MOBOX ハッキング事件の分析
TechFlow厳選深潮セレクト

リプレイ:MOBOX ハッキング事件の分析
2024年3月14日、Optimismチェーン上の分散型貸借プロトコルMOBOXが攻撃を受け、約75万米ドルを損失した。
執筆:Doris
背景
2024年3月14日、SlowMist MistEyeセキュリティ監視システムの警告により、Optimismチェーン上の分散型貸借プロトコルMOBOXが攻撃を受け、約75万ドルを損失したことが判明しました。SlowMistセキュリティチームはこの攻撃イベントを分析し、その結果を以下に共有します。

(https://twitter.com/SlowMist_Team/status/1768167772230713410)
関連情報
攻撃者アドレス:
0x4e2c6096985e0b2825d06c16f1c8cdc559c1d6f8
0x96f004c81d2c7b907f92c45922d38ab870a53945
攻撃されたコントラクトアドレス:
0xae7b6514af26bcb2332fea53b8dd57bc13a7838e
攻撃トランザクション:
0x4ec3061724ca9f0b8d400866dd83b92647ad8c943a1c0ae9ae6c9bd1ef789417
攻撃の核心
今回の攻撃の核心は主に二点あります。第一に、攻撃者はコントラクト内のborrow()関数の脆弱性を悪用し、この関数を呼び出すたびに紹介者アドレスへの報酬分配がトリガーされることを利用しました。報酬の計算は移転されたトークン数量に基づいており、攻撃者は紹介者への報酬を再度攻撃対象コントラクトに戻すことで、次回の借入額を増加させることができました。第二に、borrow()関数の呼び出しのたびにプール内の一部MOトークンがバーンされるため、MOトークンの価格が継続的に上昇し、最終的に攻撃者は繰り返しの借入と報酬の積み重ねによって利益を得ることができました。
トランザクション分析
攻撃全体の流れを見ると、主に脆弱なborrow()関数を繰り返し呼び出し、直後にredeem()を呼び出して償還を行い、その後紹介者に割り当てられたトークンを攻撃コントラクトに戻しています。

borrow()関数を詳しく分析すると、この関数が呼び出されるたびにプール内の一部MOトークンがバーンされていることがわかります。

しかし、借り出されるUSDTの数量はプール内のMOトークンの価格に基づいて計算されます。MOトークンの価格はバーンによって継続的に上昇し、最終的に攻撃者は少量のMOトークンで大量のUSDTを借り出すことができるようになりました。

さらに、毎回の借入ごとに紹介者アドレスに対して配当報酬が支払われ、この関数は入力されたMOトークンの数量に基づいて計算されます。

しかし、紹介者アドレスも攻撃者(0x96f004c81d2c7b907f92c45922d38ab870a53945)が制御しているため、攻撃者は借入操作完了後にこの報酬を自身のコントラクトに戻し、次回の借入額と配当報酬をさらに積み重ねることができました。

このような繰り返し操作により、攻撃者はMOトークンの価格を引き上げ、最終的には極めて少量のMOトークンでコントラクト内の大量のUSDTを借り出すことに成功し、価格が歪んだプール内でUSDTをすべて換金して利益を得て撤退しました。

まとめ
今回の攻撃の核心は、攻撃者がborrow()関数によるプール内トークンのバーンメカニズムを悪用し、資産を繰り返し借用しながらトークン価格を引き上げ、紹介者報酬を得た後、トークンを戻して再び借用するという手法で、報酬と価格操作を繰り返し積み重ねた点にあります。SlowMistセキュリティチームは、プロジェクト側に対して同様の機能関数にロックアップ期間を設けること、および貸借価格モデルの設計時に複数の要因を考慮することを推奨し、同様の事態が再発しないよう注意喚起しています。
TechFlow公式コミュニティへようこそ
Telegram購読グループ:https://t.me/TechFlowDaily
Twitter公式アカウント:https://x.com/TechFlowPost
Twitter英語アカウント:https://x.com/BlockFlow_News










