DeFi噩梦:30万美元瞬间蒸发,新型黑客手法曝光!

2025-04-02 11:59:49 黑客攻击 author

SIR.trading 遭攻击事件:瞬态存储的陷阱与 DeFi 的脆弱

背景:又一起 DeFi 安全事故

2025 年 3 月 30 日,又一个 DeFi 项目倒在了安全漏洞的枪口之下。这次中枪的是 Ethereum 链上的杠杆交易项目 SIR.trading,损失超过 30 万美元。慢雾 MistEye 安全监控系统虽然第一时间发出警报,但亡羊补牢,终究无法挽回损失。DeFi 的高风险性再次被血淋淋地摆在了我们面前。每次看到这类事件,我都会忍不住反思:所谓的“去中心化金融”,难道最终只会沦为黑客的提款机?

![/uploads/images/20250401/KOMU9IoRp6AeEi4Fx5drdCAtLSgfZphYtWaZb3WP.png]

这次事件的核心在于对 Solidity 0.8.24 版本引入的瞬态存储(transient storage)特性的恶意利用。瞬态存储本意是为开发者提供一种低成本、交易期间有效的临时存储方式,但 SIR.trading 显然没能正确驾驭这把“双刃剑”。慢雾安全团队的分析报告揭示了攻击的来龙去脉,但这背后的问题却远不止一个漏洞那么简单。DeFi 的安全性,到底路在何方?这不仅仅是技术问题,更是关乎整个行业能否健康发展的根本问题。

攻击事件复盘:一场精心策划的链上盗窃

漏洞根源:EIP-1153 瞬态存储的潜在风险

Solidity 0.8.24 版本引入的 EIP-1153 瞬态存储,原本是为了提升智能合约的效率,降低 Gas 成本。它的设计理念是,数据只在当前交易执行期间有效,交易结束后自动清除。理想情况下,这应该是一种方便开发者使用的工具。然而,SIR.trading 的案例却证明,任何新特性在带来便利的同时,也可能引入新的安全风险,尤其是在缺乏充分理解和安全审计的情况下。

瞬态存储的核心在于 TSTORETLOAD 指令,它们允许开发者在交易过程中临时存储和读取数据,而无需像传统存储那样付出高昂的 Gas 费用。但问题在于,这种“交易内持久性”的特性,如果使用不当,就会被攻击者利用,绕过权限验证,窃取资金。

这次攻击的根本原因在于,SIR.trading 的合约中,在函数调用中使用 tstore 进行瞬态存储的值,在函数调用结束后并没有被清空。这就像一个没上锁的房间,黑客可以随意进出,篡改数据。更令人担忧的是,这种问题并非个例。DeFi 项目为了追求创新和效率,往往会采用各种新的技术特性,但安全审计却常常滞后,给黑客留下了可乘之机。

攻击步骤拆解:步步为营的恶意利用

这次攻击并非一蹴而就,而是攻击者精心策划、步步为营的结果。他们利用了瞬态存储的特性,构造了一个复杂的攻击链条,最终成功盗取了大量资金。

  1. 伪装与准备: 攻击者首先创建了两个恶意代币 A 和 B,并在 UniswapV3 上创建了相应的交易池,并注入流动性。其中,A 代币(攻击合约)是整个攻击的核心。 ![/uploads/images/20250401/UxDYHStzrNJwliDqQ2VGWJgr7bDnmZO3M48nJCa1.png]

  2. 诱饵与信任: 接着,攻击者调用 Vault 合约的 initialize 函数,以 A 代币作为抵押品代币,B 代币作为债务代币,创建了一个杠杆交易市场 APE-21。这一步的目的是在 Vault 合约中建立“信任关系”,为后续的攻击铺平道路。 ![/uploads/images/20250401/b1ESAYap1M56vKesoWWYSB53ix96c4UCymL2XHJi.png]

  3. 障眼法与篡改: 随后,攻击者调用 Vault 合约的 mint 函数,存入债务代币 B,铸造杠杆代币 APE。在 mint 函数中,攻击者通过控制 collateralToDepositMin 参数,触发了 UniswapV3 的兑换操作,并将攻击者先前创建的 UniswapV3 池子的地址进行了第一次瞬态存储。 ![/uploads/images/20250401/xnkrnvyJZK0EVtOCvfXrz9RiIyWyuHwxNrgHF6lz.png]

    ![/uploads/images/20250401/NWYZ103QsZWN1fLeU2IZu1he63BdL9ypnCRpD419.png]

    在 UniswapV3 池子进行兑换操作时,会回调 Vault 合约的 uniswapV3SwapCallback 函数。这个函数首先会从瞬态存储中取出值,验证调用者是否是 UniswapV3 池子。这里是关键所在! 攻击者利用瞬态存储的“交易内持久性”,在第一次存储后,并没有清除该值,而是继续利用它。uniswapV3SwapCallback 函数随后从铸造者地址转出债务代币 B,铸造杠杆代币 APE,并将铸造的数量 amount 进行第二次瞬态存储。攻击者提前计算并控制了 amount 的值,为后续攻击埋下了伏笔。 ![/uploads/images/20250401/6bbru47Md9vI0YGQyEFM3IY7TWip27yk7Am1gHyb.png]

    ![/uploads/images/20250401/EyVcJ33O2S36vL2k02NqEWXHeb7c8tLGvTt4G4uc.png]

  4. 瞒天过海与身份伪造: 攻击者调用 Keyless CREATE2 Factory 合约的 safeCreate2 函数,创建了一个恶意的合约,其合约地址与第二次瞬态存储的值相同。这简直是神来之笔! ![/uploads/images/20250401/QcFvKkH1Q2TOO3wUaSuTXWwDCTz7lTINpcJjxBAt.png]

  5. 狸猫换太子与盗取资金: 攻击者通过该恶意合约,直接调用 Vault 合约的 uniswapV3SwapCallback 函数,转出代币。由于瞬态存储中保存的值已经被篡改,uniswapV3SwapCallback 函数错误地将攻击者的恶意合约识别为 UniswapV3 池子,从而绕过了权限验证。 ![/uploads/images/20250401/8CvV126n00zNyqqIOVid4ZAFDOfWrW0vikzTLZYm.png]

    ![/uploads/images/20250401/XrTCzb0dcqprIhpvRGehqkJ2vqwR9SSyV4QU1ufo.png]

    攻击者再次精心计算,将铸造的数量 amount 构造为特定值,并进行第三次瞬态存储,使得该值与攻击合约(A 代币)的地址相同。这样,攻击者就可以利用攻击合约(A 代币)去调用 Vault 合约的 uniswapV3SwapCallback 函数,将 Vault 合约中的其他代币(WBTC、WETH)转出获利。 ![/uploads/images/20250401/wQDHVEX6y3JukgDpUh2iaVWg9Ex9GchmF6uOQrsF.png]

  6. 胜利大逃亡: 至此,攻击完成,攻击者成功盗取了大量资金。 ![/uploads/images/20250401/R5BePU5GlLCc7nICPdoIjnG5dXbaWBUYN2vxtEfD.png]

