Jarvis Networkはフラッシュローンの再入攻撃を受け、663,101 MATICの損失を被りました。

robot
概要作成中

Jarvis Networkプロジェクトがフラッシュローンの再入攻撃に遭遇した分析

2023年1月15日、Jarvis_Networkプロジェクトが攻撃を受け、663,101個のMATICが失われました。攻撃トランザクションのコールスタック分析を通じて、再入ロジックが存在することが発見されました。再入過程において、同じコントラクトの同じ関数呼び出しに同じ引数を渡しましたが、戻り値は大きく異なりました。

! ジャービスネットワークフラッシュローン再入攻撃インシデント分析

再入はremove_liquidity関数内で発生します。この関数は流動性を削除する際に、ユーザーが追加したトークンを返します。PolygonはEVMと同型であるため、MATICがコントラクトに転送されると再入が発生します。

! ジャービスネットワークフラッシュローン再入攻撃インシデント分析

詳細な分析から、問題はgetUnderlyingPrice関数の実装にあることがわかりました。この関数は複数のコントラクト呼び出しに関与しており、最終的にget_virtual_price関数の返り値に影響を与えます。get_virtual_price関数の返り値はself.D変数に影響され、self.Dの更新は送金の後に行われます。

! ジャービスネットワークフラッシュローン再入攻撃インシデント分析

攻撃者が流動性を削除する際、MATICが攻撃契約に移転された後に、fallback関数が価格を照会します。self.Dの更新が送金後に行われるため、以前の価格取得が誤ってしまいます。流動性を削除する方法の流れは次の通りです:1)ユーザーLPの破棄;2)ユーザーのステーキング資金の送信;3)self.Dの更新。

! ジャービスネットワークフラッシュローン再入攻撃インシデント分析

self.Dは価格計算に使用され、流動性を追加する際にも更新されます。攻撃者の流動性資金は大きく、通常はself.Dの値はずっと小さくなります。しかし、攻撃者はステップ2でリ入を行い、元の価格の10倍以上で借入を行います。これは、流動性を追加する際にself.Dの値が増加し、流動性を削除する際に適時更新されないためです。

! ジャービスネットワークフラッシュローン再入攻撃インシデント分析

remove_liquidityメソッドは、@nonreentrant('lock')を使用して再入を防止していますが、攻撃者は他のコントラクトに再入することで資金を借り入れ、再入ロックを無効にします。

! ジャービスネットワークフラッシュローン再入攻撃インシデント分析

今回の攻撃の主な原因は、外部呼び出しの後に変数の変更ロジックが行われたことで、価格取得に異常が生じたことです。クロスコントラクトの再入が再入ロックを無効にしました。プロジェクトチームには厳格なセキュリティ監査を実施し、変数の変更を外部呼び出しの前に行い、複数のデータソースを用いた価格取得方法を採用することをお勧めします。「先に判断し、次に変数を書き込み、その後外部呼び出しを行う」というコーディング規範(Checks-Effects-Interactions)に従うことで、プロジェクトの安全性と安定性を向上させることができます。

! ジャービスネットワークフラッシュローン再入攻撃インシデント分析

! ジャービスネットワークフラッシュローン再入攻撃インシデント分析

! ジャービスネットワークフラッシュローン再入攻撃インシデント分析

! ジャービスネットワークフラッシュローンリエントランシー攻撃インシデント分析

! ジャービスネットワークフラッシュローン再入攻撃インシデント分析

! ジャービスネットワークフラッシュローン再入攻撃インシデント分析

原文表示
このページには第三者のコンテンツが含まれている場合があり、情報提供のみを目的としております(表明・保証をするものではありません)。Gateによる見解の支持や、金融・専門的な助言とみなされるべきものではありません。詳細については免責事項をご覧ください。
  • 報酬
  • 6
  • 共有
コメント
0/400
All-InQueenvip
· 19時間前
ブロックチェーンまた暴落 麻了
原文表示返信0
HalfBuddhaMoneyvip
· 08-02 05:37
こんなに取れないよ...
原文表示返信0
ZeroRushCaptainvip
· 08-02 05:37
また一人戦死した、全貯金が水の泡に。損をしたサム・アルトマン、突撃だ!
原文表示返信0
ForkLibertarianvip
· 08-02 05:29
手速がこんなに遅いと、損切りしてラグプルするのも遅れてしまう。
原文表示返信0
StakeTillRetirevip
· 08-02 05:24
また一つの再入場事故 自閉した
原文表示返信0
SighingCashiervip
· 08-02 05:13
やらかしたな、また再入場の脆弱性か
原文表示返信0
いつでもどこでも暗号資産取引
qrCode
スキャンしてGateアプリをダウンロード
コミュニティ
日本語
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)