据慢雾区消息,币安智能链(BSC)DeFi项目ImpossibleFinance遭遇闪电贷攻击。慢雾安全团队第一时间介入分析,并将结果分享如下:
攻击细节分析
ImpossibleFinance的DEX架构参考了Uniswapv2,但在Pair的实现上有所不同。ImpossiblePair分别实现了cheapSwap与swap两个接口。cheapSwap函数限制了只由Router合约可进行调用,swap函数则是任意用户都可调用进行代币兑换操作。本次攻击事件的根本原因正是出在这种特殊的代币兑换架构上,接下来我们对此次攻击进行具体分析:
首先攻击者利用闪电贷从PancakeSwap中借出大量WBNB,并最终将其兑换成IF(ImpossibleFinance代币)?。
Art Blocks创始人:平台增长过快“不合理且不可持续”,不利于团队健康发展:7月26日消息,NFT平台Art Blocks创始人Erick Calderon(又名Snowfro)在播客节目中表示,该平台的快速增长“感觉上不合理,且不可持续”。他补充说,加密熊市导致了“更平静”的状况,“让我更容易与人类就艺术进行理性的对话。”
Calderon在谈到该平台在2021年9月和10月的迅速崛起时说:“从心理健康的角度来看,这对Art Blocks作为一个团队来说是不健康的,对Art Blocks的艺术家也不健康。是的,他们可以一下子赚一大笔钱,但这实际上并不总是健康的,尤其是当你质疑作品的实际价值时。”
最近几周,尽管市场处于熊市,Calderon说,“Art Blocks似乎又开始复苏了。”这反过来又让投机再次抬头。但他很快澄清说,“我们对投机没有意见,”但“我们要明确表示,这不是我们在这里的原因。当赚了一大笔钱时,我们会很开心,当赔了一大笔钱时,我们会很难过——但这些事情实际上与我们的目标无关,我们的目标是用这种新方式提供由了不起的艺术家创作的了不起的艺术作品。”
熊市似乎并没有削弱Art Blocks的雄心。Calderon说,该平台正在招聘新人,“我们希望Art Blocks发展壮大,我们意识到时间是关键,”他补充说,该平台最近聘请了一名艺术总监。(Decrypt)[2022/7/26 2:39:08]
巴克莱私人银行首席市场策略师:比特币几乎是“不可投资的”:金色财经报道,1月21日消息,巴克莱私人银行首席市场策略师Gerald Moser表示,虽然预测比特币的预期回报率几乎是不可能的,但从投资组合的角度来看,它的波动性使得该资产几乎是“不可投资”的。(The Block)[2021/1/21 16:39:09]
随后攻击者创建了一个由自己控制的代币AAA(BBB),并与上一步骤中获得的IF代币添加流动性。
声音 | 嘉楠耘智品牌部相关负责人:赴美上市一事“不太好说”:根据彭博消息,近日,中国第二大比特币矿机生产商杭州嘉楠耘智信息科技有限公司拟赴美国上市,并计划早期集资10亿美元,最快可能2019年上半年登陆美股。有媒体联系嘉楠耘智品牌部相关负责人核实,对方表示“不太好说”。[2019/1/11]
之后攻击者通过Router传入自定的兑换路径(AAA->IF->BUSD)将AAA代币兑换成BUSD代币,而问题正是出现在此兑换过程中。通过链上记录我们可以很容易的发现攻击者在将AAA代币兑换成IF代币的过程中进行了两次兑换操作:
金融业将谷歌加密禁令视为“不道德”和“不公平”行为:据CCN消息,金融业高管们认为,谷歌禁止加密货币广告的决定不仅是不合理的,而且是不道德的。Facebook和Twitter已经颁布了类似的禁令。该禁令涵盖加密货币,ICO,加密交易所,加密钱包和加密交易建议。曼彻斯特投资公司Blackmore Group首席执行官Philip Nunn表示,由于谷歌和Facebook都表示对加密货币和区块链技术感兴趣,因此禁令并非基于对犯罪的担忧。[2018/6/6]
为什么在一次兑换过程中会进行两次兑换操作呢?
通过分析具体的内部调用流程我们可以发现,攻击者在Router合约调用AAA合约的transferFrom函数将AAA代币转入Pair合约的过程中,同时调用了一次Pair合约的swap函数(即在transferFrom函数实现了正常转账与swap调用的逻辑)。然后再通过项目设计预期的cheapSwap再进行一次正常的代币兑换操作。
Longfin首席执行官Venkat Meenavalli:公司达到的市场价值“不是很现实”:金融科技公司Longfin收购了一家加密货币公司后,其市场份额上升了1000%以上。但首席执行官认为不应该这样。Longfin首席执行官Venkat Meenavalli 在CNBC的Fast Money中表示: “我们是一家盈利的公司,我们为此非常兴奋狂热。”他后来补充说,公司达到的市场价值“不是很现实”。[2017/12/20]
通过以上分析我们可以知道攻击者在一次代币兑换过程中分别通过调用swap函数与cheapSwap函数进行两次代币兑换操作,最终收到了额外的BUSD代币。那么既然是进行兑换操作,理论上每次兑换操作都将导致K值的变化,最终使得用户无法获得预期的代币。
但通过分析ImpossiblePair的swap函数与cheapSwap函数的具体逻辑,我们发现一个惊人的情况:在swap函数中进行了K值检查,而在cheapSwap函数却未进行K值检查而直接进行了update操作。这就导致了攻击者进行了多次兑换操作获得了额外的BUSD。
攻击流程
1、攻击者先通过PancakeSwap闪电贷借出WBNB,并将WBNB兑换成IF代币。
2、创建恶意的代币合约AAA(BBB),并在Impossible中添加了AAA代币与IF代币流动性。
3、通过AAA->IF->BUSD路径进行AAA代币到BUSD代币的兑换,并在AAA代币转入Pair合约兑换成IF代币的过程中进行了一次IF代币与BUSD的兑换操作,随后再进行正常的cheapSwap操作。最终获得了额外的BUSD代币。
4、之后重复以上操作进行获利。
总结
本次攻击的核心在于cheapSwap函数中未进行K值检查,导致攻击者可以通过在一次兑换过程中进行多次兑换操作以获得额外的代币。慢雾安全团队建议DeFi协议在参考其他项目的基础上进行创新的过程中应该充分的对其新的模型进行检查验证以避免此类安全事故的发生。
参考交易:
https://bscscan.com/tx/0x0220704a99ddfb982d26e65cc337f26b77dc057930b7aa1d848cc48ec77984a8
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。