Curve Pools 黑客攻击:Vyper 版本中的重入漏洞导致 5900 万美元损失

本文为机器翻译
展示原文

什么?

Vyper是一种编程语言,旨在在区块链平台上创建智能合约。受 Python 启发,Vyper 采用用户友好且易于阅读的语法,适合各个级别的开发人员使用。

Curve Pool是一种去中心化金融 (DeFi) 协议,彻底改变了区块链网络上的稳定币交换。作为专门针对稳定币进行优化的自动做市商 (AMM),Curve Pool 可确保稳定资产之间的无缝且经济高效的交易,同时将滑点和费用降至最低。其独特的算法旨在最大限度地减少交易过程中的价格影响并最大限度地提高资本效率,使其成为寻求稳定币流动性的交易者和流动性提供者的首选。

如何?

这些攻击发生在多个区块链上,导致总损失超过 5900 万美元。这些损失归因于使用易受攻击的 Vyper 版本并包含ETH的矿池。矿池被黑:

据Curve Finance称, Arbitrum上仍有一些矿池可能容易受到攻击。出于预防目的,他们建议用户尽快消除流动性。

在攻击中,攻击者在调用remove_liquidity函数后重新进入add_liquidity函数。在重新进入add_liquidity函数之前状态没有完全更新,导致lp_price计算错误。

为什么?

Curve Pools是使用Vyper编程语言开发的,该漏洞存在于Vyper编译器中。

尽管该函数受到 Vyper 中内置的不可重入装饰器的保护,但该漏洞仍允许攻击者执行重入。

该漏洞的根本原因可以追溯到用 Python 编写的 Vyper 编译器版本 0.2.15 到 0.3.0 之间的提交。在编译期间,Vyper 代码加载可重入装饰器并将其存储到存储槽中。但是,代码中缺少验证在存储和槽增量之前是否已存在重入性的重要检查。因此,每个函数都有其单独的重入锁槽,该锁槽是独立的并且无法提供针对重入攻击的保护。

受影响的Vyper版本:

结论

攻击者仔细检查了 Vyper 的错误修复和使用易受攻击版本的目标合约,导致 Curve 遭受重大损失。

吸取的重要教训是,供应商必须及时向开发人员社区通报关键错误修复。鼓励使用开源技术,包括社区开发和审查的安全功能。在发布新版本或对基本功能进行重大更改之前进行彻底的安全审查至关重要。通过采用这些做法,我们可以增强系统安全性并为所有用户提供更安全的环境。

相关赛道:
来源
免责声明:以上内容仅为作者观点,不代表Followin的任何立场,不构成与Followin相关的任何投资建议。
喜欢
收藏
评论