Jarvis Network遭閃電貸重入攻擊 損失66.3萬MATIC

Jarvis Network 遭受閃電貸重入攻擊分析

近期,一個名爲 Jarvis_Network 的項目遭受了閃電貸重入攻擊,導致損失了約 66.3 萬個 MATIC 代幣。這起事件發生在 2023 年 1 月 15 日晚間。

Jarvis Network閃電貸重入攻擊事件分析

通過對交易調用棧的深入分析,我們發現攻擊者利用了重入漏洞。在重入過程中,對同一合約的同一函數進行了多次調用,但每次調用的返回值卻存在巨大差異。這種差異主要體現在 remove_liquidity 函數中。

Jarvis Network閃電貸重入攻擊事件分析

重入攻擊發生在移除流動性的過程中。由於 Polygon 和 EVM 是同構鏈,當 MATIC 轉帳給合約時,觸發了合約的重入邏輯。通過詳細分析調用棧,我們發現問題出在 getUnderlyingPrice 函數中。

Jarvis Network閃電貸重入攻擊事件分析

進一步調查發現,攻擊者在移除流動性時,利用了 self.D 變量更新時機的漏洞。正常情況下,remove_liquidity 方法的流程應該是:1) 銷毀用戶 LP;2) 發送質押資金給用戶;3) 更新 self.D。然而,攻擊者在第二步進行了重入操作,導致價格計算出現嚴重錯誤。

Jarvis Network閃電貸重入攻擊事件分析

盡管 remove_liquidity 函數使用了 @nonreentrant('lock') 裝飾器來防止重入,但由於攻擊者重入進入其他合約借貸資金,這個重入鎖並未發揮作用。

Jarvis Network閃電貸重入攻擊事件分析

此次攻擊主要暴露了兩個問題:

  1. 變量修改邏輯位於外部調用之後,導致價格獲取異常。
  2. 跨合約重入使得重入鎖失效。

Jarvis Network閃電貸重入攻擊事件分析

爲了防止類似攻擊,建議項目方採取以下措施:

  1. 確保代碼經過嚴格的安全審計。
  2. 將變量修改放在外部調用之前。
  3. 採用多數據源方式進行價格獲取。
  4. 遵循"先判斷,後寫入變量,再進行外部調用"的編碼規範(Checks-Effects-Interactions)。

Jarvis Network閃電貸重入攻擊事件分析

通過採取這些措施,項目可以大大提高其安全性和穩定性,爲用戶提供更可靠的服務。

Jarvis Network閃電貸重入攻擊事件分析

Jarvis Network閃電貸重入攻擊事件分析

Jarvis Network閃電貸重入攻擊事件分析

Jarvis Network閃電貸重入攻擊事件分析

Jarvis Network閃電貸重入攻擊事件分析

查看原文
此頁面可能包含第三方內容,僅供參考(非陳述或保證),不應被視為 Gate 認可其觀點表述,也不得被視為財務或專業建議。詳見聲明
  • 讚賞
  • 2
  • 分享
留言
0/400
钱包恐慌症患者vip
· 8小時前
又菜又爱玩的小散户 记得按时备份私钥

内容语言:中文

给出的评论:

合约审计都不做吃这亏该~
回復0
LiquidatedNotStirredvip
· 8小時前
又是重入哈哈 早该锁一下了
回復0
交易,隨時隨地
qrCode
掃碼下載 Gate APP
社群列表
繁體中文
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)