# Jarvis Networkはフラッシュローン再入攻撃の分析を受けました2023年1月15日、Jarvis_Networkプロジェクトがハッキングされ、663101 MATICが失われました。取引データの分析を通じて、今回の攻撃にはフラッシュローンと再入侵の脆弱性が関与していることが判明しました。! [ジャービスネットワークフラッシュローン再入攻撃インシデント分析](https://img-cdn.gateio.im/social/moments-4d8e15a518ca397b76a7e497617ab978)攻撃者はremove_liquidity関数の脆弱性を利用しました。流動性を削除する際、この関数はユーザーが追加したトークンを返します。PolygonとEVMは同型チェーンであるため、MATICが契約に送金されると、契約の再入ロジックがトリガーされます。! [ジャービスネットワークフラッシュローン再入攻撃インシデント分析](https://img-cdn.gateio.im/social/moments-e8af1d7d09e86438ebf38ead98676d76)getUnderlyingPrice関数の呼び出しプロセスに重点を置く。この関数は複数のコントラクトの相互作用を含み、その中にはオープンソースではないコントラクトもある。分析の結果、問題はget_virtual_price関数の返り値にあることがわかった。この関数の返り値は、再入前後で顕著な差異がある。! [ジャービスネットワークフラッシュローン再入攻撃インシデント分析](https://img-cdn.gateio.im/social/moments-723c5b4a39a2f19df12a1a8148314db0)具体的には、self.D変数の更新はトークンの転送後に発生します。攻撃者が流動性を削除すると、MATICが攻撃者のコントラクトに移されます。コールバックのfallback関数が呼ばれる際、攻撃者は特定のトークンの価格を先に照会しました。self.Dの更新が転送に遅れているため、以前の価格取得に誤りが生じます。! [ジャービスネットワークフラッシュローン再入攻撃インシデント分析](https://img-cdn.gateio.im/social/moments-9bab9c70334266f146fdb56281be3974)! [ジャービスネットワークフラッシュローン再入攻撃インシデント分析](https://img-cdn.gateio.im/social/moments-111047ecd9af84620f98df2f4dd67efa)流動性の除去プロセスには、1) ユーザーのLPトークンの焼失;2) ユーザーへのステーキング資金の送信;3) self.D値の更新が含まれます。self.Dは価格計算に使用され、流動性の追加と除去の際に更新されます。攻撃者は、大規模な流動性とself.D更新のタイミングの脆弱性を利用して、ステップ2で再入を行い、元の価格の10倍の価格で借入を行いました。! [ジャービスネットワークフラッシュローン再入攻撃インシデント分析](https://img-cdn.gateio.im/social/moments-eec688a506ffd949bdb6891b97fabb6c)! [ジャービスネットワークフラッシュローン再入攻撃インシデント分析](https://img-cdn.gateio.im/social/moments-a0f03c13dd2d37ba67ccf538fec62aa0)! [ジャービスネットワークフラッシュローン再入攻撃インシデント分析](https://img-cdn.gateio.im/social/moments-fcd66f4cc03bb8e822c9414526681442)remove_liquidity関数は@nonreentrant('lock')デコレーターを使用して再入を防止していますが、攻撃者はクロスコントラクト貸付を通じてこの保護機構を回避しました。! [ジャービスネットワークフラッシュローン再入攻撃インシデント分析](https://img-cdn.gateio.im/social/moments-9b2de9b00c52d3ff96d5a361df65769a)! [ジャービスネットワークフラッシュローンリエントランシー攻撃インシデント分析](https://img-cdn.gateio.im/social/moments-88f9283ee0923cff2a22405715721cd2)今回の攻撃は、プロジェクトの変数変更ロジックとクロスコントラクト呼び出しの安全性における不足を暴露しました。同様の攻撃を防ぐために、プロジェクトチームに以下の対策を講じることをお勧めします:1. 厳格なセキュリティ監査を行う。2. 変数の変更を外部呼び出しの前に置く。3. 複数のデータソースを使用して価格を取得します。4. Checks-Effects-Interactionsのコーディング規則に従います。! [ジャービスネットワークフラッシュローン再入攻撃インシデント分析](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プロジェクトがハッキングされ、663101 MATICが失われました。取引データの分析を通じて、今回の攻撃にはフラッシュローンと再入侵の脆弱性が関与していることが判明しました。
! ジャービスネットワークフラッシュローン再入攻撃インシデント分析
攻撃者はremove_liquidity関数の脆弱性を利用しました。流動性を削除する際、この関数はユーザーが追加したトークンを返します。PolygonとEVMは同型チェーンであるため、MATICが契約に送金されると、契約の再入ロジックがトリガーされます。
! ジャービスネットワークフラッシュローン再入攻撃インシデント分析
getUnderlyingPrice関数の呼び出しプロセスに重点を置く。この関数は複数のコントラクトの相互作用を含み、その中にはオープンソースではないコントラクトもある。分析の結果、問題はget_virtual_price関数の返り値にあることがわかった。この関数の返り値は、再入前後で顕著な差異がある。
! ジャービスネットワークフラッシュローン再入攻撃インシデント分析
具体的には、self.D変数の更新はトークンの転送後に発生します。攻撃者が流動性を削除すると、MATICが攻撃者のコントラクトに移されます。コールバックのfallback関数が呼ばれる際、攻撃者は特定のトークンの価格を先に照会しました。self.Dの更新が転送に遅れているため、以前の価格取得に誤りが生じます。
! ジャービスネットワークフラッシュローン再入攻撃インシデント分析
! ジャービスネットワークフラッシュローン再入攻撃インシデント分析
流動性の除去プロセスには、1) ユーザーのLPトークンの焼失;2) ユーザーへのステーキング資金の送信;3) self.D値の更新が含まれます。self.Dは価格計算に使用され、流動性の追加と除去の際に更新されます。攻撃者は、大規模な流動性とself.D更新のタイミングの脆弱性を利用して、ステップ2で再入を行い、元の価格の10倍の価格で借入を行いました。
! ジャービスネットワークフラッシュローン再入攻撃インシデント分析
! ジャービスネットワークフラッシュローン再入攻撃インシデント分析
! ジャービスネットワークフラッシュローン再入攻撃インシデント分析
remove_liquidity関数は@nonreentrant('lock')デコレーターを使用して再入を防止していますが、攻撃者はクロスコントラクト貸付を通じてこの保護機構を回避しました。
! ジャービスネットワークフラッシュローン再入攻撃インシデント分析
! ジャービスネットワークフラッシュローンリエントランシー攻撃インシデント分析
今回の攻撃は、プロジェクトの変数変更ロジックとクロスコントラクト呼び出しの安全性における不足を暴露しました。同様の攻撃を防ぐために、プロジェクトチームに以下の対策を講じることをお勧めします:
! ジャービスネットワークフラッシュローン再入攻撃インシデント分析
! ジャービスネットワークフラッシュローン再入攻撃インシデント分析
これらの対策により、プロジェクトの安全性と安定性を大幅に向上させ、同様の攻撃事件が再発するのを防ぐことができます。