灵踪安全:闪电贷攻击继续 Dot Finance攻击事件分析

灵踪安全 view 34783 2021-8-27 09:51
share to
Scan QR code with WeChat

8月25日,BSC链上的收益聚合应用Dot.Finance受到闪电贷攻击。受本次攻击事件的影响,项目代币PINK在短时内发生暴跌,从0.77美元跌至0.5美元。

这次攻击事件中有两点值得我们注意:

一是闪电贷再次成为黑客的工具,将攻击的后果放大。

二是本次攻击与前阵子PancakeBunny受到的攻击同源。

关于“闪电贷”,我们已经在往期的文章中多次介绍:它不是攻击的元凶而只是攻击利用的手段。本文特别想强调的是第二点,也就是本次攻击与PancakeBunny的同源性。

我们在本文所说的“同源”通俗的理解就是本项目出现的漏洞与PancakeBunny一样。为什么会这样呢?原因就在于Dot Fiance是分叉自PanacakeBunny的代码,而在分叉复制的过程中,项目方或许是因为疏忽,或许是因为其它原因,并没有对代码进行详细审计,以致PancakeBunny代码中的漏洞也一并复制过来了,而没有得到修正。

由于本次攻击与PancakeBunny具有同源性,因此我们有必要首先回顾一下PancakeBunny此前受到的攻击情况,这些攻击事件具体如下:

2021年5月20日,PancakeBunny第一次遭遇攻击

2021年5月26日,PancakeBunny第二次遭遇攻击

2021年7月17日,PancakeBunny在Polygon上的版本遭外部攻击

本次Dot Finance受到的攻击则与 PancakeBunny第二次遭受的攻击是相同的漏洞。具体地说,Dot Finance分叉复制了PancakeBunny的收益聚合部分,但没有修正其隐藏的漏洞。

灵踪安全对本次事件的详细分析如下:

在本次攻击中,

攻击者的地址为:0xDFD78a977c08221822F6699AD933869Da6d9720C

攻击合约的地址为:0x33f9bB37d60Fa6424230e6Cf11b2d47Db424C879

被攻击的合约为“VaultPinkBNB”,其地址为:0xbfca3b1df0ae863e966b9e35b9a3a3fee2ad8b07

具体在合约“VaultPinkBNB”中,出现漏洞的代码为“getReward()”函数,函数完整代码如下:

灵踪安全:闪电贷攻击继续 Dot Finance攻击事件分析

函数中具体出现漏洞的代码片段为:

灵踪安全:闪电贷攻击继续 Dot Finance攻击事件分析

上述代码片段在计算奖励时,_minter.performanceFee(cakeBalance)传入的参数cakeBalance 是CAKE代币的余额。攻击者可以在调用getReward前将闪电贷借入的CAKE转入 VaultPinkBNB合约,导致产生非预期的performanceFee值,而_minter.mintFor()则根据这个非预期的performanceFee值增发超额的PINK奖励代币。然后攻击者将PINK在Pancake上卖出换为BNB和CAKE,一部分偿还闪电贷,剩余部分则为本次攻击的获利。

这类由项目之间的相互分叉而导致漏洞传导的事件已经不是第一次发生,我们相信未来这类漏洞还会发生。

单就本次攻击及漏洞的来源来看,灵踪安全强烈建议,所有分叉自PancakeBunny或与 PancakeBunny同源的项目都应再次审查项目代码是否存在类似的漏洞,对代码进行安全审计。

如果从本次漏洞出现的模式看,所有分叉自其它项目的项目都应提高警惕。这类具有同源性质的多个项目,无论其漏洞本身隐藏得多么深,但只要发生一次、被业界公开,其它的同源项目都应该引起警示并马上着手整改。因为此类漏洞一旦被披露,理论上项目方是有足够的时间来修正问题的。只要项目方在漏洞发生的第一时间对本项目代码进行二次审计和测试,本项目受到后续攻击是完全可以避免的。

因此灵踪安全再次提醒项目方,尤其是分叉自其它项目的项目方,每当同源项目受到攻击时,应立刻着手对本项目代码进行再次审计,避免项目重蹈覆辙。

btcfans公众号

Scan QR code with WeChat

Link
Disclaimer:

Previous: Web2 洪水中的方舟:Web3 声誉会比中心化社交网络更好吗? Next: 精准抄底!摩根士丹利买入灰度比特币信托大量股份

Related