# OrionProtocolのリエントランシー攻撃の分析2023年2月2日午後、OrionProtocolはイーサリアムとバイナンススマートチェーン上で契約の脆弱性により再入攻撃を受け、総損失は約290万ドルに達しました。具体的な損失は、イーサリアムチェーン上の2,844,766 USDTとバイナンススマートチェーン上の191,606 BUSDを含みます。## 攻撃プロセス分析攻撃者はまずカスタムトークン契約を展開し、関連する転送および権限付与操作を行い、後続の攻撃の準備をしました。その後、攻撃者はあるDEXのスワップ方法を通じて借入を行い、ExchangeWithAtomic.swapThroughOrionPoolメソッドを呼び出してトークンを交換しました。交換パスは[USDC, 攻撃者トークン, USDT]に設定されています。交換プロセス中、攻撃者はカスタムトークン契約のコールバック機能を利用し、Token.Transferメソッドを通じてExchangeWithAtomic.depositAsset関数を繰り返し呼び出すことで、預金額が継続的に累積しました。最終的に、攻撃者は引き出し操作を通じて利益を得ました。! [PoCによるOrionProtocolリエントランシー攻撃分析](https://img-cdn.gateio.im/social/moments-730464b2d4d7f6e0ff21a0289a2d5d680192837465674839201## 資金の流れ攻撃者の初期資金は、ある取引プラットフォームのホットウォレットアカウントから来ています。攻撃によって得られた1,651のETHのうち、657.5のETHは攻撃者のウォレットアドレスにまだ残っており、残りの部分はミキシングサービスを通じて移動されました。! [PoCによるOrionProtocolリエントランシー攻撃分析])https://img-cdn.gateio.im/social/moments-caac189901b7aaad5abd8be30bb4361a(## 脆弱性分析コアの問題はdoSwapThroughOrionPool関数にあります。この関数は_doSwapTokens関数を呼び出し、トークンの転送後にcurBalance変数を更新します。攻撃者はカスタムトークンのtransfer関数にコールバックロジックを追加し、depositAsset関数を呼び出すことでcurBalanceの更新を誤らせました。攻撃者はその後、フラッシュローンを返済した後にwithdraw関数を呼び出して資金を引き出し、攻撃を完了しました。! [PoCによるOrionProtocolリエントランシー攻撃分析])https://img-cdn.gateio.im/social/moments-7e21c34158a85d4c387fcdbec136d31b(! [PoCによるOrionProtocolリエントランシー攻撃分析])https://img-cdn.gateio.im/social/moments-24819b5154419e86ea523a25a9101f67(## 攻撃の再発攻撃者はカスタムERC20トークン契約を作成し、特定のDEXのフラッシュローン機能を利用して攻撃を行います。主なステップは以下の通りです:1. カスタムトークンを作成し、USDCとUSDTとの取引ペアを確立する2. 初期資金を準備し、流動性を提供する3. ExchangeWithAtomicコントラクトのdepositAsset関数とswapThroughOrionPool関数を呼び出します4. カスタムトークンのtransfer関数にコールバックロジックを追加する5.最後に、引き出し機能を通じて利益資金を引き出します! [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. 定期的に契約の脆弱性スキャンとセキュリティ評価を実施するこの事件は、スマートコントラクトのセキュリティの重要性を再度強調しています。プロジェクトチームは、ユーザー資産を保護し、プラットフォームの信頼性を維持するために、セキュリティ対策を継続的に監視し改善する必要があります。
OrionProtocolは2億9000万人の再入国者から攻撃を受け、資金の一部がコインミキシングサービスに流れ込んでしまいました
OrionProtocolのリエントランシー攻撃の分析
2023年2月2日午後、OrionProtocolはイーサリアムとバイナンススマートチェーン上で契約の脆弱性により再入攻撃を受け、総損失は約290万ドルに達しました。具体的な損失は、イーサリアムチェーン上の2,844,766 USDTとバイナンススマートチェーン上の191,606 BUSDを含みます。
攻撃プロセス分析
攻撃者はまずカスタムトークン契約を展開し、関連する転送および権限付与操作を行い、後続の攻撃の準備をしました。その後、攻撃者はあるDEXのスワップ方法を通じて借入を行い、ExchangeWithAtomic.swapThroughOrionPoolメソッドを呼び出してトークンを交換しました。交換パスは[USDC, 攻撃者トークン, USDT]に設定されています。
交換プロセス中、攻撃者はカスタムトークン契約のコールバック機能を利用し、Token.Transferメソッドを通じてExchangeWithAtomic.depositAsset関数を繰り返し呼び出すことで、預金額が継続的に累積しました。最終的に、攻撃者は引き出し操作を通じて利益を得ました。
! [PoCによるOrionProtocolリエントランシー攻撃分析](https://img-cdn.gateio.im/webp-social/moments-730464b2d4d7f6e0ff21a0289a2d5d68.webp0192837465674839201
資金の流れ
攻撃者の初期資金は、ある取引プラットフォームのホットウォレットアカウントから来ています。攻撃によって得られた1,651のETHのうち、657.5のETHは攻撃者のウォレットアドレスにまだ残っており、残りの部分はミキシングサービスを通じて移動されました。
! [PoCによるOrionProtocolリエントランシー攻撃分析])https://img-cdn.gateio.im/webp-social/moments-caac189901b7aaad5abd8be30bb4361a.webp(
脆弱性分析
コアの問題はdoSwapThroughOrionPool関数にあります。この関数は_doSwapTokens関数を呼び出し、トークンの転送後にcurBalance変数を更新します。攻撃者はカスタムトークンのtransfer関数にコールバックロジックを追加し、depositAsset関数を呼び出すことでcurBalanceの更新を誤らせました。攻撃者はその後、フラッシュローンを返済した後にwithdraw関数を呼び出して資金を引き出し、攻撃を完了しました。
! [PoCによるOrionProtocolリエントランシー攻撃分析])https://img-cdn.gateio.im/webp-social/moments-7e21c34158a85d4c387fcdbec136d31b.webp(
! [PoCによるOrionProtocolリエントランシー攻撃分析])https://img-cdn.gateio.im/webp-social/moments-24819b5154419e86ea523a25a9101f67.webp(
攻撃の再発
攻撃者はカスタムERC20トークン契約を作成し、特定のDEXのフラッシュローン機能を利用して攻撃を行います。主なステップは以下の通りです:
! [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(
セキュリティの推奨事項
類似の攻撃を避けるために、プロジェクトチームは以下の点に注意する必要があります:
この事件は、スマートコントラクトのセキュリティの重要性を再度強調しています。プロジェクトチームは、ユーザー資産を保護し、プラットフォームの信頼性を維持するために、セキュリティ対策を継続的に監視し改善する必要があります。