This page may contain third-party content, which is provided for information purposes only (not representations/warranties) and should not be considered as an endorsement of its views by Gate, nor as financial or professional advice. See Disclaimer for details.
OrionProtocolが290万ドルのリ入攻撃を受けた 攻撃プロセスと防止策の分析
OrionProtocolのリエントランシー攻撃の分析
2023年2月2日、OrionProtocolはイーサリアムとバイナンススマートチェーンで再入攻撃を受け、約290万ドルの損失が発生しました。攻撃者は契約の脆弱性を利用して、イーサリアムチェーン上で2,844,766 USDT、バイナンススマートチェーン上で191,606 BUSDを盗みました。
攻撃プロセス
攻撃者はまずカスタムトークンコントラクトを作成し、関連する転送および承認操作を行いました。その後、攻撃者は某DEXのスワップメソッドを使用して借入を行い、ExchangeWithAtomic.swapThroughOrionPoolメソッドを呼び出してトークンの交換を行いました。交換パスには攻撃者が作成したトークンコントラクトのアドレスが含まれています。
交換プロセス中、攻撃者のトークン契約にコールバックメカニズムが存在するため、攻撃者はToken.Transferを通じてExchangeWithAtomic.depositAssetメソッドを再度呼び出すことができ、再入攻撃を実現しました。これにより、預金額が重複して加算され、最終的に攻撃者は出金操作を通じて利益を得ました。
! [PoCによるOrionProtocolリエントランシー攻撃分析](https://img-cdn.gateio.im/webp-social/moments-730464b2d4d7f6e0ff21a0289a2d5d68.webp0192837465674839201
資金の流れ
攻撃者の初期資金は、ある取引所のホットウォレットアカウントから来ています。利益の1,651ETHのうち、657.5ETHは攻撃者のウォレットアドレスに残っており、残りはミキシングサービスを通じて移動しました。
! [PoCによるOrionProtocolリエントランシー攻撃分析])https://img-cdn.gateio.im/webp-social/moments-caac189901b7aaad5abd8be30bb4361a.webp(
脆弱性分析
この脆弱性の主な問題は、doSwapThroughOrionPool 関数にあります。 この関数は _doSwapTokens 関数を呼び出し、転送操作後に curBalance 変数を更新します。 攻撃者は、カスタムトークンの転送関数に追加されたコールバック関数を使用して、curBalanceが更新される前に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による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(
予防に関する推奨事項
類似の攻撃を防ぐために、プロジェクトチームは契約を設計する際に以下の点に注意することをお勧めします:
これらの措置を講じることで、プロジェクトは契約の安全性と安定性を大幅に向上させ、攻撃を受けるリスクを最小限に抑えることができます。