# OrionProtocolのリエントランシー攻撃の分析2023年2月2日午後、イーサリアムとバイナンススマートチェーン上のOrionProtocolプロジェクトは、契約の脆弱性により再入攻撃を受け、合計で約290万ドルの暗号資産が損失しました。その中には2,844,766 USDT(イーサリアム)と191,606 BUSD(BSC)が含まれています。## 攻撃プロセス分析攻撃者は最初にカスタムトークン契約を展開し、対応する移転と権限付与操作を行い、後続の攻撃の準備をしました。その後、攻撃者はある分散型取引所のスワップ機能を通じて資金を借り入れ、OrionProtocolのExchangeWithAtomic.swapThroughOrionPoolメソッドを呼び出してトークンの交換を行いました。交換パスはUSDC → 攻撃者のカスタムトークン → USDTに設定されました。交換プロセス中、攻撃者はカスタムトークン契約のコールバック関数を利用して、ExchangeWithAtomic.depositAssetメソッドを繰り返し呼び出し、預金額が累積される結果となった。最終的に、攻撃者は引き出し操作を通じて利益を得た。! [PoCによるOrionProtocolリエントランシー攻撃分析](https://img-cdn.gateio.im/social/moments-730464b2d4d7f6e0ff21a0289a2d5d680192837465674839201## 資金の流れ攻撃者の初期資金は、ある大手取引プラットフォームのホットウォレットから来ています。利益として得られた1,651枚のETHのうち、657.5枚は攻撃者のウォレットアドレスに残っており、残りはミキシングツールを使用して移動されました。! [PoCによるOrionProtocolリエントランシー攻撃分析])https://img-cdn.gateio.im/social/moments-caac189901b7aaad5abd8be30bb4361a(## 脆弱性分析コアの問題は、ExchangeWithAtomicコントラクトのdoSwapThroughOrionPool関数にあります。この関数は、トークンの転送を実行した後に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(! [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. 重要な操作にアクセス制御とリミット措置を実施する。5. 資金操作に関わるコア機能に特に注意を払い、包括的なセキュリティ監査を実施する。この事件は再びスマートコントラクトの安全性の重要性を浮き彫りにしました。プロジェクトチームは契約の安全性に継続的に注目し、定期的にコード監査や脆弱性修正を行い、ユーザー資産の安全を確保するべきです。同時に、ユーザーも新しいプロジェクトに参加する際には警戒を怠らず、プロジェクトの安全状況や監査報告書に注目する必要があります。
OrionProtocolはリエントランシー攻撃を受け、290万ドルの暗号資産を失いました
OrionProtocolのリエントランシー攻撃の分析
2023年2月2日午後、イーサリアムとバイナンススマートチェーン上のOrionProtocolプロジェクトは、契約の脆弱性により再入攻撃を受け、合計で約290万ドルの暗号資産が損失しました。その中には2,844,766 USDT(イーサリアム)と191,606 BUSD(BSC)が含まれています。
攻撃プロセス分析
攻撃者は最初にカスタムトークン契約を展開し、対応する移転と権限付与操作を行い、後続の攻撃の準備をしました。その後、攻撃者はある分散型取引所のスワップ機能を通じて資金を借り入れ、OrionProtocolのExchangeWithAtomic.swapThroughOrionPoolメソッドを呼び出してトークンの交換を行いました。交換パスはUSDC → 攻撃者のカスタムトークン → USDTに設定されました。
交換プロセス中、攻撃者はカスタムトークン契約のコールバック関数を利用して、ExchangeWithAtomic.depositAssetメソッドを繰り返し呼び出し、預金額が累積される結果となった。最終的に、攻撃者は引き出し操作を通じて利益を得た。
! [PoCによるOrionProtocolリエントランシー攻撃分析](https://img-cdn.gateio.im/webp-social/moments-730464b2d4d7f6e0ff21a0289a2d5d68.webp0192837465674839201
資金の流れ
攻撃者の初期資金は、ある大手取引プラットフォームのホットウォレットから来ています。利益として得られた1,651枚のETHのうち、657.5枚は攻撃者のウォレットアドレスに残っており、残りはミキシングツールを使用して移動されました。
! [PoCによるOrionProtocolリエントランシー攻撃分析])https://img-cdn.gateio.im/webp-social/moments-caac189901b7aaad5abd8be30bb4361a.webp(
脆弱性分析
コアの問題は、ExchangeWithAtomicコントラクトのdoSwapThroughOrionPool関数にあります。この関数は、トークンの転送を実行した後に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(
! [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)モデルに従うべきであり、状態更新前に外部呼び出しを避ける必要があります。
トークン交換機能を実装する際には、さまざまなトークンタイプや交換パスがもたらす可能性のあるセキュリティリスクを考慮する必要があります。
再入ロックなどのセキュリティメカニズムを追加して、再入攻撃を防止します。
重要な操作にアクセス制御とリミット措置を実施する。
資金操作に関わるコア機能に特に注意を払い、包括的なセキュリティ監査を実施する。
この事件は再びスマートコントラクトの安全性の重要性を浮き彫りにしました。プロジェクトチームは契約の安全性に継続的に注目し、定期的にコード監査や脆弱性修正を行い、ユーザー資産の安全を確保するべきです。同時に、ユーザーも新しいプロジェクトに参加する際には警戒を怠らず、プロジェクトの安全状況や監査報告書に注目する必要があります。