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

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

2023年1月15日,Jarvis_Network項目遭到黑客攻擊,損失663101個MATIC。通過對交易數據的分析,發現此次攻擊涉及閃電貸和重入漏洞。

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

攻擊者利用了remove_liquidity函數中的漏洞。在移除流動性時,該函數會將用戶添加的代幣返回。由於Polygon和EVM是同構鏈,MATIC轉帳給合約時會觸發合約的重入邏輯。

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

重點關注getUnderlyingPrice函數的調用過程。該函數涉及多個合約的交互,其中一些合約並未開源。通過分析發現,問題出在get_virtual_price函數的返回值上。這個函數的返回值在重入前後存在顯著差異。

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

具體來說,self.D變量的更新發生在代幣轉帳之後。攻擊者在移除流動性時,MATIC被轉移到攻擊者合約。在回調fallback函數時,攻擊者先查詢了某代幣的價格。由於self.D的更新滯後於轉帳,導致之前的價格獲取出現錯誤。

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

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

移除流動性的過程包括:1) 銷毀用戶LP代幣;2) 向用戶發送質押資金;3) 更新self.D值。self.D用於價格計算,在添加和移除流動性時都會更新。攻擊者利用了大額流動性和self.D更新時機的漏洞,在步驟2中進行重入,並以原始價格10倍的價格進行借貸。

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

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

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

雖然remove_liquidity函數使用了@nonreentrant('lock')修飾器來防止重入,但攻擊者通過跨合約借貸繞過了這一保護機制。

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

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

此次攻擊暴露出項目在變量修改邏輯和跨合約調用安全性方面的不足。爲防範類似攻擊,建議項目方採取以下措施:

  1. 進行嚴格的安全審計。
  2. 將變量修改放在外部調用之前。
  3. 採用多數據源方式獲取價格。
  4. 遵循"檢查-生效-交互"(Checks-Effects-Interactions)的編碼規範。

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

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

通過這些措施,可以顯著提高項目的安全性和穩定性,防止類似的攻擊事件再次發生。

查看原文
此頁面可能包含第三方內容,僅供參考(非陳述或保證),不應被視為 Gate 認可其觀點表述,也不得被視為財務或專業建議。詳見聲明
  • 讚賞
  • 6
  • 分享
留言
0/400
NFT收藏癖vip
· 11小時前
这项目的测试也太水了 一脚就破防了
回復0
RektDetectivevip
· 07-19 06:12
又有人翻车 matic转账检查都不做 小白写代码?
回復0
币圈黄昏浪子vip
· 07-18 23:29
还在躺着抄合约呢,重入都没搞明白~
回復0
StableGeniusvip
· 07-18 23:29
哈哈又一天又一次黑客攻击... 实话实说如我所预料的那样
查看原文回復0
假设性清算vip
· 07-18 23:18
老毛病又犯了 还不锁个重入锁?
回復0
failed_dev_successful_apevip
· 07-18 23:11
项目方睡觉的时候 别人搁这溜门撬锁呢~
回復0
交易,隨時隨地
qrCode
掃碼下載 Gate APP
社群列表
繁體中文
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)