# Jarvis Networkはフラッシュローンの再入攻撃を受けた分析2023年1月15日、Jarvis_Networkプロジェクトは重大な攻撃事件に遭遇し、663,101枚のMATICが損失しました。この攻撃はフラッシュローンと再入攻撃の組み合わせを利用し、プロジェクトの契約に深刻な脆弱性を露呈しました。! [ジャービスネットワークフラッシュローン再入攻撃インシデント分析](https://img-cdn.gateio.im/social/moments-4d8e15a518ca397b76a7e497617ab978)攻撃者はremove_liquidity関数の脆弱性を巧妙に利用しました。この関数は流動性を削除する際に、ユーザーが追加したトークンを返します。PolygonチェーンはEVMと互換性があるため、MATICが契約に送金されると、契約の再入ロジックがトリガーされます。! [ジャービスネットワークフラッシュローン再入攻撃インシデント分析](https://img-cdn.gateio.im/social/moments-e8af1d7d09e86438ebf38ead98676d76)分析から、攻撃の鍵はgetUnderlyingPrice関数の呼び出しにあることがわかりました。この関数は再入前後で著しく異なる価格を返しました:再入前は1002157321772769944、再入後は10091002696492234934に達し、ほぼ10倍の差があります。! [ジャービスネットワークフラッシュローン再入攻撃インシデント分析](https://img-cdn.gateio.im/social/moments-723c5b4a39a2f19df12a1a8148314db0)問題の根源は、契約がself.D変数を更新するタイミングが不適切であることです。remove_liquidity関数の実行順序は:1) ユーザーLPトークンを破棄する;2) ステーキング資金をユーザーに送信する;3) self.Dを更新する。攻撃者は2番目のステップで再入を行い、まだ更新されていないself.D値を利用して誤った価格情報を取得し、有利な貸付操作を行いました。! [ジャービスネットワークフラッシュローン再入攻撃インシデント分析](https://img-cdn.gateio.im/social/moments-9bab9c70334266f146fdb56281be3974)! [ジャービスネットワークフラッシュローン再入攻撃インシデント分析](https://img-cdn.gateio.im/social/moments-111047ecd9af84620f98df2f4dd67efa)remove_liquidity関数は、再入を防ぐために@nonreentrant('lock')デコレーターを使用していますが、攻撃がクロスコントラクト操作を含むため、この防護措置は効果がありませんでした。! [ジャービスネットワークフラッシュローン再入攻撃インシデント分析](https://img-cdn.gateio.im/social/moments-eec688a506ffd949bdb6891b97fabb6c)この事件は、いくつかの重要なセキュリティ原則を浮き彫りにしました:1. 変数の変更は外部呼び出しの前に完了するべきであり、状態の不整合を防ぐためです。2. 価格取得メカニズムは複数のデータソース方式を採用し、信頼性を高めるべきです。3. コードロジックは「チェック-エフェクト-インタラクション」(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がフラッシュローンの再入攻撃を受け、66万MATICの損失を出しました。
Jarvis Networkはフラッシュローンの再入攻撃を受けた分析
2023年1月15日、Jarvis_Networkプロジェクトは重大な攻撃事件に遭遇し、663,101枚のMATICが損失しました。この攻撃はフラッシュローンと再入攻撃の組み合わせを利用し、プロジェクトの契約に深刻な脆弱性を露呈しました。
! ジャービスネットワークフラッシュローン再入攻撃インシデント分析
攻撃者はremove_liquidity関数の脆弱性を巧妙に利用しました。この関数は流動性を削除する際に、ユーザーが追加したトークンを返します。PolygonチェーンはEVMと互換性があるため、MATICが契約に送金されると、契約の再入ロジックがトリガーされます。
! ジャービスネットワークフラッシュローン再入攻撃インシデント分析
分析から、攻撃の鍵はgetUnderlyingPrice関数の呼び出しにあることがわかりました。この関数は再入前後で著しく異なる価格を返しました:再入前は1002157321772769944、再入後は10091002696492234934に達し、ほぼ10倍の差があります。
! ジャービスネットワークフラッシュローン再入攻撃インシデント分析
問題の根源は、契約がself.D変数を更新するタイミングが不適切であることです。remove_liquidity関数の実行順序は:1) ユーザーLPトークンを破棄する;2) ステーキング資金をユーザーに送信する;3) self.Dを更新する。攻撃者は2番目のステップで再入を行い、まだ更新されていないself.D値を利用して誤った価格情報を取得し、有利な貸付操作を行いました。
! ジャービスネットワークフラッシュローン再入攻撃インシデント分析
! ジャービスネットワークフラッシュローン再入攻撃インシデント分析
remove_liquidity関数は、再入を防ぐために@nonreentrant('lock')デコレーターを使用していますが、攻撃がクロスコントラクト操作を含むため、この防護措置は効果がありませんでした。
! ジャービスネットワークフラッシュローン再入攻撃インシデント分析
この事件は、いくつかの重要なセキュリティ原則を浮き彫りにしました:
! ジャービスネットワークフラッシュローン再入攻撃インシデント分析
! ジャービスネットワークフラッシュローン再入攻撃インシデント分析
! ジャービスネットワークフラッシュローン再入攻撃インシデント分析
! ジャービスネットワークフラッシュローンリエントランシー攻撃インシデント分析
! ジャービスネットワークフラッシュローン再入攻撃インシデント分析
今回の攻撃は、スマートコントラクトのセキュリティ監査がいかに重要であるかを再確認させるものでした。プロジェクトチームは、契約の安全性をより重視し、コードが包括的かつ厳格な監査を受けることを確実にし、同様の脆弱性の発生を防ぐべきです。
! ジャービスネットワークフラッシュローン再入攻撃インシデント分析