CertiK:Vyper漏洞导致5200万美元损失,详细拆解事件过程

2023 年 7 月 30 日,专为以太坊虚拟机(EVM)设计的面向合约的编程语言 Vyper 编译器 0.2.15、0.2.16 和 0.3.0 版本被宣布存在重入锁失效漏洞。多个 DeFi 项目受到该漏洞的影响,损失总额达 5,200 万美元。

有报告称 Vyper 0.2.15、0.2.16 和 0.3.0 版本存在漏洞,导致 Curve 上的许多池有遭受重入攻击的风险。该漏洞允许攻击者在移除流动性过程中调用添加流动性函数。

目前,总共有 6,930 万美元受到影响,其中 1,670 万美元已被白帽黑客追回。这也意味着此次事件造成了 5,200 万美元被盗,成为了 2023 年迄今为止金额最高的重入攻击。

事件总结

2023 年 7 月 30 日,专为以太坊虚拟机(EVM)设计的面向合约的编程语言 Vyper 编译器 0.2.15、0.2.16 和 0.3.0 版本被宣布存在重入锁失效漏洞。多个 DeFi 项目受到该漏洞的影响,损失总额达 5,200 万美元。

CertiK 已确定有六个地址涉及此次事件。第一个(0x172)未能利用区块 17806056 中的漏洞。最初的漏洞利用者从 Tornado Cash 提取了 0.1 ETH,并继续创建攻击合约。然而,一个跑在前面的钱包(0x6Ec21)支付了更多的 gas 费用,并率先执行了交易,获得了大约 6,100 枚 WETH(1,140 万美元)。

CertiK:Vyper漏洞导致5200万美元损失,详细拆解事件过程
由 MEV 机器人在前置交易失败的漏洞 来源:Etherscan Etherscan

该漏洞导致了进一步的损失:EOA 0xDCe5d 获得了价值约 2,100 万美元的资产。涉案钱包明细如下图:

CertiK:Vyper漏洞导致5200万美元损失,详细拆解事件过程

共有 6 个项目受到影响,约有 6,930 万美元被盗走,其中 1,670 万美元已被归还,总计损失约为 5,200 万美元。

什么是 Vyper

Vyper 是以太坊虚拟机(EVM)的一种面向合约的 pythonic 编程语言。Vyper 的测试版从 2017 年就开始有了,但其首个非测试版本是于 2020 年 7 月发布的 0.2.1 版。

Solidity 是以太坊生态系统中的主流语言,它比 Vyper 存在的时间要长得多,因此许多社区成员创建了专门使用 Solidity 运行的工具。根据 DeFiLlama 的数据显示,在 DeFi 协议中价值约 700 亿美元的总锁仓价值(TVL)中,Vyper 智能合约占 21.7 亿美元,而 Solidity 则占绝大多数,高达 674.9 亿美元。

CertiK:Vyper漏洞导致5200万美元损失,详细拆解事件过程
 根据语言划分的总锁仓价值 来源:DeFiLlama

截至 2023 年 5 月 10 日,Vyper 的主导地位从 2020 年 8 月的 30% 高点降至 6.27%。尽管 Vyper 的 TVL 主导地位明显低于 Solidity,但这一事件仍导致 6,200 万美元受到影响。

CertiK:Vyper漏洞导致5200万美元损失,详细拆解事件过程
 不同编程语言在 TVL 中的主导地位 来源:DeFiLlama

编译器版本

编译器版本是指编程语言编译器的特定版本,编译器将人类可读的源代码转换为机器可读的代码。

编译器版本会定期更新,以引入功能、修复漏洞并增强安全性。Vyper 语言目前不提供白客漏洞悬赏计划。

版本 0.2.15 – 0.3.0

上文提到的就是 Vyper 的 0.2.15、0.2.16 和 0.3.0 版本中发现了漏洞,导致了多个 DeFi 项目遭到重入攻击。

而最早的 Vyper 漏洞版本 0.2.15 发布于 2021 年 7 月 23 日。到同年 12 月发布 0.3.1 版时,之前的漏洞已不复存在。 

时间线

事件最初开始于北京时间 7 月 30 日晚 9 点 10 分,攻击者针对 Curve 上 JPEG’d 池的交易由于前置运行交易而失败。

CertiK:Vyper漏洞导致5200万美元损失,详细拆解事件过程

北京时间 7 月 30 日晚 10 点,JPEG‘d 确认 pETH-ETH Curve 池已被恶意利用。

CertiK:Vyper漏洞导致5200万美元损失,详细拆解事件过程

Vyper 随后宣布,0.2.15、0.2.16 和 0.3.0 版本包括了一个失效的重入锁。Vyper 发布推文后,Metronome 和 Alchemix 也受到了影响。

CertiK:Vyper漏洞导致5200万美元损失,详细拆解事件过程

Metronome DAO 宣布消息: 

CertiK:Vyper漏洞导致5200万美元损失,详细拆解事件过程
CertiK:Vyper漏洞导致5200万美元损失,详细拆解事件过程
CertiK:Vyper漏洞导致5200万美元损失,详细拆解事件过程

北京时间第二天凌晨,Curve Finance 在 Discord 上发布公告称,剩余的资金池不受 Vyper Bug 的影响,是安全的。

