在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 代币。
AutoShark 被进犯买卖截图
Bogged Finance 团队因闪电贷进犯丢失 362 万美元
北京时间2021年5 月 22 日,知帆科技盯梢发现币安链(BSC)DeFi 协议 Bogged Finance 遭到黑客进犯,具体表现为黑客对 BOG 代币合约代码中_txBurn函数的逻辑过错进行闪电贷套利进犯。
在BOG合约代码中,本应对一切买卖收取 5% 的买卖额作为买卖费用,一起答应向自己转账,在自我转账的进程中,仅扣除1%手续费。
但是,在此次进犯中,进犯者经过闪电贷加大质押的金额,再使用合约对自我转账类型的买卖审阅误差(在_transferFrom 函数中未校验转账地址)来增加很多活动性进行活动性挖矿,而且重复自我转账获利,最终移除活动性然后完成进犯进程。
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。
PancakeBunny 被进犯买卖截图
Spartan Protocol被进犯丢践约3000万美金
北京时间2021年5月2日,DeFi项目Spartan遭到黑客的闪电贷进犯。SpartanSwap 应用了 THORCHAIN 的 AMM 算法。
此算法采用活动性敏感资费(Liquidity-sensitive fee)来处理活动性冷启动以及滑点问题,但是该算法存在缝隙。
黑客也像前几次闪电贷进犯相同,首先从 PancakeSwap 中借出 WBNB,然后将 WBNB 兑换成 SPARTAN存入活动池换取LP token。
在移除活动性时会经过池子中实时的代币数量来计算用户的 LP 可取得多少对应的代币,因为算法缝隙(移除活动性时没有滑点修正机制),此时会取得比增加活动性时更多的代币,所以黑客只需重复增加再移除活动性就可取得多余代币盈余。
Spartan Protocol被进犯买卖截图
3、总结BSC链上进犯方法
黑客经过BSC闪电贷渠道(PancakeSwap)筹款
布置自动化合约进行BNB和渠道代币的兑换
将代币打入渠道合约池中取得LP 代币奖励
返还借来的闪电贷资金
经过跨链桥渠道(Nerve)将所获资产快速转移至以太坊
第一步:黑客从假贷渠道获取大额资金
第二步:部署自动化进犯合约进犯买卖所价格预言机
第三步:经过代币价格差异取得套利空间
第四步:返还闪电贷资金
第五步:把利润做跨链转移到以太坊,避免被追踪
4、安全提示
由上述剖析得知,黑客从项目方逻辑缝隙着手来获取利益对错常常见的手法。每次有新的渠道被进犯时,其他渠道管理者更应该进步警觉,第一时间查看复盘自己的代码有没有相同或相似的缝隙,然后保障自己的口碑和资金安全。
一起,知帆科技提示广阔用户,在某一项目被进犯时,需加强对同链或同类项意图重视。若用户已经投入资金在相似项目,更加需要重视项目方的代码或网络上有没有对该项意图安全做出的评价辅佐评判项意图安全性。
视野开拓
如同任何形式的教育一样,学习技术也需要付出很长的时间,学习的过程中肯定也会出现这样那样的错误。正如现代汽车集团一位质量控制经理所说的那样,技术进步的秘诀就在于“不在很长一段时间内重复同样的错误”。-《亚洲大趋势》