Curve遭受重创,其背后“真凶”到底是谁?

这两天加密圈又发生了一件大事!排名位居第二的去中心化交易所Curve受到攻击,现已造成5200万美元的损失,可能这会大家的内心OS:这defi协议被黑客攻击不是很正常的事嘛,隔几天来一次的,但这次还真不一样!下面给大家深入讲解一下。

Curve遭受重创,其背后“真凶”到底是谁?

 

谁是“真凶”

Curve受到攻击的原因是由于旧版本的以太坊编程语言Vyper存在Bug所致,这里有点涉及专业知识,举个不巧当的例子,就好比安卓的操作系统出了问题,那这个波及面可就广了啊,但凡用到安卓操作系统的手机、电脑等都会出现问题,你想想这个严重程度,据悉使用Vyper编程语言的有uniswap v1版本、Yearn Finance等。

Vyper 创建于 2017 年,在此之前开发人员编写智能合约最常用的语言是 Solidity,它们都是一种面向智能合约的编程语言,可编译为以太坊虚拟机(EVM)的字节代码,运行在 EVM 上。

要说它们之间有什么区别的话,那就是Vyper基于Python风格的语法,让开发者更容易理解和编写智能合约,而Solidity是由V神推出的,作为一种更为成熟和广泛使用的编程语言,拥有更丰富的生态系统和更多的工具支持。

截至此次攻击事件发生后DeFiLlama 最新统计数据显示:在 DeFi 的语言开发门类下,Solidity 以 94.91% 的市场份额占据绝对垄断地位,而 Vyper 以 2.08% 的市场份额位列第二名。

 

Curve遭受重创,其背后“真凶”到底是谁?

不过还好这次出现bug的语言是Vyper而不Solidity,小编可没有看笑话的意思,从数据也能看出Solidity的应用有多广泛,例如Aave、Compound、MakerDAO等,它要是出问题了那整个 DeFi 世界都岌岌可危呢。

其实Vyper在推出时,主打的就是一个安全性,但也没想到会发生这样的事,关于此次的bug,细说起来话是重入攻击!

什么是重入攻击?

重入攻击是指攻击者在智能合约的一个函数调用完成之前,反复调用该函数,利用合约的逻辑来窃取资金或操纵数据。
例如,如果一个合约在更新余额之前就发送资金给用户,那么攻击者就可以多次调用该函数,从而获得比实际余额更多的资金,你也可以简单粗暴的理解为捞不完钱的聚宝盆。

Curve遭受重创,其背后“真凶”到底是谁?

 

据悉Curve 生态中的 4 个资金池CRV/ETH、alETH/ETH、msETH/ETH、pETH/ETH被攻击,超过 4500 万美元的流动性已从借贷协议 Alchemix、合成资产 Metronome 、NFT 借贷平台 JPEG'd 的池中流失,近 2500 万美元从 CRV/ETH 池中流出。

整个事件的时间线

7 月 30 日 Curve 上的 pETH-ETH 、msETH-ETH、 alETH-ETH 池子遭受攻击。

7 月 31日,以太坊编程语言 Vyper 发推表示,Vyper 0.2.15、0.2.16 和 0.3.0 版本版本的重入锁失效。

7 月 31日,Curve 推特发文表示,由于重入锁故障,使用了 Vyper 0.2.15 的稳定币池 (alETH/msETH/pETH) 遭到攻击,其他池是安全的。

7 月 31日,CRV-ETH 被攻击,链上 CRV 最低为 0.08 左右。

7月31日,Curve创始人已抵押2.92亿CRV并借出1.1亿美元。

8月1日,被标记为“Justin Sun(孙宇晨)”的地址于刚刚向Curve创始人地址转入200万枚USDT。

8月1日,黄立成地址(machibigbrother.eth)向 Curve 创始人地址转入 150 万枚 USDT,并收到 375 万枚 CRV。

8月2日,某Curve疑似攻击者已被定位,链上侦探ZachXBT在推特上尝试联系名为“Michael Razoumovitch(@MichaelRazum)”的推特用户以进行谈判。

Curve被攻击后,创始人 Michael Egorov 开始了链上抵押贷款以补全损失金额,据加密研究员0xLoki统计, Michael Egorov主要在以下几个平台中做了抵押贷款:

  1. AAVE上抵押了1.9亿CRV,借了6500万美元,清算价0.37美元;
  2. FRAXlend上抵押4600万CRV,借了2100万FRAX,清算价0.4美元,现已还款并取回了 750 万枚 CRV;
  3. Abracadabr存入4000万CRV,借出1800万美元,清算价0.39美元;
  4. Inverse上存入1600万CRV,借出700万美元,清算价0.4美元。

整个事件也从侧面提醒了DeFi项目方、开发者需要对智能合约进行严格的安全审查,并尽可能采用更加成熟且经过验证的编程语言。