# 瞬態存儲漏洞導致價值30萬美元資產被盜2025年3月30日,以太坊鏈上的槓杆交易項目遭受攻擊,損失超過30萬美元的資產。安全團隊對此事件進行了深入分析,現將結果分享如下:## 背景Solidity 0.8.24版本引入了基於EIP-1153的瞬態存儲特性。這是一種新的數據存儲位置,旨在爲開發者提供低成本、交易期間有效的臨時存儲方式。瞬態存儲通過TSTORE和TLOAD兩個新的EVM指令實現,具有低gas成本、交易內持久性和自動清除等特點。## 攻擊原因本次事件的根本原因是,函數中使用tstore進行瞬態存儲的值在函數調用結束後沒有被清空。攻擊者利用這個特性構造特定的惡意地址,繞過權限檢查轉出代幣。## 攻擊步驟1. 攻擊者創建兩個惡意代幣A和B,並在某DEX上爲這兩個代幣創建池子並注入流動性。2. 攻擊者調用Vault合約的initialize函數,以A代幣爲抵押品代幣,B代幣爲債務代幣創建槓杆交易市場。3. 攻擊者調用Vault合約的mint函數,存入債務代幣B鑄造槓杆代幣。在這個過程中,DEX池子地址和鑄造數量被瞬態存儲。4. 攻擊者創建一個惡意合約,其地址與第二次瞬態存儲的值相同。5. 攻擊者通過惡意合約調用Vault合約的回調函數轉出代幣。由於瞬態存儲的值未被清空,導致身分檢查被錯誤通過。6. 最後,攻擊者通過攻擊合約(A代幣)調用Vault合約的回調函數,將其他代幣(如WBTC、WETH)轉出獲利。## 資金流向分析攻擊者盜取了約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。## 總結本次攻擊核心在於攻擊者利用瞬態存儲在整個交易期間保持不變的特性,繞過了回調函數的權限驗證。建議項目方根據業務邏輯在函數調用結束後立即使用tstore(key, 0)清除瞬態存儲中的值。同時,應加強合約代碼審計與安全測試,以防類似情況發生。
瞬態存儲漏洞致以太坊槓杆交易項目損失30萬美元
瞬態存儲漏洞導致價值30萬美元資產被盜
2025年3月30日,以太坊鏈上的槓杆交易項目遭受攻擊,損失超過30萬美元的資產。安全團隊對此事件進行了深入分析,現將結果分享如下:
背景
Solidity 0.8.24版本引入了基於EIP-1153的瞬態存儲特性。這是一種新的數據存儲位置,旨在爲開發者提供低成本、交易期間有效的臨時存儲方式。瞬態存儲通過TSTORE和TLOAD兩個新的EVM指令實現,具有低gas成本、交易內持久性和自動清除等特點。
攻擊原因
本次事件的根本原因是,函數中使用tstore進行瞬態存儲的值在函數調用結束後沒有被清空。攻擊者利用這個特性構造特定的惡意地址,繞過權限檢查轉出代幣。
攻擊步驟
攻擊者創建兩個惡意代幣A和B,並在某DEX上爲這兩個代幣創建池子並注入流動性。
攻擊者調用Vault合約的initialize函數,以A代幣爲抵押品代幣,B代幣爲債務代幣創建槓杆交易市場。
攻擊者調用Vault合約的mint函數,存入債務代幣B鑄造槓杆代幣。在這個過程中,DEX池子地址和鑄造數量被瞬態存儲。
攻擊者創建一個惡意合約,其地址與第二次瞬態存儲的值相同。
攻擊者通過惡意合約調用Vault合約的回調函數轉出代幣。由於瞬態存儲的值未被清空,導致身分檢查被錯誤通過。
最後,攻擊者通過攻擊合約(A代幣)調用Vault合約的回調函數,將其他代幣(如WBTC、WETH)轉出獲利。
資金流向分析
攻擊者盜取了約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。
總結
本次攻擊核心在於攻擊者利用瞬態存儲在整個交易期間保持不變的特性,繞過了回調函數的權限驗證。建議項目方根據業務邏輯在函數調用結束後立即使用tstore(key, 0)清除瞬態存儲中的值。同時,應加強合約代碼審計與安全測試,以防類似情況發生。