# OrionProtocolのリエントランシー攻撃の分析2023年2月2日の午後、イーサリアムとバイナンススマートチェーン上のOrionProtocolの契約は脆弱性のために再入攻撃を受けました。攻撃者は約290万ドルの資金を盗み出し、その中にはイーサリアムチェーン上の2,844,766 USDTとバイナンススマートチェーン上の191,606 BUSDが含まれています。## 攻撃プロセスの分析攻撃者はまずカスタムトークン契約を展開し、そのトークンの転送と承認操作を行い、後続の攻撃の準備を整えました。次に、攻撃者はUniswap V2のスワップ機能を利用して借り入れを行い、OrionProtocolのExchangeWithAtomic.swapThroughOrionPoolメソッドを呼び出してトークンの交換を行いました。! [PoCによるOrionProtocolリエントランシー攻撃分析](https://img-cdn.gateio.im/social/moments-730464b2d4d7f6e0ff21a0289a2d5d680192837465674839201交換経路は次のように設定されています:USDC → 攻撃者のカスタムトークン → USDT交換プロセス中、攻撃者のカスタムトークンコントラクトにコールバック機能が含まれているため、トークン転送時にExchangeWithAtomic.depositAssetメソッドを再度呼び出すことが可能です。この再入攻撃により、預金額が重複して計算され、最終的に攻撃者が実際に預け入れた金額を超える資金を引き出すことを許可します。! [PoCによるOrionProtocolリエントランシー攻撃分析])https://img-cdn.gateio.im/social/moments-caac189901b7aaad5abd8be30bb4361a(## 資金の流れ攻撃者の初期資金は、ある大手取引所のホットウォレットに由来しています。攻撃によって得られた1,651 ETHのうち、657.5 ETHは攻撃者のウォレットアドレスに残っており、残りは混合サービスを通じて移動されました。! [PoCによるOrionProtocolリエントランシー攻撃分析])https://img-cdn.gateio.im/social/moments-7e21c34158a85d4c387fcdbec136d31b(## 脆弱性分析脆弱性の核心的な問題は、doSwapThroughOrionPool関数に存在します。この関数は、トークン転送を実行した後にcurBalance変数を更新するため、再入攻撃の条件を生み出します。攻撃者は、カスタムトークンのtransfer関数にコールバックロジックを追加することで、curBalanceが更新される前にdepositAsset関数を繰り返し呼び出すことができ、結果として残高計算が誤ってしまいます。! [PoCによるOrionProtocolリエントランシー攻撃分析])https://img-cdn.gateio.im/social/moments-24819b5154419e86ea523a25a9101f67(! [PoCによるOrionProtocolリエントランシー攻撃分析])https://img-cdn.gateio.im/social/moments-7c4bde9d6a35da4304844a3bbb934fae(! [PoCによるOrionProtocolリエントランシー攻撃分析])https://img-cdn.gateio.im/social/moments-7239f8886fe83c1da8b1b42545185811(! [PoCによるOrionProtocolリエントランシー攻撃分析])https://img-cdn.gateio.im/social/moments-e5042932f0e1b7fa96e3f6e749231957(! [PoCによるOrionProtocolリエントランシー攻撃分析])https://img-cdn.gateio.im/social/moments-4bd31735de09c63c490488e887118038(! [PoCによるOrionProtocolリエントランシー攻撃分析])https://img-cdn.gateio.im/social/moments-cd401091e63ab21864f39cd650014b97(! [PoCによるOrionProtocolリエントランシー攻撃分析])https://img-cdn.gateio.im/social/moments-e010d0f0c02fb8bbc648f755b0ac464c(! [PoCによるOrionProtocolリエントランシー攻撃分析])https://img-cdn.gateio.im/social/moments-f3c5f9416cfb9b7b791d86eeffb933be(## 予防に関する推奨事項同様の攻撃を防ぐために、プロジェクトチームは以下の点に注意する必要があります:1. 厳格なアクセス制御と権限管理を実施します。2. スマートコントラクトを書く際は「チェック-エフェクト-インタラクション」(Checks-Effects-Interactions)パターンに従ってください。3. 再入攻撃を防ぐために、再入ロックや類似のメカニズムを使用します。4. トークン交換に関わる機能については、さまざまなトークンの種類と交換経路がもたらす可能性のあるセキュリティリスクを考慮する必要があります。5. 包括静的分析、動的テスト、そして人工レビューを行う全面的なセキュリティ監査。6. 契約活動を継続的に監視し、迅速な対応メカニズムを確立する。今回の事件は、スマートコントラクトの開発と展開において、セキュリティが常に最優先の考慮事項であるべきことを再確認させるものです。プロジェクトチームは、ユーザー資産を保護し、プラットフォームの信用を維持するために、セキュリティ対策を継続的に改善する必要があります。
OrionProtocolは、290万ドルの再入攻撃資金の盗難分析と防止の推奨事項を被っています
OrionProtocolのリエントランシー攻撃の分析
2023年2月2日の午後、イーサリアムとバイナンススマートチェーン上のOrionProtocolの契約は脆弱性のために再入攻撃を受けました。攻撃者は約290万ドルの資金を盗み出し、その中にはイーサリアムチェーン上の2,844,766 USDTとバイナンススマートチェーン上の191,606 BUSDが含まれています。
攻撃プロセスの分析
攻撃者はまずカスタムトークン契約を展開し、そのトークンの転送と承認操作を行い、後続の攻撃の準備を整えました。次に、攻撃者はUniswap V2のスワップ機能を利用して借り入れを行い、OrionProtocolのExchangeWithAtomic.swapThroughOrionPoolメソッドを呼び出してトークンの交換を行いました。
! [PoCによるOrionProtocolリエントランシー攻撃分析](https://img-cdn.gateio.im/webp-social/moments-730464b2d4d7f6e0ff21a0289a2d5d68.webp0192837465674839201
交換経路は次のように設定されています:USDC → 攻撃者のカスタムトークン → USDT
交換プロセス中、攻撃者のカスタムトークンコントラクトにコールバック機能が含まれているため、トークン転送時にExchangeWithAtomic.depositAssetメソッドを再度呼び出すことが可能です。この再入攻撃により、預金額が重複して計算され、最終的に攻撃者が実際に預け入れた金額を超える資金を引き出すことを許可します。
! [PoCによるOrionProtocolリエントランシー攻撃分析])https://img-cdn.gateio.im/webp-social/moments-caac189901b7aaad5abd8be30bb4361a.webp(
資金の流れ
攻撃者の初期資金は、ある大手取引所のホットウォレットに由来しています。攻撃によって得られた1,651 ETHのうち、657.5 ETHは攻撃者のウォレットアドレスに残っており、残りは混合サービスを通じて移動されました。
! [PoCによるOrionProtocolリエントランシー攻撃分析])https://img-cdn.gateio.im/webp-social/moments-7e21c34158a85d4c387fcdbec136d31b.webp(
脆弱性分析
脆弱性の核心的な問題は、doSwapThroughOrionPool関数に存在します。この関数は、トークン転送を実行した後にcurBalance変数を更新するため、再入攻撃の条件を生み出します。攻撃者は、カスタムトークンのtransfer関数にコールバックロジックを追加することで、curBalanceが更新される前にdepositAsset関数を繰り返し呼び出すことができ、結果として残高計算が誤ってしまいます。
! [PoCによるOrionProtocolリエントランシー攻撃分析])https://img-cdn.gateio.im/webp-social/moments-24819b5154419e86ea523a25a9101f67.webp(
! [PoCによるOrionProtocolリエントランシー攻撃分析])https://img-cdn.gateio.im/webp-social/moments-7c4bde9d6a35da4304844a3bbb934fae.webp(
! [PoCによるOrionProtocolリエントランシー攻撃分析])https://img-cdn.gateio.im/webp-social/moments-7239f8886fe83c1da8b1b42545185811.webp(
! [PoCによるOrionProtocolリエントランシー攻撃分析])https://img-cdn.gateio.im/webp-social/moments-e5042932f0e1b7fa96e3f6e749231957.webp(
! [PoCによるOrionProtocolリエントランシー攻撃分析])https://img-cdn.gateio.im/webp-social/moments-4bd31735de09c63c490488e887118038.webp(
! [PoCによるOrionProtocolリエントランシー攻撃分析])https://img-cdn.gateio.im/webp-social/moments-cd401091e63ab21864f39cd650014b97.webp(
! [PoCによるOrionProtocolリエントランシー攻撃分析])https://img-cdn.gateio.im/webp-social/moments-e010d0f0c02fb8bbc648f755b0ac464c.webp(
! [PoCによるOrionProtocolリエントランシー攻撃分析])https://img-cdn.gateio.im/webp-social/moments-f3c5f9416cfb9b7b791d86eeffb933be.webp(
予防に関する推奨事項
同様の攻撃を防ぐために、プロジェクトチームは以下の点に注意する必要があります:
今回の事件は、スマートコントラクトの開発と展開において、セキュリティが常に最優先の考慮事項であるべきことを再確認させるものです。プロジェクトチームは、ユーザー資産を保護し、プラットフォームの信用を維持するために、セキュリティ対策を継続的に改善する必要があります。