据慢雾区消息,币安智能链(BSC)DeFi项目ImpossibleFinance遭遇闪电贷攻击。慢雾安全团队第一时间介入分析,并将结果分享如下:
攻击细节分析
ImpossibleFinance的DEX架构参考了Uniswapv2,但在Pair的实现上有所不同。ImpossiblePair分别实现了cheapSwap与swap两个接口。cheapSwap函数限制了只由Router合约可进行调用,swap函数则是任意用户都可调用进行代币兑换操作。本次攻击事件的根本原因正是出在这种特殊的代币兑换架构上,接下来我们对此次攻击进行具体分析:
首先攻击者利用闪电贷从PancakeSwap中借出大量WBNB,并最终将其兑换成IF(ImpossibleFinance代币)?。
加密分析师:“不要卖”你的比特币给贝莱德:8月5日消息,新西兰加密货币分析师 Lark Davis 发推称:贝莱德正在为你的比特币而来,不要把比特币卖给他们。据悉,Lark Davis在Twitter拥有超100万的粉丝。
昨日消息,Coinbase与贝莱德达成战略合作伙伴关系,贝莱德将通过Coinbase Prime为其客户提供加密交易和托管服务。[2022/8/6 12:05:44]
北京大兴国际机场临空经济区:利用区块链等技术大力推行“不见面”审批:12月3日,北京大兴国际机场临空经济区(大兴)管理委员会专职副主任罗伯明在一场发布会上介绍临空区赋权。罗伯明表示,为做好赋权承接工作,临空区管委会将因地制宜服务社会企业,灵活把握项目时序,合理安排建设任务,提升治理能力。目前已搭建起“一网通办”受理系统,下一步将以企业需求为导向,利用区块链、大数据等信息技术,大力推行“不见面”审批,构建极简高效的审批机制,确保赋权事项批得快;以有力监督为目标,推进审管衔接,确保赋权事项管得好。(中国新闻网)[2020/12/3 22:59:51]
随后攻击者创建了一个由自己控制的代币AAA(BBB),并与上一步骤中获得的IF代币添加流动性。
动态 | 平安城科“不动产集成服务平台”利用区块链等科技:据新华网报道,平安城科“不动产集成服务平台”利用云计算、大数据、区块链、OCR识别等前沿科技。区块链技术在交易/支付上的应用,将合同、账单、支付模块上链,实现信息共享。平安城科的不动产登记交易平台项目已经在全国28个城市启动。[2019/3/13]
之后攻击者通过Router传入自定的兑换路径(AAA->IF->BUSD)将AAA代币兑换成BUSD代币,而问题正是出现在此兑换过程中。通过链上记录我们可以很容易的发现攻击者在将AAA代币兑换成IF代币的过程中进行了两次兑换操作:
声音 | 对冲基金创始人:比特币正在转向针对“不负责任”中央银行的保险政策:据cryptoglobe消息,对冲基金Ikigai的创始人Travis Kling最近表示:“我们真的很有可能拥有比黄金更好的东西。” Kling解释说,比特币投资可能与信用违约互换(CDS)类似,后者类似于在借款人违约时发放赔付的保险对策。他提到CDS是一种“针对财政和货币政策不负责任”的传统对冲工具。他指出,在遭受恶性通货膨胀的经济体中,可能发生比特币等另类投资形式(作为一种对冲工具)的“大规模采用”。 目前,Kling担心的是美国债务增加(约22万亿美元),以及美联储和其他国家的央行为刺激经济增长而采取的看似严厉的措施。一些分析师认为,持续的低利率加上不断增加的预算赤字可能导致恶性通货膨胀,这将从根本上侵蚀包括美元在内的法定货币的价值。[2019/2/10]
为什么在一次兑换过程中会进行两次兑换操作呢?
动态 | 社区成员成立网站 追踪Tether的“不稳定性”:在USDT跌破1美元后,市场对有争议的稳定币USDT变的谨慎。相关社区成员建立了一个网站来跟踪这种差异,这被称为“风险溢价”(risk premium)。它会自动跟踪主要的加密货币交易所,并详细说明每种平台上比特币的平均价格,其中包括以USDT进行交易的交易所以及以美元为基础的交易所。[2018/10/16]
通过分析具体的内部调用流程我们可以发现,攻击者在Router合约调用AAA合约的transferFrom函数将AAA代币转入Pair合约的过程中,同时调用了一次Pair合约的swap函数(即在transferFrom函数实现了正常转账与swap调用的逻辑)。然后再通过项目设计预期的cheapSwap再进行一次正常的代币兑换操作。
通过以上分析我们可以知道攻击者在一次代币兑换过程中分别通过调用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
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。