当前位置:首页DEFIDefi安全审计盲点,文章了解最新的安全漏洞曲线

Defi安全审计盲点,文章了解最新的安全漏洞曲线

注:原始论文的作者是X协议Zeitz团队的经济研究员Peter,他发现曲线协议智能合约中存在严重漏洞,为此撰写了一份报告。据介绍,虽然曲线和转弯协议经过多次审核,但其用户仍面临巨大的经济损失风险。因此,它认为,对于智能合约审计师来说,可能不可能找到利用高度专业化知识现实的漏洞。

截至发稿时,该报告已被curve正式认可,作者被判有漏洞。目前,curve正在为旧合同池部署解决方案,新合同池不受此漏洞影响。

Defi安全审计盲点,文章了解最新的安全漏洞曲线

以下是漏洞报告的内容:

9月19日凌晨,我发现curve合约存在漏洞,当合约的放大因子a更新时,攻击者可以从中提取大量代币余额。Swerve采用曲线合约,一旦更新a系数,用户潜在损失巨大,占合同余额的36.9%。假设一个优化的攻击,这个大的任命将损失9200万美元。幸运的是,转向更新顺利通过。那天下午晚些时候,我打电话给曲线小组。几个小时后,他们确认了这个漏洞的存在,我们开始共同研究解决方案。

事实上,这种攻击可能发生在a上下调整时。然而,由于向下调整的潜在损失是更大的一个数量级,我们将重点关注此类攻击。这些攻击的严重程度与a的变化程度成正比。结果表明,token余额份额的**损失受到以下等式的限制,其中a_Old为初始参数值,a_New为更新后的参数值,N为契约中的代币类数。

A602A602

利用造成的损失取决于参数a的变化百分比

例如,ycurve合同更新发生在同一周的早些时候。该合约有n=4个代币类,从原来的2000更改为1000。攻击者可以利用此漏洞提取多达12.9%的ycurve合约余额(约7700万美元)。

此攻击只能在预定参数a更新过程中执行。所以曲线下的用户不需要采取紧急措施来保护曲线下的用户。但是,在a发生其他更改之前修复此漏洞是至关重要的(尤其是急剧向下调整a是危险的)。曲线团队正在改进更新a的程序,这将允许曲线合同以安全的方式继续更新参数a。

平均值和代币联合曲线

为了理解攻击,有必要了解代币联合曲线。我将解释一些概念,以便读者形成概念性的理解。我对这个主题采取了一种稍微不同的方法,重点是代币联合曲线和一组变量的平均值之间的关系。

在数学中,平均数是一组数据中代表趋势的量。因此,如果x_1是N个数集合中最小的数,x_u如果N是**数,则集合的平均值将出现在x_1和x_u之间的中间值之间。两种最常见的平均值类是算术平均值和几何平均数。

Defi安全审计盲点,文章了解最新的安全漏洞曲线1

算术平均数

Defi安全审计盲点,文章了解最新的安全漏洞曲线2

几何平均数

平均值在代币联合曲线中起关键作用。AMM合约允许用户交易任何组合的代币,这样AMM合约代币余额的平均值在交易前后保持不变。不同的AMM设计中使用了不同类的平均方法。对于Uniswap,它使用未加权几何平均值,平衡器使用加权几何平均值,mstable使用未加权算术平均值。

曲线使用算术和几何平均值的加权平均值,我称之为曲线平均值。曲线平均值的权重由所谓的放大参数a决定。随着a向无穷大方向增加,曲线平均值收敛到mstable使用的算术平均值。相反,如果a设置为0,则曲线的平均值将与平衡器和Uniswap使用的几何平均值相同。对于a的中间值,曲线的token-union曲线将处于两个极端的中间。

Defi安全审计盲点,文章了解最新的安全漏洞曲线3

图1:代币联合曲线

图1显示了四条代币联合曲线。Uniswap保持几何平均常数,这导致曲率非常陡峭。Mstable是一个算术平均常数,它是一条直线,曲线介于两者之间。当a=1时,曲线与Uniswap相似,当a=10时,曲线更接近mstable。

持有的AMM合同的平均值和价值

参考图1,我们可以看到所有四条曲线在距离图形原点45度处相交。我们可以利用交叉点到原点的距离来快速衡量AMM合约代币组合的价值。例如,如果从交叉口到原点的距离增加20%,那么假设没有波动性损失,AMM合同的价值也将增加20%。这适用于所有四种关节曲线类。当我们考虑曲线时,此功能特别有用,因为曲线有一个独特的特性:当a更新时,其关节曲线的形状会发生变化。对于曲线,我们可以用距离原点的距离来衡量参数更新前后合约组合的价值。显然,如果在更新a之后这个距离显著减少,这将是一个严重的问题。

关于参数a的盈亏平衡更新

又假设曲线1的交线的余数是45度。当所有曲线代币以1:1的价格比率交易时,就会发生这种情况。从这个起点更新a时,就没有货币损失的风险。例如,假设曲线从该点开始,并将参数a_Old=10设置为a_UNew=1。此更新不会更改从并集曲线到原点的距离。因此,参数变化将完全无害,不会使曲线流动性提供者(LP)面临财务损失的风险。直观地看,如果初始余额不是完全在交点处,而是接近交点,损失的风险还是很小的。

关于参数a的丢失更新

现在让我们看看图2。此图显示了攻击者如何在更新a时操纵初始条件以获得巨大利润。为了说明,我展示了从一个_Old=10到一个_Unew=1,而不是从一个_Old=1000到一个_Unew=100。然而,事实证明,脆弱性的严重程度只取决于新旧比率,所以这个数字准确地描述了转向的情况。此外,图中显示的攻击只捕获了15%的合同代币库存。完全优化的攻击将交易更极端的金额,从而捕获多达36.9%的代币库存。

