crvUSD审计结果总结

  • mixbytes
  • 发布于 2024-02-25 10:51
  • 阅读 20

本文讨论了Curve Finance的crvUSD稳定币在审计过程中发现的两处关键安全漏洞。首先是一个任意调用漏洞,它允许攻击者在未经授权的情况下从AMM中提取资金;其次是捐赠攻击,攻击者可以通过特定操作在不同价格范围内盗取用户资金。文中详细分析了这些漏洞的原理以及Curve团队如何进行了修复,并强调了进行外部审计的重要性。

作者:Konstantin Nekrasov, MixBytes的安全研究员

免责声明

本文中描述的所有发现是在审计过程中检测到的,并在项目部署前由Curve团队修复。你可以在这里检查审计结果:https://github.com/mixbytes/audits_public/blob/master/Curve Finance/Curve Stablecoin (crvUSD)/README.md

引言

我们对crvUSD进行了审计,它是Curve的一种过度抵押的稳定币。我们的审计重点是AMM和Controller合约,在这里我们发现了两个关键漏洞,这些漏洞在审计期间得到了修复。在本文中,我们将讨论这些漏洞、如何识别类似漏洞以及各自的解决方案。

发现1:任意调用

CrvUSD有一个Controller合约,允许用户存入抵押品并接收crvUSD。Controller具有普通用户无法访问的特权功能。

Controller合约有一个名为liquidate_extended()的函数,它接受一个任意的回调:

def liquidate_extended(
    user: address, min_x: uint256, frac: uint256, use_eth: bool,
    callbacker: address,
    callback_sig: bytes32,
    callback_args: DynArray[uint256,5]
)

这个回调是以Controller合约的名义执行的,攻击者可以指定调用的地址、签名和参数。

问题在于,回调期望一个64字节的响应,因此无法使用标准的ERC20.approve()作为回调。此外,这64字节被读入到两个uint256中,并与特定值进行检查。不过,仍然可以将特权函数AMM.withdraw(address,uint256)作为回调调用,使攻击者可以在未授权的情况下从AMM中提取资金:

def withdraw(user: address, frac: uint256) -> uint256[2]:
    @notice 提取用户的所有流动性。只有管理合约可以执行此操作

因此,攻击者可以从crvUSD AMM中抽取所有流动性。Curve团队通过禁止使用任意回调来修复此漏洞。

发现2:捐赠攻击

在crvUSD中,可以在不同价格范围内传播债务,这些范围由ticks表示。用户存入特定tick时,会收到该tick的份额。

看起来每个tick都容易受到捐赠攻击。这种攻击在我们的博客中有详细介绍。实质上,攻击者可以在不同的价格范围内窃取用户的资金。

我们如何能够在不铸造份额的情况下向特定tick捐款?首先,AMM.exchange()函数允许活动tick的移动和crvUSD与抵押品之间的交易。任何交易都会从交易者那里收取费用,并将其留在传递的ticks中。这个费用就成了捐赠。然而,这仅仅是交易金额的几分之一,无法进行大规模攻击。为了克服这一限制,攻击者必须组合withdraw()、deposit()和repay()函数的调用,以便对自己执行相同的通货膨胀攻击。这使得ticks中的捐赠增加了1.5倍。

最终,攻击者可以发起一个在智能合约中运行120次循环的单个交易,将捐款膨胀至100_000e18的值。这使他们可以从其他用户那里窃取任意金额。

Curve团队通过引入虚拟股份,正如OpenZeppelin所建议的那样,解决了这个问题。

总体结论

始终关注项目中的回调和股份。对于股份 - 检查捐赠攻击,对于回调 - 验证其任意性水平。

问题是,有时候攻击者看似在利用时受到限制,这使人觉得没有漏洞。然而,有经验的审计员往往可以绕过明显的限制并证明可利用性。因此,进行外部审计并保持知识渊博的专家参与至关重要。

  • MixBytes是什么?

MixBytes是一支专业的区块链审计员和安全研究员团队,专注于为EVM兼容和Substrate基础的项目提供全面的智能合约审计和技术咨询服务。请在X上加入我们,以获取最新的行业趋势和见解。

  • 原文链接: mixbytes.io/blog/recap-o...
  • 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
mixbytes
mixbytes
Empowering Web3 businesses to build hack-resistant projects.