浅析BSC币安智能链上四次闪电贷攻击

星球日报 view 65166 2021-6-19 15:38
share to
Scan QR code with WeChat

在2021年5月份短短20余天,BSC币安智能链上发生四次闪电贷攻击套利事件,总共损失资金远超7800万美金。四次攻击事件的手法和原理均有相似之处,知帆科技将总结对比四次事件的攻击原理和手法,希望广大项目方和用户提高警惕。

在开始分析BSC链上安全事件之前,需要了解一些基本概念,比如闪电贷的含义、Defi项目的盈利模式等。

闪电贷是什么

闪电贷就是在一笔链上交易中完成借款和还款,无需抵押。由于一笔链上交易可以包含多种操作,使得开发者可以在借款和还款之间加入其它链上操作,使得这样的借贷多了很多想象空间,也变得具有意义。闪电贷的功能是确保用户无需抵押来实现借还款,并且如果资金没有返还,那么交易会被还原,即撤消之前执行的所有操作,从而确保协议和资金的安全。

Defi项目的盈利模式

此处以PancakeSwap为例说明。PancakeSwap是币安链上的自动化做市商(AMM)平台,用户可以通过该平台交易数字资产,但是跟传统交易模式不一样的是,用户的交易对象是流动性资金池。这些资金池中聚积着其他用户的资金。用户将资金注入池中,接收来自流动性供应商(即“LP”)的代币。然后,他们可以使用这些代币换回自己的资金份额并赚取部分交易费用。简而言之,用户可以在该平台交易代币,也可以通过添加流动性来获得奖励。

1、分析目的

梳理事件发生原因

总结黑客攻击手法

对项目方和用户的安全提示

2、事件分析

AutoShark Finance

北京时间2021年5 月 25 日,币安链(BSC)DeFi 协议AutoShark Finance 受到闪电贷攻击。

黑客铸造了1亿枚SHARK代币并短时间大量出售,造成SHARK价格闪崩,从1.2美元快速跌至0.01美元。资金池中所有用户的资金还是安全的,这次攻击也没有造成项目方资金损失。

黑客利用项目中的 WBNB/SHARK 策略池中的 getReward 函数漏洞(添加流动性的余额计算有误),从而利用SharkMinter 合约铸造出了大量的 SHARK 代币获利。

黑客首先从Pancake 借出大量 WBNB,在AutoShark SHARK/WBNB池中兑换出大量的SHARK,把两种代币打入SharkMinter合约,同时池中 WBNB 的数量增多。合约误以为攻击者打入了巨量的手续费到合约中,并且由于WBNB 数量非常多,导致合约计算出错误的 LP 价值。

合约最后在统计黑客的贡献的时候计算出了一个非常大的值,导致 SharkMinter 合约给攻击者铸出了大量的 SHARK 代币。

浅析BSC币安智能链上四次闪电贷攻击

AutoShark 被攻击交易截图

Bogged Finance 团队因闪电贷攻击损失 362 万美元

北京时间2021年5 月 22 日,知帆科技跟踪发现币安链(BSC)DeFi 协议 Bogged Finance 受到黑客攻击,具体表现为黑客对 BOG 代币合约代码中_txBurn函数的逻辑错误进行闪电贷套利攻击。

在BOG合约代码中,本应对所有交易收取 5% 的交易额作为交易费用,同时允许向自己转账,在自我转账的过程中,仅扣除1%手续费。

然而,在此次攻击中,攻击者通过闪电贷加大质押的金额,再利用合约对自我转账类型的交易审核偏差(在_transferFrom 函数中未校验转账地址)来添加大量流动性进行流动性挖矿,并且反复自我转账获利,最终移除流动性从而完成攻击过程。

浅析BSC币安智能链上四次闪电贷攻击

Bogged Finance 被攻击交易截图

PancakeBunny闪电攻击损失 4,500 多万美元

PancakeBunny 是与 BSC 链上 TVL 最大的去中心化交易所 PancakeSwap 相关的收益聚合器。

北京时间2021年5月20日,知帆科技跟踪发现攻击者利用合约漏洞,从PancakeSwap和ForTube流动性池中闪电贷借到大额资金,不断加大BNB-BUNNY池中的BNB数量,之后在bunnyMinterV2合约中,铸造大约700万个BUNNY代币,部分换成BNB偿还闪电贷后,还有盈利69.7万枚BUNNY和11.4万枚BNB。

浅析BSC币安智能链上四次闪电贷攻击

PancakeBunny 被攻击交易截图

Spartan Protocol被攻击损失约3000万美金 

北京时间2021年5月2日,DeFi项目Spartan遭到黑客的闪电贷攻击。SpartanSwap 应用了 THORCHAIN 的 AMM 算法。

此算法采用流动性敏感资费(Liquidity-sensitive fee)来解决流动性冷启动以及滑点问题,但是该算法存在漏洞。

黑客也像前几次闪电贷攻击一样,首先从 PancakeSwap 中借出 WBNB,然后将 WBNB 兑换成 SPARTAN存入流动池换取LP token。

在移除流动性时会通过池子中实时的代币数量来计算用户的 LP 可获得多少对应的代币,由于算法漏洞(移除流动性时没有滑点修正机制),此时会获得比添加流动性时更多的代币,所以黑客只需重复添加再移除流动性就可获得多余代币盈利。

浅析BSC币安智能链上四次闪电贷攻击

Spartan Protocol被攻击交易截图

3、总结BSC链上攻击手法

黑客通过BSC闪电贷平台(PancakeSwap)筹款

布置自动化合约进行BNB和平台代币的兑换

将代币打入平台合约池中获得LP 代币奖励

返还借来的闪电贷资金

通过跨链桥平台(Nerve)将所获资产快速转移至以太坊

第一步:黑客从借贷平台获取大额资金

第二步:部署自动化攻击合约攻击交易所价格预言机

第三步:通过代币价格差异获得套利空间

第四步:返还闪电贷资金

第五步:把利润做跨链转移到以太坊,防止被追踪

4、安全提示

由上述分析得知,黑客从项目方逻辑漏洞着手来获取利益是非常常见的手段。每次有新的平台被攻击时,其他平台管理者更应该提高警惕,第一时间检查复盘自己的代码有没有相同或类似的漏洞,从而保障自己的口碑和资金安全。

同时,知帆科技提醒广大用户,在某一项目被攻击时,需加强对同链或同类项目的关注。若用户已经投入资金在类似项目,更加需要关注项目方的代码或网络上有没有对该项目的安全做出的评估辅助评判项目的安全性。

btcfans公众号

Scan QR code with WeChat

Disclaimer:

Previous: Kusama 平行链插槽竞拍项目竞拍策略分析 Next: 对Eth2里MEV的初步探索(下)

Related