瞬态存储漏洞致项目遭30万美元攻击 链上安全再敲警钟

瞬态存储漏洞导致链上项目遭受30万美元攻击

2025年3月30日,Ethereum链上一个杠杆交易项目遭受攻击,损失超过30万美元的资产。安全团队对此事件进行了深入分析,以下是相关发现:

事件背景

攻击者利用了Solidity 0.8.24版本引入的瞬态存储(transient storage)特性中的一个漏洞。瞬态存储是一种新的数据存储位置,旨在提供低成本、交易期间有效的临时存储方式。它通过TSTORE和TLOAD指令实现,具有低gas成本、交易内持久性和自动清除等特点。

致命残留:一场由瞬态存储引发的30万美元链上劫案

攻击根源

攻击的根本原因在于,函数中使用tstore进行瞬态存储的值在函数调用结束后没有被清空。攻击者利用这一特性,构造了特定的恶意地址来绕过权限检查,从而转出项目中的代币。

致命残留:一场由瞬态存储引发的30万美元链上劫案

攻击过程

  1. 创建恶意代币并建立交易池:攻击者创建两个恶意代币A和B,并在某DEX上为这两个代币创建池子并注入流动性。

致命残留:一场由瞬态存储引发的30万美元链上劫案

  1. 初始化杠杆交易市场:攻击者调用项目合约的initialize函数,以A代币为抵押品,B代币为债务代币创建杠杆交易市场。

致命残留:一场由瞬态存储引发的30万美元链上劫案

  1. 铸造杠杆代币:攻击者调用mint函数,存入债务代币B铸造杠杆代币。在这个过程中,DEX池子地址和铸造数量被瞬态存储。

致命残留:一场由瞬态存储引发的30万美元链上劫案

  1. 创建恶意合约:攻击者创建一个地址与瞬态存储中铸造数量相同的恶意合约。

致命残留:一场由瞬态存储引发的30万美元链上劫案

  1. 绕过权限验证:攻击者通过恶意合约调用项目合约的回调函数,由于瞬态存储中的值未被清空,导致权限检查被错误通过。

致命残留:一场由瞬态存储引发的30万美元链上劫案

  1. 转出资产:最后,攻击者通过攻击合约直接调用项目合约的回调函数,将合约中的其他代币(如WBTC、WETH)转出获利。

致命残留:一场由瞬态存储引发的30万美元链上劫案

损失评估

据链上分析工具的数据,攻击者盗取了约30万美元的资产,包括17,814.8626 USDC、1.4085 WBTC和119.871 WETH。这些资产随后被兑换并转入某匿名系统。

致命残留:一场由瞬态存储引发的30万美元链上劫案

安全建议

  1. 合理使用瞬态存储:项目方应根据业务逻辑,在函数调用结束后立即使用tstore(key, 0)清除瞬态存储中的值。

致命残留:一场由瞬态存储引发的30万美元链上劫案

  1. 加强合约审计:应对项目合约代码进行全面的安全审计和测试,以发现并修复潜在的漏洞。

致命残留:一场由瞬态存储引发的30万美元链上劫案

  1. 完善权限验证:在关键操作中实施多重验证机制,避免单一验证被绕过。

致命残留:一场由瞬态存储引发的30万美元链上劫案

  1. 监控异常活动:部署实时监控系统,及时发现和响应可疑交易。

致命残留:一场由瞬态存储引发的30万美元链上劫案

本次事件再次强调了在采用新技术特性时进行全面安全评估的重要性。随着区块链技术的不断发展,项目方需要保持警惕,持续更新安全实践,以应对不断演变的攻击手法。

致命残留:一场由瞬态存储引发的30万美元链上劫案

致命残留:一场由瞬态存储引发的30万美元链上劫案

致命残留:一场由瞬态存储引发的30万美元链上劫案

致命残留:一场由瞬态存储引发的30万美元链上劫案

WBTC0.63%
此页面可能包含第三方内容,仅供参考(非陈述/保证),不应被视为 Gate 认可其观点表述,也不得被视为财务或专业建议。详见声明
  • 赞赏
  • 3
  • 分享
评论
0/400
Gas费破产家vip
· 07-27 11:42
又一个漏洞大坑
回复0
WalletDivorcervip
· 07-25 07:46
掉的都是教训钱
回复0
MetaMuskRatvip
· 07-25 07:31
相当昂贵的教训啊
回复0
交易,随时随地
qrCode
扫码下载 Gate APP
社群列表
简体中文
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)