Impossible被黑分析:“不可思议”的被黑之旅_BAL:币安binance官网

据慢雾区消息,币安智能链(BSC)DeFi项目ImpossibleFinance遭遇闪电贷攻击。慢雾安全团队第一时间介入分析,并将结果分享如下:

攻击细节分析

ImpossibleFinance的DEX架构参考了Uniswapv2,但在Pair的实现上有所不同。ImpossiblePair分别实现了cheapSwap与swap两个接口。cheapSwap函数限制了只由Router合约可进行调用,swap函数则是任意用户都可调用进行代币兑换操作。本次攻击事件的根本原因正是出在这种特殊的代币兑换架构上,接下来我们对此次攻击进行具体分析:

首先攻击者利用闪电贷从PancakeSwap中借出大量WBNB,并最终将其兑换成IF(ImpossibleFinance代币)?。

Smilee Finance v1.69已上线,并发布Synthetic AMM、Directional Impermanent Gain:5月22日消息,链上衍生品协议 Smilee Finance v1.69 版本已上线,并发布新产品 Synthetic AMM、Directional Impermanent Gain。AMM 允许在任何时候以基于 Black & Scholes 模型的市场驱动定价来交易无固定收益期权,Directional Impermanent Gain 可以提供更高的资本效率、更多的杠杆作用于更多的无常收益。该版本第二、三部分即将推出。金色财经此前消息,链上衍生品协议Smilee Finance完成200万美元种子轮融资,Dialectic领投。[2023/5/22 15:17:38]

Imperva:OpenSea漏洞允许用户对平台上NFT交易者的身份进行去匿名化处理:3月12日消息,安全公司 Imperva 揭示了 OpenSea 的一个漏洞,该漏洞允许用户对平台上 NFT 交易者的身份进行去匿名化处理。此次漏洞是由 OpenSea 使用的 iFrame-resizer 库配置错误引起的,错误配置导致存在跨站点搜索漏洞,黑客利用该漏洞可获取用户身份。目前,OpenSea 已经解决了这个问题,但不确定是否有用户信息泄露。[2023/3/12 12:57:54]

随后攻击者创建了一个由自己控制的代币AAA(BBB),并与上一步骤中获得的IF代币添加流动性。

Wealthsimple CEO:加拿大应该在加密领域树立旗帜:金色财经报道,加拿大投资管理公司 Wealthsimple 的联合创始人兼首席执行官 Michael Katchen 认为,地方当局和监管机构应该创建一个对加密货币友好的生态系统。他补充说,区块链技术“非常令人兴奋”,而科技行业中一些最聪明的人“正在涌入”数字资产领域,通过向加密世界敞开怀抱,加拿大可以吸引许多聪明的人,他们是生态系统的一部分。

Wealthsimple 的首席执行官表示,“最聪明的技术人员和最聪明的工程师正蜂拥而至在这个领域构建应用程序,这通常是我们在任何重大技术革命的风口浪尖看到的事情。加拿大可以插上一面旗帜说,‘我们想帮助那些想从事加密项目的最聪明的人,区块链上的公司——从加拿大开始。’”(cryptopotato)[2022/1/29 9:21:34]

角色扮演游戏“Imperatum”推出新版本 比特币价值将影响游戏难度:角色扮演游戏“Imperatum”推出新版本。在这个新版本中,如果比特币价值激增,则玩家将拥有更多的普通战利品、稀有战利品和更强大的敌人;如果比特币价值大幅下降,则战利品将减少、敌人能力变弱。[2018/1/28]

之后攻击者通过Router传入自定的兑换路径(AAA->IF->BUSD)将AAA代币兑换成BUSD代币,而问题正是出现在此兑换过程中。通过链上记录我们可以很容易的发现攻击者在将AAA代币兑换成IF代币的过程中进行了两次兑换操作:

为什么在一次兑换过程中会进行两次兑换操作呢?

通过分析具体的内部调用流程我们可以发现,攻击者在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协议在参考其他项目的基础上进行创新的过程中应该充分的对其新的模型进行检查验证以避免此类安全事故的发生。

郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。

金智博客

[0:0ms0-6:93ms