瞬态存储漏洞致链上项目遭30万美元攻击 专家解析防范建议

robot
摘要生成中

瞬态存储漏洞引发的30万美元链上攻击事件分析

2025年3月30日,某链上杠杆交易项目遭到攻击,造成超30万美元资产损失。安全团队对此事件进行了深入分析,现将结果分享如下:

背景

攻击发生在Ethereum网络上,目标是一个杠杆交易项目。攻击者利用了该项目合约中的一个瞬态存储相关漏洞。

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

前置知识

Solidity 0.8.24版本引入了瞬态存储(transient storage)特性,这是一种新的数据存储位置。其主要特点包括:

  • 低gas成本:TSTORE和TLOAD操作固定消耗100 gas
  • 交易内持久性:数据在整个交易期间保持有效
  • 自动清除:交易结束后自动重置为零

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

漏洞原因

本次攻击的根本原因是,合约中使用tstore进行瞬态存储的值在函数调用结束后没有被清空。这使得攻击者能够利用这一特性构造特定地址,绕过权限检查并转出代币。

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

攻击流程

  1. 攻击者创建两个恶意代币A和B,并在某DEX上为它们创建流动性池。
  2. 调用目标合约的initialize函数,以A代币为抵押品、B代币为债务代币创建杠杆交易市场。
  3. 调用mint函数存入B代币铸造杠杆代币,此过程中进行了两次瞬态存储操作。
  4. 创建一个地址与第二次瞬态存储值相同的恶意合约。
  5. 通过该恶意合约调用目标合约的回调函数,绕过权限检查转出代币。
  6. 最后通过攻击合约(A代币)再次调用回调函数,将其他代币(如WBTC、WETH)转出获利。

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

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

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

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

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

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

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

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

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

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

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

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

资金流向分析

攻击者共盗取约30万美元资产,包括:

  • 17,814.8626 USDC
  • 1.4085 WBTC
  • 119.871 WETH

随后,攻击者将WBTC和USDC兑换为WETH,最终将193.1428 WETH转入某混币服务。

攻击者的初始资金(0.3 ETH)也来自该混币服务。

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

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

总结与建议

本次攻击核心在于利用了瞬态存储在整个交易期间保持值不变的特性,从而绕过了合约的权限验证。为防止类似攻击,建议项目方:

  1. 在函数调用结束后立即使用tstore(key, 0)清除瞬态存储中的值。
  2. 加强合约代码审计和安全测试。
  3. 谨慎使用新引入的语言特性,充分了解其潜在风险。
WBTC0.45%
此页面可能包含第三方内容,仅供参考(非陈述/保证),不应被视为 Gate 认可其观点表述,也不得被视为财务或专业建议。详见声明
  • 赞赏
  • 6
  • 分享
评论
0/400
养老金毁灭者vip
· 7小时前
又有韭菜寄了
回复0
测试网薅毛狂人vip
· 7小时前
阿这 白嫖几把啊连自己项目都hold不住
回复0
盲盒恐惧症vip
· 7小时前
坏了坏了 又有兄弟踩雷了
回复0
熊市修行者vip
· 7小时前
撸羊毛也撸走了合约洞
回复0
DeFiAlchemistvip
· 7小时前
啊,又一只牺牲品献给智能合约利用的黑暗艺术…… *调整水晶球* 这些短暂的存储漏洞就像协议炼金术密封的裂缝
查看原文回复0
测试网游民vip
· 8小时前
惨啦 又被薅一波
回复0
交易,随时随地
qrCode
扫码下载 Gate APP
社群列表
简体中文
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)