Jarvis Network遭閃電貸重入攻擊 663,101 MATIC被盜

robot
摘要生成中

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

2023年1月15日,Jarvis_Network項目遭到攻擊,導致663,101個MATIC被盜。這起事件引發了對項目安全性的關注。

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

通過對交易調用棧的分析,發現攻擊者利用了重入漏洞。在重入過程中,對同一合約的相同函數調用,雖然輸入參數相同,但返回值卻有顯著差異。這種差異主要發生在remove_liquidity函數中。

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

重入攻擊主要針對某智能合約的remove_liquidity函數。該函數在移除流動性時會將用戶添加的代幣返回。由於Polygon和EVM鏈的同構性,在MATIC轉帳給合約時觸發了重入邏輯。

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

進一步分析發現,問題出在getUnderlyingPrice函數的實現上。該函數涉及多個未開源的合約,增加了分析難度。然而,通過檢查存儲槽和調用棧,我們可以推斷出關鍵變量的值和函數調用路徑。

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

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

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

攻擊的核心在於get_virtual_price函數的返回值在重入前後發生了顯著變化。這個變化與self.D變量的更新時機有關。正常情況下,self.D應該在轉帳完成後更新,但在此次攻擊中,由於重入的發生,導致價格計算出現錯誤。

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

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

remove_liquidity函數的執行流程包括:1) 銷毀用戶LP代幣;2) 發送質押資金給用戶;3) 更新self.D值。攻擊者在第二步進行重入,利用未及時更新的self.D值進行借貸,從而獲取了不當利益。

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

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

值得注意的是,雖然remove_liquidity函數使用了@nonreentrant('lock')裝飾器來防止重入,但由於攻擊者重入後進入了其他合約進行借貸,這個重入鎖並未起到預期效果。

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

這次攻擊暴露了智能合約中變量更新時機的重要性。爲提高安全性,建議項目方採取以下措施:

  1. 進行嚴格的安全審計
  2. 確保變量修改在外部調用之前完成
  3. 採用多數據源方式獲取價格信息
  4. 遵循"檢查-生效-交互"(Checks-Effects-Interactions)模式編寫代碼

通過實施這些最佳實踐,可以顯著提升智能合約的安全性和穩定性,爲Web3生態系統提供更可靠的基礎設施。

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

查看原文
此頁面可能包含第三方內容,僅供參考(非陳述或保證),不應被視為 Gate 認可其觀點表述,也不得被視為財務或專業建議。詳見聲明
  • 讚賞
  • 4
  • 分享
留言
0/400
薄饼吃不起vip
· 5小時前
又被割一茬韭菜了呢~
回復0
RugPull Therapistvip
· 5小時前
又一家项目跑路??惨~
回復0
not_your_keysvip
· 6小時前
又有项目被薅啦~
回復0
GateUser-a180694bvip
· 6小時前
这代码审计也太水了吧?!
回復0
交易,隨時隨地
qrCode
掃碼下載 Gate APP
社群列表
繁體中文
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)