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

robot
摘要生成中

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

2023年1月15日,Jarvis_Network項目遭遇了一次重大攻擊事件,造成663,101枚MATIC的損失。這次攻擊利用了閃電貸和重入攻擊的組合手法,暴露了項目合約中的嚴重漏洞。

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

攻擊者巧妙地利用了remove_liquidity函數中的一個漏洞。該函數在移除流動性時會返還用戶添加的代幣。由於Polygon鏈與EVM兼容,當MATIC轉帳給合約時,就會觸發合約的重入邏輯。

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

分析發現,攻擊的關鍵在於getUnderlyingPrice函數的調用。這個函數在重入前後返回了顯著不同的價格:重入前爲1002157321772769944,重入後則高達10091002696492234934,相差近10倍。

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

問題的根源在於合約更新self.D變量的時機不當。remove_liquidity函數的執行順序是:1) 銷毀用戶LP代幣;2) 發送質押資金給用戶;3) 更新self.D。攻擊者在第二步進行了重入,利用尚未更新的self.D值獲取了錯誤的價格信息,從而進行了有利可圖的借貸操作。

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

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

雖然remove_liquidity函數使用了@nonreentrant('lock')裝飾器來防止重入,但由於攻擊涉及跨合約操作,這個防護措施未能奏效。

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

這次事件凸顯了幾個關鍵的安全原則:

  1. 變量修改應在外部調用之前完成,以防止狀態不一致。
  2. 價格獲取機制應採用多數據源方式,增強可靠性。
  3. 代碼邏輯應遵循"檢查-生效-交互"(Checks-Effects-Interactions)模式,即先進行條件檢查,然後修改狀態變量,最後才進行外部調用。

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

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

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

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

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

此次攻擊再次證明,智能合約的安全審計至關重要。項目方應該更加重視合約的安全性,確保代碼經過全面嚴格的審核,以防範類似漏洞的出現。

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

查看原文
此頁面可能包含第三方內容,僅供參考(非陳述或保證),不應被視為 Gate 認可其觀點表述,也不得被視為財務或專業建議。詳見聲明
  • 讚賞
  • 留言
  • 分享
留言
0/400
暫無留言
交易,隨時隨地
qrCode
掃碼下載 Gate APP
社群列表
繁體中文
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)