瞬態存儲漏洞致鏈上項目遭30萬美元攻擊 專家解析防範建議

robot
摘要生成中

瞬態存儲漏洞引發的30萬美元鏈上攻擊事件分析

2025年3月30日,某鏈上槓杆交易項目遭到攻擊,造成超30萬美元資產損失。安全團隊對此事件進行了深入分析,現將結果分享如下:

背景

攻擊發生在Ethereum網路上,目標是一個槓杆交易項目。攻擊者利用了該項目合約中的一個瞬態存儲相關漏洞。

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

前置知識

Solidity 0.8.24版本引入了瞬態存儲(transient storage)特性,這是一種新的數據存儲位置。其主要特點包括:

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

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

漏洞原因

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

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

攻擊流程

  1. 攻擊者創建兩個惡意代幣A和B,並在某DEX上爲它們創建流動性池。
  2. 調用目標合約的initialize函數,以A代幣爲抵押品、B代幣爲債務代幣創建槓杆交易市場。
  3. 調用mint函數存入B代幣鑄造槓杆代幣,此過程中進行了兩次瞬態存儲操作。
  4. 創建一個地址與第二次瞬態存儲值相同的惡意合約。
  5. 通過該惡意合約調用目標合約的回調函數,繞過權限檢查轉出代幣。
  6. 最後通過攻擊合約(A代幣)再次調用回調函數,將其他代幣(如WBTC、WETH)轉出獲利。

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

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

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

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

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

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

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

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

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

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

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

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

資金流向分析

攻擊者共盜取約30萬美元資產,包括:

  • 17,814.8626 USDC
  • 1.4085 WBTC
  • 119.871 WETH

隨後,攻擊者將WBTC和USDC兌換爲WETH,最終將193.1428 WETH轉入某混幣服務。

攻擊者的初始資金(0.3 ETH)也來自該混幣服務。

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

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

總結與建議

本次攻擊核心在於利用了瞬態存儲在整個交易期間保持值不變的特性,從而繞過了合約的權限驗證。爲防止類似攻擊,建議項目方:

  1. 在函數調用結束後立即使用tstore(key, 0)清除瞬態存儲中的值。
  2. 加強合約代碼審計和安全測試。
  3. 謹慎使用新引入的語言特性,充分了解其潛在風險。
WBTC0.51%
查看原文
此頁面可能包含第三方內容,僅供參考(非陳述或保證),不應被視為 Gate 認可其觀點表述,也不得被視為財務或專業建議。詳見聲明
  • 讚賞
  • 6
  • 分享
留言
0/400
养老金毁灭者vip
· 7小時前
又有韭菜寄了
回復0
测试网薅毛狂人vip
· 7小時前
阿这 白嫖几把啊连自己项目都hold不住
回復0
盲盒恐惧症vip
· 7小時前
坏了坏了 又有兄弟踩雷了
回復0
熊市修行者vip
· 7小時前
撸羊毛也撸走了合约洞
回復0
DeFiAlchemistvip
· 8小時前
啊,又一只牺牲品献给智能合约利用的黑暗艺术…… *调整水晶球* 这些短暂的存储漏洞就像协议炼金术密封的裂缝
查看原文回復0
测试网游民vip
· 8小時前
惨啦 又被薅一波
回復0
交易,隨時隨地
qrCode
掃碼下載 Gate APP
社群列表
繁體中文
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)