# OrionProtocolはリエントランシー攻撃を受ける2023年2月2日の午後、イーサリアムとバイナンススマートチェーン上のOrionProtocol契約は脆弱性のために再入攻撃を受けました。攻撃者はイーサリアムチェーン上で2,844,766 USDT、バイナンススマートチェーン上で191,606 BUSDを獲得し、合計約290万ドルに達しました。! [PoCによるOrionProtocolリエントランシー攻撃分析](https://img-cdn.gateio.im/social/moments-730464b2d4d7f6e0ff21a0289a2d5d680192837465674839201## 攻撃プロセス分析攻撃者はまずカスタムトークン契約を展開し、関連する準備作業を行いました。その後、攻撃者は某DEXのスワップ機能を利用して貸借を行い、OrionProtocolのswapThroughOrionPoolメソッドを呼び出してトークンを交換しました。交換パスには攻撃者が作成したトークン契約のアドレスが含まれており、これが後続のコールバック攻撃の準備となりました。swapThroughOrionPoolメソッドを実行する際、攻撃者のTokenコントラクトにコールバックロジックが含まれているため、送金プロセス中に再入攻撃が発生しました。攻撃者はToken.Transferメソッドを利用して、ExchangeWithAtomic.depositAsset関数を繰り返し呼び出し、預金額が累積していくことを引き起こしました。最終的に、攻撃者は出金操作を通じて利益を得ました。! [PoCによるOrionProtocolリエントランシー攻撃分析])https://img-cdn.gateio.im/social/moments-caac189901b7aaad5abd8be30bb4361a(## 資金の流れ攻撃者の初期資金は、ある取引プラットフォームのホットウォレットから来ています。攻撃によって得られた1,651枚のETHのうち、657.5枚は攻撃者のウォレットアドレスに残っており、残りはミキシングサービスを通じて移転されています。! [PoCによるOrionProtocolリエントランシー攻撃分析])https://img-cdn.gateio.im/social/moments-7e21c34158a85d4c387fcdbec136d31b(## 脆弱性分析コアの問題はdoSwapThroughOrionPool関数にあります。この関数は_doSwapTokens操作を実行する際に、論理的欠陥を抱えています。具体的には、契約が転送を完了した後にcurBalance変数を更新するため、攻撃者にチャンスを与えています。攻撃者はカスタムTokenのtransfer関数にコールバックロジックを追加し、depositAsset関数を繰り返し呼び出すことで、curBalanceの更新を誤らせました。最終的に、攻撃者はフラッシュローンを返済した後に、過剰な資金を成功裏に引き出しました。! [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. 現代通貨交換機能を実現する際には、さまざまなトークンの種類や交換経路がもたらす安全上のリスクを十分に考慮する必要があります。2. "チェック-効果-相互作用"(Checks-Effects-Interactions)のコーディング規範に厳密に従い、最初に状態をチェックし、次に契約の状態を更新し、最後に外部呼び出しを実行します。3. 重要な操作にリ入ロックを実装し、リ入攻撃の発生を防ぎます。4. 定期的にコード監査を行い、潜在的なセキュリティの脆弱性を迅速に発見し修正します。5. 異常な取引に対して人工的な介入の機会を提供するために、遅延引き出しメカニズムの導入を検討する。これらの対策を講じることで、スマートコントラクトの安全性を大幅に向上させ、攻撃のリスクを低減できます。Web3エコシステムでは、安全性が常に最優先の考慮事項です。
OrionProtocolが再入攻撃を受け、290万ドルの資金が盗まれました
OrionProtocolはリエントランシー攻撃を受ける
2023年2月2日の午後、イーサリアムとバイナンススマートチェーン上のOrionProtocol契約は脆弱性のために再入攻撃を受けました。攻撃者はイーサリアムチェーン上で2,844,766 USDT、バイナンススマートチェーン上で191,606 BUSDを獲得し、合計約290万ドルに達しました。
! [PoCによるOrionProtocolリエントランシー攻撃分析](https://img-cdn.gateio.im/webp-social/moments-730464b2d4d7f6e0ff21a0289a2d5d68.webp0192837465674839201
攻撃プロセス分析
攻撃者はまずカスタムトークン契約を展開し、関連する準備作業を行いました。その後、攻撃者は某DEXのスワップ機能を利用して貸借を行い、OrionProtocolのswapThroughOrionPoolメソッドを呼び出してトークンを交換しました。交換パスには攻撃者が作成したトークン契約のアドレスが含まれており、これが後続のコールバック攻撃の準備となりました。
swapThroughOrionPoolメソッドを実行する際、攻撃者のTokenコントラクトにコールバックロジックが含まれているため、送金プロセス中に再入攻撃が発生しました。攻撃者はToken.Transferメソッドを利用して、ExchangeWithAtomic.depositAsset関数を繰り返し呼び出し、預金額が累積していくことを引き起こしました。最終的に、攻撃者は出金操作を通じて利益を得ました。
! [PoCによるOrionProtocolリエントランシー攻撃分析])https://img-cdn.gateio.im/webp-social/moments-caac189901b7aaad5abd8be30bb4361a.webp(
資金の流れ
攻撃者の初期資金は、ある取引プラットフォームのホットウォレットから来ています。攻撃によって得られた1,651枚のETHのうち、657.5枚は攻撃者のウォレットアドレスに残っており、残りはミキシングサービスを通じて移転されています。
! [PoCによるOrionProtocolリエントランシー攻撃分析])https://img-cdn.gateio.im/webp-social/moments-7e21c34158a85d4c387fcdbec136d31b.webp(
脆弱性分析
コアの問題はdoSwapThroughOrionPool関数にあります。この関数は_doSwapTokens操作を実行する際に、論理的欠陥を抱えています。具体的には、契約が転送を完了した後にcurBalance変数を更新するため、攻撃者にチャンスを与えています。攻撃者はカスタムTokenのtransfer関数にコールバックロジックを追加し、depositAsset関数を繰り返し呼び出すことで、curBalanceの更新を誤らせました。最終的に、攻撃者はフラッシュローンを返済した後に、過剰な資金を成功裏に引き出しました。
! [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)のコーディング規範に厳密に従い、最初に状態をチェックし、次に契約の状態を更新し、最後に外部呼び出しを実行します。
重要な操作にリ入ロックを実装し、リ入攻撃の発生を防ぎます。
定期的にコード監査を行い、潜在的なセキュリティの脆弱性を迅速に発見し修正します。
異常な取引に対して人工的な介入の機会を提供するために、遅延引き出しメカニズムの導入を検討する。
これらの対策を講じることで、スマートコントラクトの安全性を大幅に向上させ、攻撃のリスクを低減できます。Web3エコシステムでは、安全性が常に最優先の考慮事項です。