瞬態存儲漏洞導致以太坊項目遭30萬美元黑客攻擊

robot
摘要生成中

一場由瞬態存儲引發的鏈上劫案:30萬美元損失的背後

2025年3月30日,一個名爲SIR.trading的以太坊鏈上槓杆交易項目遭受攻擊,導致超過30萬美元的資產損失。安全團隊對此事件進行了深入分析,揭示了攻擊的細節和原因。

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

事件背景

攻擊者利用了Solidity 0.8.24版本引入的瞬態存儲特性。這種新的數據存儲位置旨在提供低成本、交易期間有效的臨時存儲方式。瞬態存儲的主要特點包括:

  1. 低gas成本:操作費用固定爲100 gas。
  2. 交易內持久性:數據在整個交易期間保持有效。
  3. 自動清除:交易結束後,存儲自動重置爲零。

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

攻擊根源

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

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

攻擊過程

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

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

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

  4. 攻擊者創建一個惡意合約,其地址與之前瞬態存儲的鑄造數量相同。

  5. 攻擊者通過惡意合約調用Vault合約的回調函數,由於瞬態存儲中的值未被清空,成功繞過了權限檢查。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

資金流向分析

根據鏈上分析工具的數據,攻擊者盜取了約30萬美元的資產,包括:

  • 17,814.8626 USDC
  • 1.4085 WBTC
  • 119.871 WETH

這些資產隨後被轉換爲WETH,並最終轉入了某匿名化工具。攻擊者的初始資金來源是從該工具轉入的0.3 ETH。

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

安全建議

爲防止類似攻擊,項目方應:

  1. 在函數調用結束後立即使用tstore(key, 0)清除瞬態存儲中的值。
  2. 加強合約代碼審計和安全測試。
  3. 謹慎使用新引入的語言特性,充分了解其潛在風險。

這起事件再次強調了在區塊鏈項目開發中,安全性與新技術應用之間需要保持平衡的重要性。隨着技術的不斷演進,開發者和安全專家需要保持警惕,及時識別和應對新的安全挑戰。

ETH2.74%
查看原文
此頁面可能包含第三方內容,僅供參考(非陳述或保證),不應被視為 Gate 認可其觀點表述,也不得被視為財務或專業建議。詳見聲明
  • 讚賞
  • 7
  • 分享
留言
0/400
MemeTokenGeniusvip
· 2小時前
蠢蠢惹人爱啊 连测都不测就上线?
回復0
quiet_lurkervip
· 2小時前
又一个项目被摁在地上摩擦
回復0
PumpBeforeRugvip
· 2小時前
听说这回转头就跑啦~智能合约小漏洞
回復0
MEV猎手vip
· 2小時前
这30w也太便宜了 闪电贷都懒得跑
回復0
合约自动投降vip
· 2小時前
老项目梭哈新特性 凉凉...
回復0
难道我又错过空投vip
· 2小時前
呵 小打小闹的30w罢了
回復0
末曾在场vip
· 2小時前
这么低级的漏洞都能中招?
回復0
交易,隨時隨地
qrCode
掃碼下載 Gate APP
社群列表
繁體中文
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)