# Jarvis Network はフラッシュローンの再入攻撃の分析を受けました最近、Jarvis_Networkというプロジェクトがフラッシュローンの再入攻撃を受け、約66.3万MATICトークンの損失を被りました。この事件は2023年1月15日の夜に発生しました。! [ジャービスネットワークフラッシュローン再入攻撃インシデント分析](https://img-cdn.gateio.im/social/moments-4d8e15a518ca397b76a7e497617ab978)取引のコールスタックを深く分析することによって、攻撃者が再入脆弱性を利用していることがわかりました。再入の過程では、同じコントラクトの同じ関数が複数回呼び出されましたが、各呼び出しの戻り値には大きな差異がありました。この差異は主にremove_liquidity関数に見られます。! [ジャービスネットワークフラッシュローン再入攻撃インシデント分析](https://img-cdn.gateio.im/social/moments-e8af1d7d09e86438ebf38ead98676d76)再入攻撃は流動性を除去する過程で発生します。PolygonとEVMが同型チェーンであるため、MATICが契約に転送されると、契約の再入ロジックがトリガーされます。呼び出しスタックを詳細に分析することで、問題がgetUnderlyingPrice関数にあることがわかりました。! [ジャービスネットワークフラッシュローン再入攻撃インシデント分析](https://img-cdn.gateio.im/social/moments-723c5b4a39a2f19df12a1a8148314db0)さらに調査したところ、攻撃者は流動性を削除する際に、self.D変数の更新タイミングの脆弱性を利用していました。通常、remove_liquidity メソッドの流れは次のようになります:1) ユーザーの LP を破棄する;2) ユーザーにステーキング資金を送信する;3) self.D を更新する。しかし、攻撃者は2番目のステップで再入操作を行い、価格計算に重大なエラーが発生しました。! [ジャービスネットワークフラッシュローン再入攻撃インシデント分析](https://img-cdn.gateio.im/social/moments-9bab9c70334266f146fdb56281be3974)remove_liquidity 関数は、再入を防ぐために @nonreentrant('lock') デコレーターを使用していますが、攻撃者が他の契約に再入して資金を借りるため、この再入ロックは機能していません。! [ジャービスネットワークフラッシュローン再入攻撃インシデント分析](https://img-cdn.gateio.im/social/moments-111047ecd9af84620f98df2f4dd67efa)今回の攻撃は主に2つの問題を暴露しました:1. 変数の変更ロジックが外部呼び出しの後に位置しているため、価格取得に異常が発生しています。2. クロスコントラクト再入が再入ロックを無効にします。! [ジャービスネットワークフラッシュローン再入攻撃インシデント分析](https://img-cdn.gateio.im/social/moments-eec688a506ffd949bdb6891b97fabb6c)類似の攻撃を防ぐために、プロジェクト側は以下の対策を講じることをお勧めします:1. コードが厳格なセキュリティ監査を受けていることを確認してください。2. 変数の変更を外部呼び出しの前に置きます。3. 複数のデータソースを使用して価格を取得します。4. "判断を先に行い、変数に書き込んでから外部呼び出しを行う"というコーディング規範(Checks-Effects-Interactions)に従う。! [ジャービスネットワークフラッシュローン再入攻撃インシデント分析](https://img-cdn.gateio.im/social/moments-a0f03c13dd2d37ba67ccf538fec62aa0)これらの措置を講じることで、プロジェクトはその安全性と安定性を大幅に向上させ、ユーザーにより信頼性の高いサービスを提供することができます。! [ジャービスネットワークフラッシュローン再入攻撃インシデント分析](https://img-cdn.gateio.im/social/moments-fcd66f4cc03bb8e822c9414526681442)! [ジャービスネットワークフラッシュローン再入攻撃インシデント分析](https://img-cdn.gateio.im/social/moments-9b2de9b00c52d3ff96d5a361df65769a)! [ジャービスネットワークフラッシュローンリエントランシー攻撃インシデント分析](https://img-cdn.gateio.im/social/moments-88f9283ee0923cff2a22405715721cd2)! [ジャービスネットワークフラッシュローン再入攻撃インシデント分析](https://img-cdn.gateio.im/social/moments-d41ac025ee561569cce3b941d7e07967)! [ジャービスネットワークフラッシュローン再入攻撃インシデント分析](https://img-cdn.gateio.im/social/moments-2c4474781d661306bc8c432dad3942c0)
Jarvis Networkはフラッシュローンの再入攻撃を受け、663,000 MATICを失いました
Jarvis Network はフラッシュローンの再入攻撃の分析を受けました
最近、Jarvis_Networkというプロジェクトがフラッシュローンの再入攻撃を受け、約66.3万MATICトークンの損失を被りました。この事件は2023年1月15日の夜に発生しました。
! ジャービスネットワークフラッシュローン再入攻撃インシデント分析
取引のコールスタックを深く分析することによって、攻撃者が再入脆弱性を利用していることがわかりました。再入の過程では、同じコントラクトの同じ関数が複数回呼び出されましたが、各呼び出しの戻り値には大きな差異がありました。この差異は主にremove_liquidity関数に見られます。
! ジャービスネットワークフラッシュローン再入攻撃インシデント分析
再入攻撃は流動性を除去する過程で発生します。PolygonとEVMが同型チェーンであるため、MATICが契約に転送されると、契約の再入ロジックがトリガーされます。呼び出しスタックを詳細に分析することで、問題がgetUnderlyingPrice関数にあることがわかりました。
! ジャービスネットワークフラッシュローン再入攻撃インシデント分析
さらに調査したところ、攻撃者は流動性を削除する際に、self.D変数の更新タイミングの脆弱性を利用していました。通常、remove_liquidity メソッドの流れは次のようになります:1) ユーザーの LP を破棄する;2) ユーザーにステーキング資金を送信する;3) self.D を更新する。しかし、攻撃者は2番目のステップで再入操作を行い、価格計算に重大なエラーが発生しました。
! ジャービスネットワークフラッシュローン再入攻撃インシデント分析
remove_liquidity 関数は、再入を防ぐために @nonreentrant('lock') デコレーターを使用していますが、攻撃者が他の契約に再入して資金を借りるため、この再入ロックは機能していません。
! ジャービスネットワークフラッシュローン再入攻撃インシデント分析
今回の攻撃は主に2つの問題を暴露しました:
! ジャービスネットワークフラッシュローン再入攻撃インシデント分析
類似の攻撃を防ぐために、プロジェクト側は以下の対策を講じることをお勧めします:
! ジャービスネットワークフラッシュローン再入攻撃インシデント分析
これらの措置を講じることで、プロジェクトはその安全性と安定性を大幅に向上させ、ユーザーにより信頼性の高いサービスを提供することができます。
! ジャービスネットワークフラッシュローン再入攻撃インシデント分析
! ジャービスネットワークフラッシュローン再入攻撃インシデント分析
! ジャービスネットワークフラッシュローンリエントランシー攻撃インシデント分析
! ジャービスネットワークフラッシュローン再入攻撃インシデント分析
! ジャービスネットワークフラッシュローン再入攻撃インシデント分析
内容言語:中文
提供されたコメント:
契約監査を行わないでこの損失を被るのはおかしい~