MistTrack 分析:追踪被盗资金的流向

慢雾 MistTrack 的分析显示,攻击者盗取了约 30 万美元的资产,包括 USDC、WBTC 和 WETH。

![/uploads/images/20250401/dYUS2J1vCWrrthoUGDDxZkEbXO1UcMiMROMYh8Tb.png]

攻击者迅速将 WBTC 兑换为 WETH,并将大量 WETH 转移到 Railgun 等隐私协议中,试图掩盖资金的流向。

![/uploads/images/20250401/N1L6rRNVvzRNomtvuWmlItx3cT9nUt74NmoDXwBy.png]

![/uploads/images/20250401/EnOiTLJqnFFhc9eD2FcY3QlULnyFfb5fh3pJntzY.png]

![/uploads/images/20250401/ZVIVJTAj31DDbVrpRqekNk2zNvh23413OsJ7MbAa.png]

更讽刺的是,攻击者的初始资金竟然来自于 Railgun 转入的 0.3 ETH。这就像一个黑色幽默,DeFi 的匿名性和隐私性,在保护用户隐私的同时,也为黑客提供了便利。

![/uploads/images/20250401/89qhJVznZb5gnncKU2rAwGgxfVTDLr7aBFu0VT4Q.png]

这场攻击,暴露了 DeFi 领域安全审计的缺失、瞬态存储等新特性带来的潜在风险,以及匿名性和隐私性带来的挑战。DeFi 的发展,需要在技术创新和安全保障之间找到平衡点,否则,类似的悲剧还会不断上演。

反思与警示:DeFi 安全的挑战与未来

SIR.trading 攻击事件绝非孤例,它只是 DeFi 世界中无数安全漏洞的冰山一角。每次类似的事件发生,都会引发人们对 DeFi 安全性的质疑。我们必须承认,在追求创新和效率的同时,DeFi 的安全性建设严重滞后。

DeFi 的核心价值在于去中心化、开放性和无需许可,但这同时也意味着更高的安全风险。智能合约的漏洞、预言机攻击、闪电贷攻击、以及像这次事件中利用瞬态存储特性的攻击,层出不穷,防不胜防。

DeFi 安全的挑战,不仅仅是技术层面的问题,更是行业发展模式的问题。许多 DeFi 项目为了快速抢占市场,往往会忽略安全审计,甚至明知存在风险,也选择铤而走险。这种急功近利的心态,最终只会损害整个行业的声誉,阻碍 DeFi 的健康发展。

要解决 DeFi 的安全问题,需要全行业的共同努力。

  • 加强安全审计: 所有 DeFi 项目都应该接受严格的安全审计,及时发现和修复潜在的漏洞。安全审计不应该只是走过场,而应该深入到代码的每一个细节,对每一个潜在的风险点进行评估。
  • 重视形式化验证: 形式化验证是一种通过数学方法证明智能合约正确性的技术。虽然形式化验证成本较高,但对于核心合约,尤其是涉及大量资金的合约,形式化验证是必不可少的。
  • 建立漏洞赏金计划: 通过漏洞赏金计划,鼓励白帽黑客发现和报告漏洞。这可以有效地提高项目的安全性,降低被攻击的风险。
  • 加强风险管理: DeFi 项目应该建立完善的风险管理体系,对潜在的风险进行评估和控制。这包括对智能合约风险、市场风险、流动性风险等进行全面评估,并制定相应的应对措施。
  • 提高用户安全意识: 用户是 DeFi 生态的重要组成部分,提高用户的安全意识,可以有效地降低被攻击的风险。DeFi 项目应该向用户普及安全知识,提醒用户注意防范各种安全风险。

DeFi 的未来,充满机遇,但也面临着巨大的挑战。只有正视安全问题,加强安全建设,才能让 DeFi 真正成为安全、可靠、可信赖的金融体系。如果 DeFi 无法解决安全问题,那么它最终只会沦为一场投机者的游戏,而无法真正改变世界。

发表评论:

最近发表