# 一场由瞬态存储引发的链上劫案: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。
安全建议
为防止类似攻击,项目方应:
这起事件再次强调了在区块链项目开发中,安全性与新技术应用之间需要保持平衡的重要性。随着技术的不断演进,开发者和安全专家需要保持警惕,及时识别和应对新的安全挑战。