# OrionProtocolのリエントランシー攻撃の分析2023年2月2日午後、イーサリアムとバイナンススマートチェーン上のOrionProtocolプロジェクトは、契約の脆弱性によりリ入攻撃を受けました。攻撃者はイーサリアムチェーンから約284万USDTを盗み、バイナンススマートチェーンから約19万BUSDを盗み、総損失額は約290万ドルに達しました。## 攻撃プロセス分析攻撃者はまずカスタムトークン契約を展開し、一連の準備作業を行いました。その後、攻撃者はあるDEXのスワップ機能を通じて資金を借り入れ、OrionProtocolのExchangeWithAtomic.swapThroughOrionPoolメソッドを呼び出してトークンの交換を行いました。交換経路には攻撃者が作成したトークン契約のアドレスが含まれています。交換プロセス中に、攻撃者はカスタムトークン契約のコールバック機能を利用して、ExchangeWithAtomic.depositAssetメソッドを繰り返し呼び出し、預金額が何度も加算される事態を引き起こしました。最終的に、攻撃者は引き出し操作を通じて利益を得ました。! [PoCによるOrionProtocolリエントランシー攻撃分析](https://img-cdn.gateio.im/social/moments-730464b2d4d7f6e0ff21a0289a2d5d680192837465674839201## 資金の流れ追跡によると、攻撃者の初期資金はある取引プラットフォームのホットウォレットから来ています。攻撃によって得られた1651ETHのうち、約657.5ETHはまだ攻撃者のウォレットアドレスに残っており、残りはミキシングサービスを通じて移転されています。! [PoCによるOrionProtocolリエントランシー攻撃分析])https://img-cdn.gateio.im/social/moments-caac189901b7aaad5abd8be30bb4361a(## 脆弱性分析コアの問題は、ExchangeWithAtomicコントラクトのdoSwapThroughOrionPool関数にあります。この関数は、トークン転送を実行した後にcurBalance変数を更新し、攻撃者に再入可能な機会を提供します。攻撃者はカスタムトークンのtransfer関数にコールバックロジックを追加することで、depositAsset関数を繰り返し呼び出し、curBalanceが誤って更新されることを引き起こします。攻撃者はこの脆弱性を利用して、フラッシュローンを返済した後に過剰な資金を抽出することに成功しました。! [PoCによるOrionProtocolリエントランシー攻撃分析])https://img-cdn.gateio.im/social/moments-7e21c34158a85d4c387fcdbec136d31b(! [PoCによるOrionProtocolリエントランシー攻撃分析])https://img-cdn.gateio.im/social/moments-24819b5154419e86ea523a25a9101f67(! [PoCによるOrionProtocolリエントランシー攻撃分析])https://img-cdn.gateio.im/social/moments-7c4bde9d6a35da4304844a3bbb934fae(## 攻撃の再発研究者は攻撃プロセスをシミュレーションするために一部のPoCコードを提供しました。このコードにはカスタムトークンの作成、流動性プールの構築、操作の権限付与、攻撃の実行などのステップが含まれています。テスト結果は、攻撃の再現が成功し、実際の攻撃の呼び出しスタック結果と一致したことを示しています。! [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. 合理な権限管理と制限メカニズムを実施し、一度の攻撃による損失を軽減します。今回の出来事は、Web3プロジェクトの開発チームに対して、革新を追求する際にはスマートコントラクトの安全性を必ず重視する必要があることを再度思い出させています。より安全で信頼性のあるインフラを構築することが、業界全体の健全な発展を促進する唯一の方法です。
OrionProtocolがリ入攻撃を受け、290万ドルの損失についてデプス分析
OrionProtocolのリエントランシー攻撃の分析
2023年2月2日午後、イーサリアムとバイナンススマートチェーン上のOrionProtocolプロジェクトは、契約の脆弱性によりリ入攻撃を受けました。攻撃者はイーサリアムチェーンから約284万USDTを盗み、バイナンススマートチェーンから約19万BUSDを盗み、総損失額は約290万ドルに達しました。
攻撃プロセス分析
攻撃者はまずカスタムトークン契約を展開し、一連の準備作業を行いました。その後、攻撃者はあるDEXのスワップ機能を通じて資金を借り入れ、OrionProtocolのExchangeWithAtomic.swapThroughOrionPoolメソッドを呼び出してトークンの交換を行いました。交換経路には攻撃者が作成したトークン契約のアドレスが含まれています。
交換プロセス中に、攻撃者はカスタムトークン契約のコールバック機能を利用して、ExchangeWithAtomic.depositAssetメソッドを繰り返し呼び出し、預金額が何度も加算される事態を引き起こしました。最終的に、攻撃者は引き出し操作を通じて利益を得ました。
! [PoCによるOrionProtocolリエントランシー攻撃分析](https://img-cdn.gateio.im/webp-social/moments-730464b2d4d7f6e0ff21a0289a2d5d68.webp0192837465674839201
資金の流れ
追跡によると、攻撃者の初期資金はある取引プラットフォームのホットウォレットから来ています。攻撃によって得られた1651ETHのうち、約657.5ETHはまだ攻撃者のウォレットアドレスに残っており、残りはミキシングサービスを通じて移転されています。
! [PoCによるOrionProtocolリエントランシー攻撃分析])https://img-cdn.gateio.im/webp-social/moments-caac189901b7aaad5abd8be30bb4361a.webp(
脆弱性分析
コアの問題は、ExchangeWithAtomicコントラクトのdoSwapThroughOrionPool関数にあります。この関数は、トークン転送を実行した後にcurBalance変数を更新し、攻撃者に再入可能な機会を提供します。攻撃者はカスタムトークンのtransfer関数にコールバックロジックを追加することで、depositAsset関数を繰り返し呼び出し、curBalanceが誤って更新されることを引き起こします。
攻撃者はこの脆弱性を利用して、フラッシュローンを返済した後に過剰な資金を抽出することに成功しました。
! [PoCによるOrionProtocolリエントランシー攻撃分析])https://img-cdn.gateio.im/webp-social/moments-7e21c34158a85d4c387fcdbec136d31b.webp(
! [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コードを提供しました。このコードにはカスタムトークンの作成、流動性プールの構築、操作の権限付与、攻撃の実行などのステップが含まれています。テスト結果は、攻撃の再現が成功し、実際の攻撃の呼び出しスタック結果と一致したことを示しています。
! [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(
セキュリティの提案
契約設計においては、多様なトークンや交換経路がもたらす可能性のあるセキュリティリスクを考慮する必要があります。
"チェック-効果-相互作用"(Checks-Effects-Interactions)のコーディングパターンに従い、最初に条件をチェックし、その後に状態変数を更新し、最後に外部契約と相互作用します。
外部呼び出しを処理する際は、特に資金移動に関する操作については特に注意を払う必要があります。
定期的にセキュリティ監査を行い、潜在的な脆弱性を迅速に発見し修正します。
合理な権限管理と制限メカニズムを実施し、一度の攻撃による損失を軽減します。
今回の出来事は、Web3プロジェクトの開発チームに対して、革新を追求する際にはスマートコントラクトの安全性を必ず重視する必要があることを再度思い出させています。より安全で信頼性のあるインフラを構築することが、業界全体の健全な発展を促進する唯一の方法です。