Defi安全审计盲点,文章了解最新的安全漏洞曲线3

图2:添加恶意事务之间的更改

假设曲线契约余额最初位于45度线的交点处,初始参数值为_old=10。现在假设攻击者在两个恶意事务之间更新了参数。在第一次恶意交易中,攻击者出售大量代币,造成库存失衡。接下来,攻击者将触发值为10和1的更新。这将更改曲线的形状,如图所示。**,攻击者以较低的价格买回他出售的代币。这将使合同沿45度线恢复到完全平衡状态。如图所示,此攻击将导致AMM代币库存损失15%。

利用漏洞的可行性

这样的攻击真的可能吗?令人惊讶的是,答案是肯定的。曲线合同需要提前几天安排a的变更,并通过中心化的连锁治理流程达成共识。但是,一旦通过治理批准了a中的更改,并且超过了激活截止日期,契约允许任何调用方触发更新。因此,攻击者可以自由地从Uniswap快速租用大量稳定硬币,将其出售给curve以触发极端不平衡,触发a的更新,然后从curve购买稳定硬币以获取巨额利润。完全优化的攻击将涉及更多细节。我上面描述的简单攻击就足以捕获大部分潜在利润。

修复智能合约逻辑以进行更改

目前,curve契约有两个生产版本。对于没有修补的旧合同,以上是脆弱性原则。对于较新的合同来说,仍然存在一个潜在的漏洞,尽管不那么严重。我将首先描述对旧合同的修改建议。

修复旧曲线合同

在旧的曲线契约中,a的变化是以一个大的离散步长发生的。此外,契约逻辑允许攻击者在单个事务中执行具有不同a值的事务。特别是,攻击者可以使用其初始事务来强制库存极不平衡,然后触发a的更改,然后使用更新的a值执行更多事务。这使得攻击者能够无风险地执行涉及数亿个事务的整个攻击。为了解决这个问题,我建议更新旧的契约,以便只有受信任的多签名帐户才能激活对a的更新。

此外,激活a应该需要检查代币余额,以确认自广播参数更新事务的时间点以来代币余额没有显著改变。这种平衡检查可以防止流氓矿工的攻击。特别是,流氓矿工可以重新排序事务,以便在更新a之前执行一个大事务,然后在更新a之后执行另一个大事务。

平衡检查可防止在契约处于意外不平衡状态时激活对的更改,这足以保护曲线LP免受此类攻击。

固定新曲线合同

在较新的曲线契约中,a的变化是在每次交易开始前以一系列离散的小步骤逐渐发生的。我的理解是每个区块只能调整一步。此外,合同要求在执行任何交易之前进行预定的步骤调整。这足以抵抗普通的袭击者,但不一定能对付流氓矿工。特别是,一个流氓矿工可以连续铸造两个区块,并在这两个区块中插入恶意交易。这将允许矿工在第一个区块中以较高的a值和第二个区块中的较低a值进行初始交易。矿工们试图让这些无赖的攻击变得更糟。只要a还在更新过程中,流氓矿工就可以继续尝试挖矿两个区块序列。

为了保护这些较新的合同,我建议将a中的步长减少到每个块不超过0.1%。为什么一小步有帮助?有一个因素我还没讲到——曲线合约有一个费用,因为这个费用,任何交易都会导致代币联盟曲线与原点略有偏离。这也适用于攻击者的大额交易,这使得攻击的利润略低。如果a的变化足够小,完全优化的攻击所带来的利润将被攻击者支付给合约的成本所抵消。因此,攻击者不再可能通过在两个事务之间混合更改来获利。

安全审计与智能合约设计的经验教训

对于这种攻击,需要设计者深入了解代币联合曲线。对于聪明的合同审计员来说,发现高度专业化知识的弱点可能并不现实。事实上,curve合同已经通过了几次安全审核,在我撰写本文时,swerve刚刚通过了另一次审核。在我看来,一个通用的漏洞审计程序,可以通过暴力手段而不是理论来检测是非常有用的。为了发现这种漏洞,我建议在任何两步交易过程中模拟代币联盟曲线审计。在这些过程中,审计员将针对契约运行一个随机事务,触发一个智能契约操作,然后运行另一个随机事务。在此,智能合约操作将激活对a的更新。对于此漏洞,此模糊测试过程将揭示灾难性合同损失的场景。然后审核员可以进一步调查以了解根本原因。

这有助于聪明的合同设计者理解审计的局限性。当合同允许一次执行一系列复杂的交互时,综合模糊测试变得不可行。问题是,用户交互有太多可能的组合,我们无法探索所有的可能性。因此,限制用户在短时间内可以执行的操作的数量和类是有帮助的。这里的想法是避免创建一个非常复杂的智能合约,而不能用暴力进行审计。

感谢curve团队为我的漏洞报告工作支付了非常慷慨的漏洞奖金。另外,我在0x的好友Greg Hysen,他挖矿了curve的代码,帮助我理解更新a的智能合约的逻辑。

温馨提示:

文章标题:Defi安全审计盲点,文章了解最新的安全漏洞曲线

文章链接:https://www.btchangqing.cn/118584.html

更新时间:2021年06月12日

本站大部分内容均收集于网络,若内容若侵犯到您的权益,请联系我们,我们将第一时间处理。

区块链行情

彭博社:拜登的当选对特别货币有利,但对国际货币联盟不利

2020-10-11 19:18:02

区块链行情

以太坊交易费创下新纪录,连续两个月高于比特币交易费

2020-10-11 19:26:04

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索