# OrionProtocolのリエントランシー攻撃の分析2023年2月2日午後、イーサリアムおよびバイナンススマートチェーン上のOrionProtocolは、契約の脆弱性により再入攻撃を受け、約290万ドルの損失を被りました。攻撃者は契約の脆弱性を利用し、特殊なトークン契約を作成することでコールバック操作を行い、再入攻撃を実現しました。## 攻撃プロセス分析攻撃者はまず特別なToken契約を作成し、関連する転送と承認操作を行いました。その後、攻撃者はあるDEXのswapメソッドを通じて借入を行い、OrionProtocolのswapThroughOrionPoolメソッドを呼び出してトークンの交換を行いました。交換の過程で、攻撃者は自分が作成したToken契約を利用してコールバックを行い、depositAssetメソッドを繰り返し呼び出すことで、預金額が累積される結果となりました。最終的に、攻撃者は引き出し操作を通じて利益を得ました。! [PoCによるOrionProtocolリエントランシー攻撃分析](https://img-cdn.gateio.im/social/moments-730464b2d4d7f6e0ff21a0289a2d5d680192837465674839201## 資金の流れ攻撃者の初期資金は、ある取引プラットフォームのホットウォレットアカウントから来ています。利益の1651ETHのうち、657.5ETHは攻撃者のウォレットアドレスに残っており、残りはミキシングツールを使って移動されています。! [PoCによるOrionProtocolリエントランシー攻撃分析])https://img-cdn.gateio.im/social/moments-caac189901b7aaad5abd8be30bb4361a(## 脆弱性分析コアの問題はdoSwapThroughOrionPool関数にあります。この関数はトークンの転送を実行した後、curBalance変数を更新しますが、再入攻撃のリスクを考慮していません。攻撃者はカスタムTokenのtransfer関数にコールバックロジックを追加することで、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によるOrionProtocolリエントランシー攻撃分析])https://img-cdn.gateio.im/social/moments-7239f8886fe83c1da8b1b42545185811(## 攻撃の再発研究者は一部のPOCコードを提供し、攻撃プロセスをシミュレートしました。テスト結果は、契約内の脆弱性を利用することで、実際の攻撃に類似した資金の流れを成功裏に実現したことを示しています。! [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は、契約の脆弱性により再入攻撃を受け、約290万ドルの損失を被りました。攻撃者は契約の脆弱性を利用し、特殊なトークン契約を作成することでコールバック操作を行い、再入攻撃を実現しました。
攻撃プロセス分析
攻撃者はまず特別なToken契約を作成し、関連する転送と承認操作を行いました。その後、攻撃者はあるDEXのswapメソッドを通じて借入を行い、OrionProtocolのswapThroughOrionPoolメソッドを呼び出してトークンの交換を行いました。交換の過程で、攻撃者は自分が作成したToken契約を利用してコールバックを行い、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(
脆弱性分析
コアの問題はdoSwapThroughOrionPool関数にあります。この関数はトークンの転送を実行した後、curBalance変数を更新しますが、再入攻撃のリスクを考慮していません。攻撃者はカスタムTokenのtransfer関数にコールバックロジックを追加することで、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によるOrionProtocolリエントランシー攻撃分析])https://img-cdn.gateio.im/webp-social/moments-7239f8886fe83c1da8b1b42545185811.webp(
攻撃の再発
研究者は一部のPOCコードを提供し、攻撃プロセスをシミュレートしました。テスト結果は、契約内の脆弱性を利用することで、実際の攻撃に類似した資金の流れを成功裏に実現したことを示しています。
! [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(
セキュリティの提案
この事件は再びWeb3プロジェクトがスマートコントラクトの安全性を高度に重視する必要があることを思い出させます。契約開発者は資金移動に関わる論理をより慎重に扱い、さまざまな攻撃シナリオを十分に考慮すべきです。同時に、定期的なセキュリティ監査やバグ報奨プログラムもプロジェクトの安全を確保するための有効な手段です。