# Jarvis Networkプロジェクトがフラッシュローン再入攻撃を受けた分析2023年1月15日、Jarvis_Networkプロジェクトが攻撃を受け、663,101個のMATICが盗まれました。この事件はプロジェクトの安全性に対する関心を引き起こしました。! [ジャービスネットワークフラッシュローン再入攻撃インシデント分析](https://img-cdn.gateio.im/social/moments-4d8e15a518ca397b76a7e497617ab978)取引のコールスタックの分析を通じて、攻撃者が再入可能性の脆弱性を利用していることが判明しました。再入中に、同じコントラクトの同じ関数呼び出しに対して、入力パラメータは同じであるにもかかわらず、戻り値には顕著な差異があります。この差異は主にremove_liquidity関数で発生します。! [ジャービスネットワークフラッシュローン再入攻撃インシデント分析](https://img-cdn.gateio.im/social/moments-e8af1d7d09e86438ebf38ead98676d76)再入攻撃は主に特定のスマートコントラクトのremove_liquidity関数をターゲットにしています。この関数は流動性を削除する際にユーザーが追加したトークンを返します。PolygonとEVMチェーンの同型性により、MATICがコントラクトに送金されると再入ロジックがトリガーされます。! [ジャービスネットワークフラッシュローン再入攻撃インシデント分析](https://img-cdn.gateio.im/social/moments-723c5b4a39a2f19df12a1a8148314db0)さらに分析したところ、問題はgetUnderlyingPrice関数の実装にあることが判明しました。この関数は複数の未公開のコントラクトに関与しており、分析の難易度が増しています。しかし、ストレージスロットとコールスタックを確認することで、重要な変数の値と関数呼び出しのパスを推測することができます。! [ジャービスネットワークフラッシュローン再入攻撃インシデント分析](https://img-cdn.gateio.im/social/moments-9bab9c70334266f146fdb56281be3974)! [ジャービスネットワークフラッシュローン再入攻撃インシデント分析](https://img-cdn.gateio.im/social/moments-111047ecd9af84620f98df2f4dd67efa)! [ジャービスネットワークフラッシュローン再入攻撃インシデント分析](https://img-cdn.gateio.im/social/moments-eec688a506ffd949bdb6891b97fabb6c)攻撃の核心はget_virtual_price関数の返り値が再入する前後で著しい変化を示したことにあります。この変化はself.D変数の更新タイミングに関係しています。通常、self.Dは送金が完了した後に更新されるべきですが、今回の攻撃では再入が発生したため、価格計算に誤りが生じました。! [ジャービスネットワークフラッシュローン再入攻撃インシデント分析](https://img-cdn.gateio.im/social/moments-a0f03c13dd2d37ba67ccf538fec62aa0)! [ジャービスネットワークフラッシュローン再入攻撃インシデント分析](https://img-cdn.gateio.im/social/moments-fcd66f4cc03bb8e822c9414526681442)remove_liquidity関数の実行フローには、1) ユーザーのLPトークンを破棄すること;2) 質押資金をユーザーに送信すること;3) self.D値を更新することが含まれます。攻撃者は2番目のステップで再入を行い、未更新のself.D値を利用して借入を行い、不当な利益を得ました。! [ジャービスネットワークフラッシュローン再入攻撃インシデント分析](https://img-cdn.gateio.im/social/moments-9b2de9b00c52d3ff96d5a361df65769a)! [ジャービスネットワークフラッシュローンリエントランシー攻撃インシデント分析](https://img-cdn.gateio.im/social/moments-88f9283ee0923cff2a22405715721cd2)注目すべきは、remove_liquidity関数が@nonreentrant('lock')デコレーターを使用して再入を防止しているにもかかわらず、攻撃者が再入した後に他のコントラクトに入って借り入れを行うため、この再入ロックは期待通りの効果を発揮していないということです。! [ジャービスネットワークフラッシュローン再入攻撃インシデント分析](https://img-cdn.gateio.im/social/moments-d41ac025ee561569cce3b941d7e07967)この攻撃は、スマートコントラクトの変数更新のタイミングの重要性を暴露しました。セキュリティを向上させるために、プロジェクトチームに以下の措置を講じることをお勧めします。1. 厳格なセキュリティ監査を行う2. 外部呼び出しの前に変数の変更を完了させることを確認してください3. 複数のデータソースを使用して価格情報を取得する4. "チェック-エフェクト-インタラクション"(Checks-Effects-Interactions)パターンに従ってコードを書くこれらのベストプラクティスを実施することで、スマートコントラクトのセキュリティと安定性を大幅に向上させ、Web3エコシステムにより信頼性の高いインフラストラクチャを提供できます。! [ジャービスネットワークフラッシュローン再入攻撃インシデント分析](https://img-cdn.gateio.im/social/moments-2c4474781d661306bc8c432dad3942c0)
Jarvis Networkがフラッシュローンによるリ入攻撃を受け、663,101 MATICが盗まれました。
Jarvis Networkプロジェクトがフラッシュローン再入攻撃を受けた分析
2023年1月15日、Jarvis_Networkプロジェクトが攻撃を受け、663,101個のMATICが盗まれました。この事件はプロジェクトの安全性に対する関心を引き起こしました。
! ジャービスネットワークフラッシュローン再入攻撃インシデント分析
取引のコールスタックの分析を通じて、攻撃者が再入可能性の脆弱性を利用していることが判明しました。再入中に、同じコントラクトの同じ関数呼び出しに対して、入力パラメータは同じであるにもかかわらず、戻り値には顕著な差異があります。この差異は主にremove_liquidity関数で発生します。
! ジャービスネットワークフラッシュローン再入攻撃インシデント分析
再入攻撃は主に特定のスマートコントラクトのremove_liquidity関数をターゲットにしています。この関数は流動性を削除する際にユーザーが追加したトークンを返します。PolygonとEVMチェーンの同型性により、MATICがコントラクトに送金されると再入ロジックがトリガーされます。
! ジャービスネットワークフラッシュローン再入攻撃インシデント分析
さらに分析したところ、問題はgetUnderlyingPrice関数の実装にあることが判明しました。この関数は複数の未公開のコントラクトに関与しており、分析の難易度が増しています。しかし、ストレージスロットとコールスタックを確認することで、重要な変数の値と関数呼び出しのパスを推測することができます。
! ジャービスネットワークフラッシュローン再入攻撃インシデント分析
! ジャービスネットワークフラッシュローン再入攻撃インシデント分析
! ジャービスネットワークフラッシュローン再入攻撃インシデント分析
攻撃の核心はget_virtual_price関数の返り値が再入する前後で著しい変化を示したことにあります。この変化はself.D変数の更新タイミングに関係しています。通常、self.Dは送金が完了した後に更新されるべきですが、今回の攻撃では再入が発生したため、価格計算に誤りが生じました。
! ジャービスネットワークフラッシュローン再入攻撃インシデント分析
! ジャービスネットワークフラッシュローン再入攻撃インシデント分析
remove_liquidity関数の実行フローには、1) ユーザーのLPトークンを破棄すること;2) 質押資金をユーザーに送信すること;3) self.D値を更新することが含まれます。攻撃者は2番目のステップで再入を行い、未更新のself.D値を利用して借入を行い、不当な利益を得ました。
! ジャービスネットワークフラッシュローン再入攻撃インシデント分析
! ジャービスネットワークフラッシュローンリエントランシー攻撃インシデント分析
注目すべきは、remove_liquidity関数が@nonreentrant('lock')デコレーターを使用して再入を防止しているにもかかわらず、攻撃者が再入した後に他のコントラクトに入って借り入れを行うため、この再入ロックは期待通りの効果を発揮していないということです。
! ジャービスネットワークフラッシュローン再入攻撃インシデント分析
この攻撃は、スマートコントラクトの変数更新のタイミングの重要性を暴露しました。セキュリティを向上させるために、プロジェクトチームに以下の措置を講じることをお勧めします。
これらのベストプラクティスを実施することで、スマートコントラクトのセキュリティと安定性を大幅に向上させ、Web3エコシステムにより信頼性の高いインフラストラクチャを提供できます。
! ジャービスネットワークフラッシュローン再入攻撃インシデント分析