Ethereum項目遭受30萬美元攻擊 瞬態存儲缺陷成主因

robot
摘要生成中

瞬態存儲缺陷導致Ethereum項目遭受30萬美元攻擊

2025年3月30日,某安全監控系統監測到Ethereum鏈上的一個槓杆交易項目遭受攻擊,損失超30萬美元資產。安全團隊對此事件進行了分析,現將結果分享如下:

背景知識

Solidity 0.8.24版本引入了瞬態存儲(transient storage)特性,這是一種新的數據存儲位置。其核心特點是數據僅在當前交易執行期間有效,交易結束後自動清除。通過TSTORE和TLOAD兩個新的EVM指令實現訪問和修改。

瞬態存儲具有以下特點:

  • 低gas成本:TSTORE和TLOAD的gas成本固定爲100
  • 交易內持久性:數據在整個交易期間保持有效
  • 自動清除:交易結束後自動重置爲零

致命殘留:一場由瞬態存儲引發的30萬美元鏈上劫案

漏洞原因

本次事件的根本原因是,函數中使用tstore進行瞬態存儲的值在函數調用結束後沒有被清空。這使得攻擊者能夠利用這一特性構造特定的惡意地址,繞過權限檢查轉出代幣。

致命殘留:一場由瞬態存儲引發的30萬美元鏈上劫案

攻擊過程

  1. 攻擊者創建兩個惡意代幣A和B,並在某DEX上爲這兩個代幣創建池子注入流動性,其中A代幣爲攻擊合約。

  2. 攻擊者調用Vault合約的initialize函數,以A代幣爲抵押品代幣,B代幣爲債務代幣創建槓杆交易市場APE-21。

  3. 攻擊者調用Vault合約的mint函數,存入債務代幣B鑄造槓杆代幣APE。在這個過程中,DEX池子地址和鑄造數量被先後進行瞬態存儲。

  4. 攻擊者創建一個惡意合約,其地址與第二次瞬態存儲的值相同。

  5. 攻擊者通過該惡意合約直接調用Vault合約的回調函數轉出代幣。由於瞬態存儲中的值未被清空,導致身分檢查被錯誤通過。

  6. 最後,攻擊者通過攻擊合約(A代幣)調用Vault合約的回調函數,將Vault合約中的其他代幣(WBTC、WETH)轉出獲利。

致命殘留:一場由瞬態存儲引發的30萬美元鏈上劫案

致命殘留:一場由瞬態存儲引發的30萬美元鏈上劫案

致命殘留:一場由瞬態存儲引發的30萬美元鏈上劫案

致命殘留:一場由瞬態存儲引發的30萬美元鏈上劫案

致命殘留:一場由瞬態存儲引發的30萬美元鏈上劫案

致命殘留:一場由瞬態存儲引發的30萬美元鏈上劫案

致命殘留:一場由瞬態存儲引發的30萬美元鏈上劫案

致命殘留:一場由瞬態存儲引發的30萬美元鏈上劫案

致命殘留:一場由瞬態存儲引發的30萬美元鏈上劫案

致命殘留:一場由瞬態存儲引發的30萬美元鏈上劫案

致命殘留:一場由瞬態存儲引發的30萬美元鏈上劫案

資金流向分析

據鏈上分析,攻擊者盜取了約30萬美元資產,包括17,814.8626 USDC、1.4085 WBTC和119.871 WETH。

  • WBTC被兌換爲63.5596 WETH
  • USDC被兌換爲9.7122 WETH
  • 共193.1428 WETH被轉入某混幣服務

攻擊者的初始資金來源於某混幣服務轉入的0.3 ETH。

致命殘留:一場由瞬態存儲引發的30萬美元鏈上劫案

致命殘留:一場由瞬態存儲引發的30萬美元鏈上劫案

致命殘留:一場由瞬態存儲引發的30萬美元鏈上劫案

致命殘留:一場由瞬態存儲引發的30萬美元鏈上劫案

總結與建議

本次攻擊核心在於利用瞬態存儲在整個交易期間保存值的特性,繞過了回調函數的權限驗證。建議項目方根據業務邏輯在函數調用結束後立即使用tstore(key, 0)清除瞬態存儲中的值。此外,應加強合約代碼審計與安全測試,以避免類似情況發生。

查看原文
此页面可能包含第三方内容,仅供参考(非陈述/保证),不应被视为 Gate 认可其观点表述,也不得被视为财务或专业建议。详见声明
  • 讚賞
  • 3
  • 分享
留言
0/400
社区混子王vip
· 14小時前
又一个沦为提款机的项目
回復0
Blockchain解码vip
· 14小時前
从技术角度看,这是典型的瞬态存储使用不当
回復0
StealthMoonvip
· 14小時前
又是临时存储漏洞?长点心吧
回復0
交易,隨時隨地
qrCode
掃碼下載 Gate APP
社群列表
繁體中文
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)