当前位置:首页区块链我骗了自己——汉堡包被窃听了

我骗了自己——汉堡包被窃听了

慢雾安全团队建议 DApp 开发者在移植其他协议的代码时,需充分了解移植协议的架构,并充分考虑移植协议和自身项目的兼容性,且需通过专业安全审计机构的审计后才上线,防止资金损失情况的发生。

作者:于丹@慢雾保安队

我骗了自己——汉堡包被窃听了

据慢雾地区消息,2021年5月28日,币安智能链(BSC)DeFi项目遭到黑客攻击,造成330万美元损失。慢雾安全小组首次参与分析,分享结果如下:

攻击细节分析

Burgerswap是Uniswap AMM项目的仿制品,但它不同于Uniswap体系结构。交换体系结构通常分为[委托-gt;lpPlatForm-gt;Pair】。委托层管理所有Pair信息,并负责创建lpplatform层。然后lpplatform层创建相应的pair contract。在整个体系结构中,平台层充当Uniswap的路由器,负责将计算出的事务数据和要交换的代币转发给pair contract完成交换。

我骗了自己——汉堡包被窃听了1

此事件的根源是此体系结构的问题。通过逐步分析攻击者的交易行为,可以还原整个攻击过程的核心

我骗了自己——汉堡包被窃听了2

这次袭击始于pancake的闪电贷款。攻击者从pancake借用大量wbnb,然后通过burgerswap传递这些wbnb;变成汉堡代币。完成上述操作后,攻击者通过委托层用自己的token(攻击契约本身)和burger token创建一个事务对,并增加流动性,为后续攻击做准备。

我骗了自己——汉堡包被窃听了3

创建和准备代币后,攻击者立即通过paltform层的swapexacttokens for tokens函数启动交换。交换路径是[由攻击者控制的代币-gt;汉堡-gt;WBNB】

我骗了自己——汉堡包被窃听了4

接下来,执行最关键的操作。

由于前一个攻击者在创建事务对时使用了自己控制的代币,因此在代币交换过程中, the innertransferfrom函数调用攻击者控制的代币契约,因此攻击者可以在innertransferfrom函数中,重新输入swapexactTokens for tokens函数。攻击者为什么要这样做?

我骗了自己——汉堡包被窃听了5

通过对平台层swap exacttokens for tokens函数的代码分析,不难发现契约在调用innertransferfrom函数时,先计算用户的交换数据,然后在操作innertransferfrom函数后调用,预先计算的数据被转发到底层进行真正的代币交换。从这个函数的角度来看,即使攻击者重新输入swapexacttokens for tokens函数,底层swap函数也是独立的。乍一看,没有问题,但链条上的一个行为却引起了慢雾安保团队的注意

我骗了自己——汉堡包被窃听了6

我们惊奇地发现,在再入交换过程中,交换量并没有因为滑动点而减少。原因是什么?似乎关键是潜在的配对契约问题。我们进一步分析了底层调用的pair contract,代码如下:

我骗了自己——汉堡包被窃听了7

通过分析pair的代码,我们惊讶地发现,在交换过程中,合约没有按照常数积公式检查交换后的价值!!也就是说,pair契约完全依赖于平台层的数据进行交换,导致了这一事件的发生。由于pair层本身不校验常数积,在重入时预先计算平台层交换数据,innertransferfrom函数完成后,pair的更新数据不反映在平台层。因此,交易所在再入交易中产生的滑动点不影响下一个交易所,造成损失。图片如下:

我骗了自己——汉堡包被窃听了8

总结

此攻击属于交换体系结构问题。pair层完全信任paltform层的数据,不会再次检查,从而导致攻击。近年来,DeFi安全事件频发。针对DAPP攻击日益密集的现状,slow fog安全团队建议DAPP开发者在移植其他协议的代码时,应充分了解迁移协议的架构,充分考虑迁移协议与自身项目的兼容性,并且只有经过专业的安全审计机构审计后才能上线,以防止资金损失的发生。

温馨提示:

文章标题:我骗了自己——汉堡包被窃听了

文章链接:https://www.btchangqing.cn/268585.html

更新时间:2021年05月29日

本站大部分内容均收集于网络,若内容若侵犯到您的权益,请联系我们,我们将第一时间处理。

区块链行情

比特币又成了庞氏骗局。快跑,我跟在你后面!

2021-5-29 0:19:35

区块链

投融资周报|基础设施领域大量融资频繁,资产管理领域仍高度活跃

2021-5-29 1:17:53

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索