DeFi平台Balancer遭黑客攻击全过程技术拆解

2020-06-30 14:43 栏目:经验之谈 来源:网络整理 查看()

自北京时间6月29日凌晨2点03分以来,最近备受关注的DeFi平台平衡器上的两个ERC20通缩令牌池STA和STONK遭到黑客攻击,总损失超过50万美元。

在PeckShield安全人员介入分析后,他们很快发现问题的实质是平衡器上的通货紧缩令牌在某些特定情况下与其智能合同不兼容,因此攻击者可以创建一个带有价格偏差的STA/STONK流通池并从中获利。

黑客的攻击分为四个步骤,具体来说:

1)攻击者借出了104,331 WEST;从dYdX平台通过闪电贷款;

2)攻击者重复执行swapexactMountin()调用,直到平衡器拥有的大多数STA令牌用完,然后开始下一次攻击。最后,平衡器只剩下0.000000000000000001 STA。

3)攻击者利用STA令牌与平衡器智能合同的不兼容性,即簿记与余额的不匹配进行攻击,耗尽了资金池中的其他资产,最终获得价值523,616.52美元的数字资产总利润。

4)攻击者偿还了从dYdX借的闪电贷款,并卷走了从攻击中获得的数字资产。

在接下来的几页中,我们将逐步分析黑客在这个闪电贷款交易中的攻击行为(http://oko . palkeo.com/0x 013 be 97768 b 702 Fe 8 ECE cf 1a 40544 D5 ebc 3c 1961 D5 f 87 fee 4d 16 FDC 08 c 78106/)。

平衡器在整个过程中被黑客攻击和拆卸

DeFi平台Balancer遭黑客攻击全过程技术拆解

第一步:闪电贷款

从dYdX,331 WEST快速贷款,这部分熟悉DeFi贷款模式的读者应该很清楚,所以这里就不重复了。

步骤2:清空平衡器的STA资产

攻击者通过多次调用swapexactmount()清空了平衡器的STA资产,并为下一次攻击做好了准备。值得一提的是,我们发现合同代码中每次可以交换的资产数量实际上有一个上限,但是狡猾的攻击者计算出了可以预先交换的最大数量,并且巧妙地只给平衡器留下了0.000000000000000001 STA。

由于平衡器BPool的资产之间的“动态平衡”原则,只有接近0的STA才会增加STA的值,因此任何人都可以用1 STA来交换大量的其他数字资产。

第三步:攻击利润

在前两个准备步骤之后,是攻击者展示真正技术的时候了!

DeFi平台Balancer遭黑客攻击全过程技术拆解

如上所述,攻击者通过swapExactAmountIn()函数将0.000000000000000001 STA发送到BPool,并立即交换了30347个价值差异极高的WEST,实现了盈利。此时,在BPool真正接收到0.000000000000000001 STA之前,BPool的内部记帐机制_记录[STA]加1(注意:在此之后,攻击者将使用gulp()重置该值)。

DeFi平台Balancer遭黑客攻击全过程技术拆解

此外,我们发现在swapExactAmountIn()的底部,_普鲁兰德利()试图从攻击者那里收集相应的消费数据。但是,由于STA在转账时会消耗掉1%的手续费,所以实际的BPool不会收到任何STA。因此,BPool的实际STA余额与内部簿记不符。

DeFi平台Balancer遭黑客攻击全过程技术拆解

最有趣的部分是,攻击者不断地调用gulp()来重置记录,因此在BPool中总是有0.00000000001个STA。因此,攻击者可以以极高的价格使用0.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

DeFi平台Balancer遭黑客攻击全过程技术拆解

第四步:偿还闪电贷款

DeFi平台Balancer遭黑客攻击全过程技术拆解

最后,如上图所示,攻击者从闪电贷款偿还了104,331笔WETH贷款。

建议

这一攻击再次暴露了DeFi可组合性的兼容性风险。不久前,Uniswap和Lendf。由于与ERC777标准的兼容性,我遇到了非常严重的黑客事件。我们应该警惕这样一个事实,即类似的黑客攻击将来可能会频繁地发生在DeFi行业。

如果你问,你如何避免这种攻击?可能有两种优化和调整思路:1)当STA/STONK执行转账()或转账From()时,当转账金额不足以支付手续费时,应直接回滚或返回False;2)平衡器应该在每次调用transferFrom()函数后检查BPool的平衡。

当然,事后采取措施补救任何安全事故并不能弥补已经造成的损失。我们认为最好的解决办法是提前采取预防措施。DeFi项目开发人员应尽可能充分利用好的代码规范,并能在上线前寻求第三方安全公司的帮助进行全面的攻防测试,以便尽可能地发现所有潜在的漏洞。最后,尽可能彻底调查ERC20、ERC777和其他DeFi项目的任何组合行为。

后续行动

毫无疑问,平衡器事件的发生将不可避免地对DeFi社区产生影响,并且这种事件很有可能会在下一次发生。我们在此提醒大多数DeFi项目开发商注意合同的安全性。

根据我们的统计,平衡器在这次攻击中总共损失了523,616.52美元的数字资产。详情如下:

DeFi平台Balancer遭黑客攻击全过程技术拆解

微信二维码
售前客服二维码

文章均源于网络收集编辑侵删

提示:仅接受技术开发咨询!

郑重申明:资讯文章为网络收集整理,官方公告以外的资讯内容与本站无关!
NFT开发,NFT交易所开发,DAPP开发 Keywords: NFT开发 NFT交易所开发 DAPP开发