前言
6月20日,BSC链上的DeFi项目ImpossibleFinance突然遭遇闪电贷袭击,本是涨势喜人的IF代币从此也一蹶不振,价值一路下滑。知道创宇区块链安全实验室第一时间跟踪本次事件并分析。
事件分析
第一阶段:准备阶段
Litmus赢得第23次Kusama平行链插槽拍卖:据Litentry官方消息,Litmus赢得Kusama平行链拍卖的第23号卡槽,总共从849位支持者中募集到10821个KSM。[2022/1/31 9:23:55]
图1:黑客准备阶段流程图从黑客准备阶段流程图中我们可以看到黑客的最终目的是创建AAA代币与IF代币流动性。为此他的具体操作:第一步:获取IF代币(利用闪电贷从PancakeSwap中获取WBNB代币,并将其兑换成IF代币)
Crust Network赢得第19次Kusama平行链插槽拍卖:12月28日消息,Kusama第19次竞拍已结束,Crust Network以锁定30,026个KSM成功赢得Kusama的第21个插槽,接入Kusama中继链,以平行链的方式出块。据悉,第17个插槽后加入了Statemine和Encointer。[2021/12/28 8:09:24]
第二步:创建可控代币AAA(BBB)
Crust公布Kusama第6-10插槽拍卖计划:Crust计划于8月30日开启Crowdloan,至10月6日结束,覆盖5个插槽的竞拍周期,此轮Crowdloan的筹集目标为 80,000 KSM。Crust计划对连续的8个租赁期发起竞拍,一旦竞拍成功,贡献者的KSM将一直锁定到租赁期结束,总计48周。贡献者每个KSM可以获得1个CRU和1000个CSM的奖励,总奖励上限为8万个CRU + 8000万个CSM。奖励的30%将立即释放,后续每个租赁期释放10%。[2021/8/27 22:41:52]
第三步:在Impossible中添加了AAA代币与IF代币流动性
第二阶段:攻击阶段
图2:黑客攻击阶段流程图从黑客攻击阶段流程图中我们可以看到黑客的最终目的是获得BUSD代币。他的具体操作:第一步:通过Router合约设置兑换路径(AAA->IF->BUSD)第二步:在同一兑换过程中进行了两次兑换操作
第三步:兑换可获利的BUSD代币,并兑换IF代币为下次攻击做准备
攻击原理分析
为什么黑客要在同一兑换过程中进行两次兑换操作?理论上每次兑换操作都将导致K值的变化,用户一般无法获得预期数量的代币。既然黑客这样操作并获利,那么一定在合约某处出了问题。果然检查源码发现了问题:
cheapSwap函数并没有检查K值变化,直接更新价值变化。这就是黑客通过多次兑换操作获得额外BUSD代币的原因。总结
本次闪电贷安全事件主要是由于项目方在参考Uniswapv2协议进行创新时,没能及时对创新内容进行安全验证。虽然对cheapSwap函数做了限制,但是对其本质的安全性——价格变动却忽视了,这是不应该的。近期,BSC链上频频爆发攻击事件,合约安全愈发需要得到迫切重视。BSC官方目前也发推称推测有黑客团队盯上BSC,叮嘱各项目方注意规范,合约审计、风控措施、应急计划等都有必要切实落实。
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。