CertiK:Vyper漏洞导致5200万美元损失,详细拆解事件过程
CertiK:Vyper漏洞导致5200万美元损失,详细拆解事件过程

Curve Finance 在 Twitter 上宣布,Arbitrum 上的一个资金池有可能受到影响,但没有可供恶意行为者执行的有利可图的漏洞,这意味着资金池不太可能受到攻击。CertiK 也尚未检测到任何其他利用 Vyper 漏洞的攻击。

CertiK:Vyper漏洞导致5200万美元损失,详细拆解事件过程

攻击流程

以下是以 JPEG’d 为目标的交易示例:

攻击者: 0x6ec21d1868743a44318c3c259a6d4953f9978538

攻击合约: 0x466b85b49ec0c5c1eb402d5ea3c4b88864ea0f04#code

1. 攻击者首先从 Balancer:Vault 中借入 80,000 WETH ( 约合 149,371,300 美元 )

2. 然后,攻击者将 WETH 换成 ETH,调用 pETH-ETH-f.add_liquidity(),将 40,000 ETH(约合 74,685,650 美元)添加到 pETH-ETH-f 池中。作为回报,攻击者收到了 32,431 枚 pETH(pETH-ETH-f)。

3. 攻击者调用 remove_liquidity() 删除了在步骤 2 中添加的流动性。3,740 pETH 和 34,316 ETH 被转入攻击合约,攻击合约的 fallbak() 函数被触发了,将控制权交给了攻击者。在 fallback() 函数中,攻击者又向 pETH-ETH-f 池中添加了 40,000 ETH 的流动性,并收到了 82,182 pETH。

4. 攻击者再次调用 remove_liquidity(),取出 10,272pETH,收到 47,506 ETH 和 1,184pETH。然后,攻击者在 pETH-ETH-f 池中用 4,924 枚 pETH 交换了 4,285 枚 ETH。

总的来说,攻击者从第 3 步获得了 34,316 枚 ETH,从第 4 步获得了 47,506 和 4,285 枚 ETH,共计 86,107 枚 ETH。在偿还了 80,000 ETH 闪电贷后,攻击者还剩下 6,107 ETH(约 11,395,506 美元)。

漏洞

该漏洞允许攻击者在移除流动性过程中调用添加流动性函数。虽然这些函数本应受到 @nonreentrant(‘lock’😉 的保护,但对 add_liquidty() 和 remove_liquidity() 函数的测试证明,它并不能防止重入攻击。

CertiK:Vyper漏洞导致5200万美元损失,详细拆解事件过程

 Vyper_contract for Curve.fi Factory Pool 数据源: Etherscan

继利用 JPEG’d、Metronome 和 Alchemix 漏洞之后,Vyper 的 v0.2.15、v0.2.16 和 v0.3.0 版本确实存在重入保护失败的漏洞。

CertiK:Vyper漏洞导致5200万美元损失,详细拆解事件过程

解决措施

使用易受攻击的 Vyper 版本的项目应联系 Vyper 协助进行缓解。项目也应尽量升级到不含此漏洞的最新版 Vyper。

总结

Vyper 被攻击事件是 CertiK2023 年检测到的最大的重入漏洞。就资金损失而言,该攻击损失金额占据了此类事件的 78.6%。

今年两起最大的重入漏洞,都是利用 Vyper 编写的合约,尽管漏洞并不相同。

目前,2023 年所有链中因重入攻击造成的损失已超过 6,600 万美元。这比 2020 年全年多出约 400 万美元,仅比 2021 年的损失额少 100 万美元。值得注意的是,2023 年的总额也比 2022 年因重新定位攻击造成的损失增加了 259.45%。

(声明:请读者严格遵守所在地法律法规,本文不代表任何投资建议)

(0)
Gao的头像Gao
上一篇 2023年8月2日 下午12:00
下一篇 2023年8月2日 下午12:28

相关推荐

  • 骗局早已被精心策划:详解Chibi Finance盗取100万美元随后跑路过程

    虽然 Chibi Finance 退出骗局发生在 6 月 27 日,但该骗局很可能已​于数日前甚至更早时被精心策划。6 月 15 日,外部地址(0xa3F1)从 Tornado Cash 提取了 10 枚 ETH。其中 2 枚 ETH 通过跨链桥转移到以太坊网络。4 天后于 6 月 19 日,再次转移 7.8 枚 ETH。

    2023年6月28日
    1.3K
  • HashKey:以美国国债为例讨论RWA的代币化

    美国国债属于 RWA(Real World Assets)的一种,RWA 的代币化将链上和链下打通,是在监管制度日趋完善下,区块链技术大规模应用的一个方向。本文针对将美债收入引入链上的话题,从美债代币化和间接引入美债收入的案例,讨论美债与 Token 结合的方式,这也是 RWA 代币化的一种。

    2023年7月27日
    1.1K
  • Web3.0革命和中国特色发展之路

    Web1.0的时代伴随着移动通讯技术的不断发展,已经成为了过去,而Web2.0的时代也在一众互联网巨头的瓜分下,流量和市场正在逐渐枯竭。而无论是基于信息技术升级的需求,还是拯救饱受…

    2022年6月23日
    973

发表回复

登录后才能评论
微信

联系我们
邮箱:whylweb3@163.com
微信:gaoshuang613