# 一場由瞬態存儲引發的鏈上劫案:30萬美元損失的背後2025年3月30日,一個名爲SIR.trading的以太坊鏈上槓杆交易項目遭受攻擊,導致超過30萬美元的資產損失。安全團隊對此事件進行了深入分析,揭示了攻擊的細節和原因。## 事件背景攻擊者利用了Solidity 0.8.24版本引入的瞬態存儲特性。這種新的數據存儲位置旨在提供低成本、交易期間有效的臨時存儲方式。瞬態存儲的主要特點包括:1. 低gas成本:操作費用固定爲100 gas。2. 交易內持久性:數據在整個交易期間保持有效。3. 自動清除:交易結束後,存儲自動重置爲零。## 攻擊根源攻擊的根本原因在於,函數中使用tstore進行瞬態存儲的值在函數調用結束後並未被清空。這使得攻擊者能夠構造特定的惡意地址,繞過權限檢查並轉出代幣。## 攻擊過程1. 攻擊者創建兩個惡意代幣A和B,並在某DEX上爲這兩個代幣創建池子並注入流動性。2. 攻擊者調用Vault合約的initialize函數,以A代幣爲抵押品,B代幣爲債務代幣創建槓杆交易市場。3. 攻擊者調用Vault合約的mint函數,存入債務代幣B鑄造槓杆代幣。在這個過程中,DEX池子地址和鑄造數量被瞬態存儲。4. 攻擊者創建一個惡意合約,其地址與之前瞬態存儲的鑄造數量相同。5. 攻擊者通過惡意合約調用Vault合約的回調函數,由於瞬態存儲中的值未被清空,成功繞過了權限檢查。6. 最後,攻擊者直接通過攻擊合約調用Vault合約的回調函數,將其他代幣(如WBTC、WETH)轉出獲利。## 資金流向分析根據鏈上分析工具的數據,攻擊者盜取了約30萬美元的資產,包括:- 17,814.8626 USDC- 1.4085 WBTC- 119.871 WETH這些資產隨後被轉換爲WETH,並最終轉入了某匿名化工具。攻擊者的初始資金來源是從該工具轉入的0.3 ETH。## 安全建議爲防止類似攻擊,項目方應:1. 在函數調用結束後立即使用tstore(key, 0)清除瞬態存儲中的值。2. 加強合約代碼審計和安全測試。3. 謹慎使用新引入的語言特性,充分了解其潛在風險。這起事件再次強調了在區塊鏈項目開發中,安全性與新技術應用之間需要保持平衡的重要性。隨着技術的不斷演進,開發者和安全專家需要保持警惕,及時識別和應對新的安全挑戰。
瞬態存儲漏洞導致以太坊項目遭30萬美元黑客攻擊
一場由瞬態存儲引發的鏈上劫案:30萬美元損失的背後
2025年3月30日,一個名爲SIR.trading的以太坊鏈上槓杆交易項目遭受攻擊,導致超過30萬美元的資產損失。安全團隊對此事件進行了深入分析,揭示了攻擊的細節和原因。
事件背景
攻擊者利用了Solidity 0.8.24版本引入的瞬態存儲特性。這種新的數據存儲位置旨在提供低成本、交易期間有效的臨時存儲方式。瞬態存儲的主要特點包括:
攻擊根源
攻擊的根本原因在於,函數中使用tstore進行瞬態存儲的值在函數調用結束後並未被清空。這使得攻擊者能夠構造特定的惡意地址,繞過權限檢查並轉出代幣。
攻擊過程
攻擊者創建兩個惡意代幣A和B,並在某DEX上爲這兩個代幣創建池子並注入流動性。
攻擊者調用Vault合約的initialize函數,以A代幣爲抵押品,B代幣爲債務代幣創建槓杆交易市場。
攻擊者調用Vault合約的mint函數,存入債務代幣B鑄造槓杆代幣。在這個過程中,DEX池子地址和鑄造數量被瞬態存儲。
攻擊者創建一個惡意合約,其地址與之前瞬態存儲的鑄造數量相同。
攻擊者通過惡意合約調用Vault合約的回調函數,由於瞬態存儲中的值未被清空,成功繞過了權限檢查。
最後,攻擊者直接通過攻擊合約調用Vault合約的回調函數,將其他代幣(如WBTC、WETH)轉出獲利。
資金流向分析
根據鏈上分析工具的數據,攻擊者盜取了約30萬美元的資產,包括:
這些資產隨後被轉換爲WETH,並最終轉入了某匿名化工具。攻擊者的初始資金來源是從該工具轉入的0.3 ETH。
安全建議
爲防止類似攻擊,項目方應:
這起事件再次強調了在區塊鏈項目開發中,安全性與新技術應用之間需要保持平衡的重要性。隨着技術的不斷演進,開發者和安全專家需要保持警惕,及時識別和應對新的安全挑戰。