前言
6月20日,BSC链上的DeFi项目ImpossibleFinance突然遭遇闪电贷袭击,本是涨势喜人的IF代币从此也一蹶不振,价值一路下滑。知道创宇区块链安全实验室第一时间跟踪本次事件并分析。
事件分析
第一阶段:准备阶段
图1:黑客准备阶段流程图从黑客准备阶段流程图中我们可以看到黑客的最终目的是创建AAA代币与IF代币流动性。为此他的具体操作:第一步:获取IF代币(利用闪电贷从PancakeSwap中获取WBNB代币,并将其兑换成IF代币)
第二步:创建可控代币AAA(BBB)
第三步:在Impossible中添加了AAA代币与IF代币流动性
第二阶段:攻击阶段
图2:黑客攻击阶段流程图从黑客攻击阶段流程图中我们可以看到黑客的最终目的是获得BUSD代币。他的具体操作:第一步:通过Router合约设置兑换路径(AAA->IF->BUSD)第二步:在同一兑换过程中进行了两次兑换操作
第三步:兑换可获利的BUSD代币,并兑换IF代币为下次攻击做准备
攻击原理分析
为什么黑客要在同一兑换过程中进行两次兑换操作?理论上每次兑换操作都将导致K值的变化,用户一般无法获得预期数量的代币。既然黑客这样操作并获利,那么一定在合约某处出了问题。果然检查源码发现了问题:
cheapSwap函数并没有检查K值变化,直接更新价值变化。这就是黑客通过多次兑换操作获得额外BUSD代币的原因。总结
本次闪电贷安全事件主要是由于项目方在参考Uniswapv2协议进行创新时,没能及时对创新内容进行安全验证。虽然对cheapSwap函数做了限制,但是对其本质的安全性——价格变动却忽视了,这是不应该的。近期,BSC链上频频爆发攻击事件,合约安全愈发需要得到迫切重视。BSC官方目前也发推称推测有黑客团队盯上BSC,叮嘱各项目方注意规范,合约审计、风控措施、应急计划等都有必要切实落实。
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。