2023年7月30日星期日,去中心化金融世界受到了一次重大攻击,这次攻击利用了几个 Curve 协议流动性池使用的 Vyper 编程语言中的一个漏洞。攻击者是如何窃取 4100 多万美元的?
Vyper语言中的一个漏洞难辞其咎
。
攻击者利用了流行的去中心化金融协议(DeFi)Curve 的一些流动性池中存在的漏洞。该漏洞可追溯到以太坊智能合约的替代编程语言 Vyper。
事实上,根据安全公司 BlockSec 的数据,Curve 的几个使用 Vyper 的资金池被利用,造成的损失估计达 4100 万美元。事实上,Vyper 的 0.2.15、0.2.16 和 0.3.0 版本被发现容易受到重新入口攻击。
具体来说,当一个智能合约函数向另一个不可靠的智能合约发出外部调用时,就会发生这种情况。然后,后者对原始函数进行递归调用,以消耗资金。由于智能合约在发送资金之前没有更新其状态,攻击者可以不断调用撤回函数来耗尽资金。
根据安全公司 Ancilia 的分析,136 个智能合约使用了 Vyper 0.2.15,98 个智能合约使用了 Vyper 0.2.16,226 个智能合约使用了 Vyper 0.3.0:
我们在 github 上进行了快速运行。
发现 136 份合同使用 vyper 0.2.15 编译,并使用了可重入保护;
98 份使用 0.2.16 版本的合同
发现 226 份使用 0.3.0 版本的合同– Ancilia, Inc (@AnciliaInc) 2023年7月30日
。
因此,一些资金池的流动性已被完全抽干:
- Curve的CRV-ETH池:损失1400万美元
- Alchemix的alETH-ETH池:损失1366万美元;
- JPEG 的 pETH-ETH 池:亏损 1140 万美元;
METRONOME 的 sETH-ETH 池:损失 160 万美元。
在 Twitter 上,Vyper 解释说,出现故障的原因是编程语言编译器在某些情况下出现故障。因此,防止重入攻击的保护措施不起作用。
CRV令牌急剧下降
在 Curve 池遭到攻击后,CRV 的价格开始迅速下跌。CRV 在短短 60 分钟内从 0.70 美元跌至 0.59 美元,跌幅约为 16%:

攻击后 CRV 价格的演变