注意安全風險

作者: Beosin

原用標題:損失約 1000 萬美元,Beosin Trace 對 LI.FI 事件進行追蹤分析

封面: Photo by  Nicolas Arnold  on  Unsplash

2024 年 7 月 16 日,根據 Beosin Alert 監控預警發現跨鏈協定 LI.FI 遭受攻擊,攻擊者利用專案合約中存在的 call 注入漏洞,盜取授權給合約的使用者資產。 Beosin 對本次事件第一時間進行了分析。

詳細攻擊步驟:

攻擊者地址:

0x8B3Cb6Bf982798fba233Bca56749e22EEc42DcF3

被攻擊合約:

0x1231DEB6f5749EF6cE6943a275A1D3E7486F4EaE

(1) 攻擊者部署合約 0x588E7e8E522eD4Dd8DaD263bD72208B099250114,以此作為偽造的資產合約,為後續攻擊做下準備。

(2) 發動攻擊,直接呼叫 LI.FI 主合約的 depositToGasZipERC20 函數。因為 LI.FI 是 Diamond 模式,它會 delegatecall 到 GasZipFacet 合約上的 depositToGasZipERC20 函數。

(3) 在 GasZipFacet 合約上的 depositToGasZipERC20 函數中,call 呼叫的位址和參數都是可以被攻擊者指定,所有攻擊者指定了 callTo 位址為 USDT 和 USDC 等資產,而 call 的 data 被指定為呼叫 transferFrom 函數,此次就可以將授權給合約帳戶的資產轉移出去。

漏洞原因:

LI.FI 專案合約存在 depositToGasZipERC20 函數,可將指定代幣兌換為平台幣並存入 GasZip 合約,但是在兌換邏輯處的程式碼未對 call 呼叫的資料進行限制,導致攻擊者可利用此函數進行 call 注入攻擊,提取走給合約授權使用者的資產。

這次事件除了 call 注入的合約漏洞外,還有一點值得注意,那就是 Diamond 模式下,Facet 合約的配置問題。進一步分析發現,GasZipFacet 合約是在 5 天前部署,並在十幾個小時前,由專案的多簽管理員在 LI.FI 主合約註冊的。

所以,透過這次事件可以發現,對於 Diamond 這類可升級模式,新增功能合約的安全性也需要高度重視。

Beosin Trace 對被盜資金進行追蹤發現,損失金額包括 633.59 萬 USDT、319.19 萬 USDC、16.95 萬 DAI,約 1000 萬美元。攻擊發生在 ETH 以及 Arbitrum 這兩條鏈上,目前大部分資金轉為 ETH 暫無新的動向,Beosin 已將駭客相關地址加入黑地址庫,後續將持續保持追蹤關注。

7 月 16 日,LI.FI 發文表示又發現了 4 個安全漏洞,所有與 LI.FI 協議互動的用戶資金現在都處於危險之中,敦促所有用戶立即撤銷權限。

以下是目前 Beosin 整理的一部分被盜用戶信息,請用戶查閱帳戶安全性,Revoke.cash 已經發布了漏洞檢查工具,用戶可以快速檢查自己(的地址)是否受到影響。目前已知主要受影響的是以太坊網絡,其他鏈上的部分合約也有類似問題。

免責聲明:作為區塊鏈資訊平台,本站所發布文章僅代表作者及來賓個人觀點,與 Web3Caff 立場無關。文章內的資訊僅供參考,均不構成任何投資建議及要約,並請您遵守所在國家或地區的相關法律法規。