由于 Vyper 编译器旧版本中的一个漏洞,Curve 上的多个资金池遭到攻击,攻击者利用重入锁的缺陷耗尽了受影响池中的代币。Curve 正在尝试联系攻击者并追回资金,部分资金已被白帽找回。Curve 建议 LPs 退出有风险的 Arbitrum Tricrypto pool,并计划停止对受影响池的 CRV 激励。
7 月 30 日 UTC 时间 13:10 至 22:00 之间,一系列攻击导致了多个 Curve 池资金的损失。在每种情况下,漏洞的来源都是某些 Vyper 版本中发生故障的重入锁。
受影响的池以及每次攻击提取的金额:
另一个可能受影响的池是 Arbitrum 的 Tricrypto 池。审计人员和 Vyper 开发人员未能找到有利可图的漏洞,但 Curve 建议 LP 退出该池以作为预防措施。
7 月 30 日 UTC 时间 16:44,Vyper 官方 Twitter 承认了一个影响 Vyper 版本 0.2.15、0.2.16 和 0.3.0 的错误。编译器存在一个错误,该错误否定了重入保护。此错误已在 0.3.1 版本中修复(偶然地,因为该错误直到 7 月 30 日才为人所知)。通常,0.3.1 之后的所有合约都没有此重入保护错误。
来源: Twitter
该错误是在此 PR 中引入的:#2391
当 Curve 的合约进行 raw_call 以发送原生代币时,它们会变得容易受到攻击。受影响的 Curve 池都使用上述 Vyper 版本之一,并且与原生 ETH 配对。使用 ERC-777 标准的代币也受到了影响,尽管涉及这些代币的 Curve 池已基本被弃用(例如,pBTC 和 HOME)。ERC-777 添加了回调,使这些池容易受到相同的重入问题的影响。与 WETH 配对的池未受到影响。
似乎有多个参与者参与了这些攻击,并且至少有一人正在与 Curve 团队合作以追回资金。c0ffeebabe.eth 从 CRV/ETH 池中提取的 2,879.65 ETH(约 540 万美元)已返还给 Curve 团队。
Arbitrum Tricrypto 池 可能存在被利用的风险。尽管安全研究人员尚未发现有利可图的漏洞,但 Curve 建议用户出于谨慎考虑退出该池。
来源: Twitter
7 月 30 日 UTC 时间 13:10,发生了一次攻击,从 Curve 池中耗尽了 pETH。攻击者将 pETH 兑换为 WETH,获得了 6,106.65 WETH(约 1100 万美元)的利润。
来源: Phalcon Explorer
漏洞利用逻辑如下:
重入发生在移除流动性和添加流动性操作之间。通常,池存款人应有权获得等于池代币总供应量与存款人提供的流动性所占分数之积的池代币。但是,由于重入错误,分配的池代币是使用燃烧前的余额计算的。这使得攻击者可以无限铸造池代币,从而对池的全部内容提出欺诈性索赔。
在撰写本文时,资金保存在 JPEGd_69 Exploit 钱包地址中。
pETH/ETH Curve 池在事件发生时包含约 2100 万美元的 TVL,并且所有资金此后已被耗尽或以其他方式被用户移除。虽然紧急 DAO 无法采取任何行动来暂停池或影响用户资金,但它可以冻结对池的 CRV gauge 排放。预计很快会采取此操作。
7 月 30 日 UTC 时间 14:50,发生了一次漏洞,从 Curve 池中耗尽了 msETH。攻击者保留了 866.55 ETH(约 160 万美元)和 959.71 msETH(约 180 万美元)的利润。
来源: Phalcon Explorer
漏洞利用逻辑如下:
重入发生在移除流动性和添加流动性操作之间。通常,池存款人应有权获得等于池代币总供应量与存款人提供的流动性所占分数之积的池代币。但是,由于重入错误,分配的池代币是使用燃烧前的余额计算的。这使得攻击者可以无限铸造池代币,从而对池的全部内容提出欺诈性索赔。
在撰写本文时,c0ffeebabe.eth 地址似乎是一位白帽,并且正在与 Curve 团队合作以追回资金(如链上消息中所示 此处 和 此处)。该地址还参与了下面描述的 CRV/ETH 池漏洞,并且已返还了从中获得的收益。但是,该地址仍拥有从 msETH/ETH 池漏洞中获得的 msETH 和 ETH。
msETH/ETH Curve 池在事件发生时包含约 410 万美元的 TVL,并且基本上所有资金此后已被耗尽或以其他方式被用户移除。虽然紧急 DAO 无法采取任何行动来暂停池或影响用户资金,但它可以冻结对池的 CRV gauge 排放。预计很快会采取此操作。
7 月 30 日 UTC 时间 15:34,发生了一次漏洞,从 Curve 池中耗尽了 alETH。攻击者保留了 7,258.70 ETH(约 1360 万美元)和 4,821.55 alETH(约 900 万美元)的利润。
来源: Phalcon Explorer
漏洞利用逻辑如下:
重入发生在移除流动性和添加流动性操作之间。通常,池存款人应有权获得等于池代币总供应量与存款人提供的流动性所占分数之积的池代币。但是,由于重入错误,分配的池代币是使用燃烧前的余额计算的。这使得攻击者可以无限铸造池代币,从而对池的全部内容提出欺诈性索赔。
在撰写本文时,资金保存在 alETH Exploit 钱包地址中。
在漏洞利用之前,Alchemix 能够从池中提取 8,027.35 alETH(交易)。正如这篇 Twitter 帖子 中披露的那样,Alchemix 正在从其 AMO 中移除 5,000 ETH,但被攻击者抢先交易。这导致 alETH 的部分支持损失。
alETH/ETH Curve 池在事件发生时包含约 4600 万美元的 TVL,并且基本上所有资金此后已被耗尽或以其他方式被用户移除。虽然紧急 DAO 无法采取任何行动来暂停池或影响用户资金,但它可以冻结对池的 CRV gauge 排放。预计很快会采取此操作。
CRV/ETH 池涉及 2 笔漏洞利用交易(第二笔是白帽)。
漏洞利用 1
7 月 30 日 UTC 时间 19:08,发生了一次漏洞,从 Curve 池中耗尽了 CRV 和 ETH。攻击者保留了 7,193,401.77 CRV(攻击时约 510 万美元)和 7,680.49 WETH(约 1420 万美元)作为利润。
来源: Phalcon Explorer
漏洞利用逻辑如下:
重入发生在移除流动性和添加流动性操作之间。通常,池存款人应有权获得等于池代币总供应量与存款人提供的流动性所占分数之积的池代币。但是,由于重入错误,分配的池代币是使用燃烧前的余额计算的。这使得攻击者可以无限铸造池代币,从而对池的全部内容提出欺诈性索赔。
此漏洞是独一无二的,因为除了“重入保护错误”漏洞(影响所有四个池)之外,还进行了套利漏洞利用。原因是 CRV-ETH 池是此事件中唯一被利用的非稳定池。
在撰写本文时,资金已转移到 CRV/ETH Exploit 钱包地址。
漏洞利用 2
7 月 30 日 UTC 时间 22:00,发生了第二次漏洞,耗尽了池中剩余的 2,879.65 ETH。这是 c0ffeebabe.eth 的白帽行为,所得款项此后不久已返还给 Curve 团队(交易)。
来源: Phalcon Explorer
漏洞利用逻辑如下:
在第一次漏洞利用之后,池的余额已损坏。它认为它包含 CRV 余额,而实际上所有 CRV 都在第一次攻击中被耗尽。通过存入一些 CRV 并调用 claim_admin_fees
,可以同步池余额。黑客向池中捐赠了 CRV,同步了余额,然后将一些 CRV 兑换为大部分 ETH。
在撰写本文时,资金已在此 交易 中返还给 Curve 部署者地址。
CRV/ETH Curve 池在事件发生时包含约 4700 万美元的 TVL,并且大部分资金此后已被耗尽或用户移除。该池仍然包含一些 ETH,现有 LP 可以通过调用 remove_liquidity_one_coin
来提取。
虽然紧急 DAO 无法采取任何行动来暂停池或处理用户资金,但它可以冻结对池的 CRV gauge 排放。预计很快会采取此操作。
当前的后续步骤是停止向受影响池的 gauge 排放,并为 alETH、msETH 和 pETH 创建新的简单池。新池应与 WETH 或新的 ETH 池实现配对。CRV 已经有一个新的 Tricrypto 池 与 crvUSD 和 ETH 配对,该池不受重入错误的影响。
Curve 团队将继续探索所有途径以追回用户资金,并且有关情况的更新将在社交渠道(Twitter、Telegram 和 Discord)上发布。
- 原文链接: hackmd.io/@LlamaRisk/BJz...
- 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!