# OrionProtocolのリエントランシー攻撃の分析2023年2月2日15:40:20(UTC時間)、イーサリアムとバイナンススマートチェーン上のOrionProtocolが契約の脆弱性により再入攻撃を受けました。攻撃者は約290万ドルの資金を成功裏に盗取し、その中にはイーサリアム上の2,844,766 USDTとバイナンススマートチェーン上の191,606 BUSDが含まれています。! [PoCによるOrionProtocolリエントランシー攻撃分析](https://img-cdn.gateio.im/social/moments-730464b2d4d7f6e0ff21a0289a2d5d680192837465674839201## 攻撃プロセスの分析攻撃者は最初にカスタムトークンコントラクトをデプロイし、関連する転送および承認操作を実行して、その後の攻撃に備えました。 その後、攻撃者はUniswap V2のスワップ機能を通じてお金を借り、OrionProtocolのExchangeWithAtomic.swapThroughOrionPoolメソッドを呼び出してトークンを交換します。交換経路は[USDC, 攻撃者トークン, USDT]に設定されており、攻撃者トークンが重要です。交換プロセス中、このカスタムトークン契約にコールバック機能が含まれているため、攻撃者はトークンの転送時にExchangeWithAtomic.depositAssetメソッドをトリガーし、再入攻撃を実現できます。これにより、預金額が誤って累積され、最終的に攻撃者は引き出し操作を通じて利益を得ました。! [PoCによるOrionProtocolリエントランシー攻撃分析])https://img-cdn.gateio.im/social/moments-caac189901b7aaad5abd8be30bb4361a(! [PoCによるOrionProtocolリエントランシー攻撃分析])https://img-cdn.gateio.im/social/moments-7e21c34158a85d4c387fcdbec136d31b(## 資金の流れ攻撃者の初期資金は、ある取引プラットフォームのホットウォレットから来ています。攻撃で得られた1,651 ETHのうち、657.5 ETHは攻撃者のウォレットアドレスに残っており、残りはミキシングサービスを通じて移転されています。! [PoCによるOrionProtocolリエントランシー攻撃分析])https://img-cdn.gateio.im/social/moments-24819b5154419e86ea523a25a9101f67(## 脆弱性分析脆弱性の核心は、ExchangeWithAtomicコントラクト内のdoSwapThroughOrionPoolおよび_doSwapTokens関数にあります。これらの関数は、トークン転送を実行した後にcurBalance変数を更新するため、再入攻撃の条件を作り出します。攻撃者はカスタムトークンのtransfer関数にコールバックロジックを追加することにより、depositAsset関数を成功裏にトリガーし、curBalanceが誤って更新されました。最終的に、攻撃者はフラッシュローンを返済した後、withdraw関数を通じて過剰資金を引き出しました。! [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. Checks-Effects-Interactionsパターンに従う:外部呼び出しを行う前にコントラクトの状態を更新します。2. 再入ロックを使用する:敏感な操作が始まる前にロックし、終了後にロックを解除して再入を防ぐ。3. 様々なトークンと交換パスを総合的に考慮する:交換機能を設計する際には、様々な可能性のある状況や境界条件を考慮する必要があります。4. 1つの取引の金額を制限する: 潜在的な損失を減らすために、合理的な取引限度額を設定します。5. 定期的なセキュリティ監査を実施する:専門のセキュリティチームを雇い、契約を全面的に監査し、潜在的な脆弱性を迅速に発見して修正します。6. マルチシグネチャメカニズムの実施:重要な操作には複数の確認が必要であり、攻撃の難易度を増加させます。7. コードのロジックを最適化する:重要な状態変数を更新した後に外部呼び出しを行うことを確認します。8. 緊急対応メカニズムの強化:効果的な緊急計画を策定し、攻撃が発生した際に迅速に対応し、損失を最小限に抑える。今回の事件は、スマートコントラクトの安全性の重要性を再確認させました。プロジェクトチームは、開発過程で常に警戒を怠らず、ユーザー資産とプロジェクトの評判を守るために、包括的な安全対策を講じる必要があります。同時に、これは投資家にもプロジェクトを慎重に選び、プロジェクトの安全性と技術力に注意を払うよう警告しています。
OrionProtocolがリ入攻撃を受け、290万ドルの資金が盗まれました
OrionProtocolのリエントランシー攻撃の分析
2023年2月2日15:40:20(UTC時間)、イーサリアムとバイナンススマートチェーン上のOrionProtocolが契約の脆弱性により再入攻撃を受けました。攻撃者は約290万ドルの資金を成功裏に盗取し、その中にはイーサリアム上の2,844,766 USDTとバイナンススマートチェーン上の191,606 BUSDが含まれています。
! [PoCによるOrionProtocolリエントランシー攻撃分析](https://img-cdn.gateio.im/webp-social/moments-730464b2d4d7f6e0ff21a0289a2d5d68.webp0192837465674839201
攻撃プロセスの分析
攻撃者は最初にカスタムトークンコントラクトをデプロイし、関連する転送および承認操作を実行して、その後の攻撃に備えました。 その後、攻撃者はUniswap V2のスワップ機能を通じてお金を借り、OrionProtocolのExchangeWithAtomic.swapThroughOrionPoolメソッドを呼び出してトークンを交換します。
交換経路は[USDC, 攻撃者トークン, USDT]に設定されており、攻撃者トークンが重要です。交換プロセス中、このカスタムトークン契約にコールバック機能が含まれているため、攻撃者はトークンの転送時にExchangeWithAtomic.depositAssetメソッドをトリガーし、再入攻撃を実現できます。これにより、預金額が誤って累積され、最終的に攻撃者は引き出し操作を通じて利益を得ました。
! [PoCによるOrionProtocolリエントランシー攻撃分析])https://img-cdn.gateio.im/webp-social/moments-caac189901b7aaad5abd8be30bb4361a.webp(
! [PoCによるOrionProtocolリエントランシー攻撃分析])https://img-cdn.gateio.im/webp-social/moments-7e21c34158a85d4c387fcdbec136d31b.webp(
資金の流れ
攻撃者の初期資金は、ある取引プラットフォームのホットウォレットから来ています。攻撃で得られた1,651 ETHのうち、657.5 ETHは攻撃者のウォレットアドレスに残っており、残りはミキシングサービスを通じて移転されています。
! [PoCによるOrionProtocolリエントランシー攻撃分析])https://img-cdn.gateio.im/webp-social/moments-24819b5154419e86ea523a25a9101f67.webp(
脆弱性分析
脆弱性の核心は、ExchangeWithAtomicコントラクト内のdoSwapThroughOrionPoolおよび_doSwapTokens関数にあります。これらの関数は、トークン転送を実行した後にcurBalance変数を更新するため、再入攻撃の条件を作り出します。攻撃者はカスタムトークンのtransfer関数にコールバックロジックを追加することにより、depositAsset関数を成功裏にトリガーし、curBalanceが誤って更新されました。最終的に、攻撃者はフラッシュローンを返済した後、withdraw関数を通じて過剰資金を引き出しました。
! [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(
予防に関する推奨事項
Checks-Effects-Interactionsパターンに従う:外部呼び出しを行う前にコントラクトの状態を更新します。
再入ロックを使用する:敏感な操作が始まる前にロックし、終了後にロックを解除して再入を防ぐ。
様々なトークンと交換パスを総合的に考慮する:交換機能を設計する際には、様々な可能性のある状況や境界条件を考慮する必要があります。
1つの取引の金額を制限する: 潜在的な損失を減らすために、合理的な取引限度額を設定します。
定期的なセキュリティ監査を実施する:専門のセキュリティチームを雇い、契約を全面的に監査し、潜在的な脆弱性を迅速に発見して修正します。
マルチシグネチャメカニズムの実施:重要な操作には複数の確認が必要であり、攻撃の難易度を増加させます。
コードのロジックを最適化する:重要な状態変数を更新した後に外部呼び出しを行うことを確認します。
緊急対応メカニズムの強化:効果的な緊急計画を策定し、攻撃が発生した際に迅速に対応し、損失を最小限に抑える。
今回の事件は、スマートコントラクトの安全性の重要性を再確認させました。プロジェクトチームは、開発過程で常に警戒を怠らず、ユーザー資産とプロジェクトの評判を守るために、包括的な安全対策を講じる必要があります。同時に、これは投資家にもプロジェクトを慎重に選び、プロジェクトの安全性と技術力に注意を払うよう警告しています。