我竟了我自己?—— BurgerSwap 被黑分析_META:Monopoly Meta

By:yudan@慢雾安全团队

据慢雾区消息,2021年05月28日,币安智能链(BSC)DeFi项目BurgerSwap被黑,损失达330万美元。慢雾安全团队第一时间介入分析,并将结果分享如下:

攻击细节分析

BurgerSwap是一个仿UniswapAMM项目,但是和Uniswap架构有所区别。BurgerSwap架构总体分成。其中Delegate层管理了所有的Pair的信息,并负责创建lpPlatForm层。然后lpPlatForm层再往下创建对应的Pair合约。在整个架构中,lpPlatForm层充当了Uniswap中Router的角色,负责将计算交易数据和要兑换的代币转发到Pair合约中,完成兑换。

数字时尚平台DressX完成新一轮融资,华纳音乐集团 (WMG)参投:12月15日消息,数字时尚平台 DressX 已完成新一轮融资,华纳音乐集团 (WMG) 参投,具体投资金额尚未披露。华纳音乐集团将为歌迷和粉丝推出元宇宙虚拟商品verch。DressX 此前已完成 330 万美元融资,该平台在 Meta Avatar Store 推出的虚拟服装可穿在 Instagram 和 Facebook 的头像上,除了 Meta 之外,该公司还与 Roblox、Zepeto、Ready Player Me、Decentraland、The Sandbox 和 Spatial 等虚拟头像平台和元宇宙平台建立了合作伙伴关系。[2022/12/15 21:47:20]

国际清算银行负责人:央行是最适合在数字时代提供货币信任的机构:金色财经报道,国际清算银行总经理Agustín Carstens表示,中央银行是最适合在数字时代提供货币信任的机构,并将继续如此。稳定币和DeFi等数字创新是令人兴奋的发展,但如果没有必要的监督,可能会使货币体系支离破碎。仅仅依靠私人货币是不可取的。用大型科技公司的全球稳定币付款可能很方便。但这样做,用户可能会把我们的货币系统的钥匙交给主要由利润驱动的私人实体。这样的安排可能会削弱信任。

Carstens还指出,国际清算银行最近的研究认为,DeFi服务中承诺的去中心化是一种假象。区块链共识机制有集中权力的倾向,这使得少数利益相关者很容易做出重大决定。DeFi受到传统金融服务中存在的同样的脆弱性的影响,这些脆弱性包括高杠杆率、流动性错配以及与正规金融系统的联系,这可能会影响系统的稳定性。(Coindesk)[2022/1/18 8:57:01]

本次事件的根本正是出在这种架构的问题上。通过一步步分析攻击者的交易行为,我们来还原整个攻击过程的核心:

PlatON Cross联合发起人:隐私计算是未来全数字时代的公共基础设施的重要支撑:据官方消息,03月29日晚,由Gate.io主办的直播专访节目《酒局币赴》邀请到PlatON Cross联合发起人Jason直播分享近期最新发展。

直播期间Jason与Gate.io立春就隐私计算及其相关事项进行了探讨与交流。Jason表示,在隐私计算方向,PlatON主要锁定在为数据进行确权和定价这个全数字时代的核心需求,通过隐私AI来解决目前在金融、医疗、广告等多个领域对于数据共享和协同计算存在着的强烈需求。

隐私计算一定是未来全数字时代的公共基础设施的重要支撑,因为在当前时代数据已经被定义为继土地、能源、人口、粮食之后的新一代生产要素,这个基本定位支撑起了可持续的战略优先级,PlatON未来会站在这个角度来解构隐私计算的价值以及相应的“隐私经济学”。[2021/3/29 19:27:21]

声音 | 全景视觉董事长吕辰:将在数字时代更多地结合大数据、人工智能、区块链等技术:据中国新闻出版广电报消息,8月24日,北京市委宣传部(北京市版权局)版权管理处、首都版权产业联盟共同举办“版权大讲堂”活动。全景视觉董事长吕辰表示,作为基于互联网的数字版权交易平台,全景视觉拥有超过1.5亿的图片、视频版权内容,全景视觉将在与数字时代共同发展的过程中,更多地结合大数据、人工智能、区块链等技术。[2019/8/30]

本次攻击开始于Pancake的闪电贷,攻击者从Pancake中借出了大量的WBNB,然后将这些WBNB通过BurgerSwap?兑换成Burger代币。在完成以上的操作后,攻击者使用自己控制的代币(攻击合约本身)和Burger代币通过Delegate层创建了一个交易对并添加流动性,为后续攻击做准备。

在完成代币的创建和准备之后,攻击者立马通过PaltForm层的swapExactTokensForTokens函数发起了兑换,兑换路径为

接下来进行了最关键的一次操作。

由于先前攻击者在创建交易对的时候使用的是自己控制的代币,在代币兑换过程中,_innerTransferFrom函数会调用攻击者控制的代币合约,于是攻击者可以_innerTransferFrom函数中重入swapExactTokensForTokens函数。为什么攻击者要这样做呢?

通过对PlatForm层的swapExactTokensForTokens函数进行代码分析,我们不难发现,合约在调用_innerTransferFrom函数时首先计算了用户的兑换数据,然后在_innerTransferFrom函数的操作后使用预先计算的数据来转发到底层进行真正的代币兑换。从这个函数层面来看,就算攻击者重入了swapExactTokensForTokens函数,底层调用的swap函数也是独立的,咋一看并没有什么问题,但是链上的一个行为引起了慢雾安全团队的注意:

我们惊讶地发现,在重入的兑换过程中,兑换的数量竟然没有因为滑点的关系而导致兑换数量的减少。这究竟是什么原因呢?看来关键是底层的Pair合约的问题了。我们又进一步分析了底层调用的Pair合约,代码如下:

通过分析Pair的代码,我们再次惊讶地发现在swap的过程中,合约竟然没有在兑换后根据恒定乘积公式检查兑换后的数值!!也就是说,Pair合约完全依赖了PlatForm层的数据进行兑换,导致了本次事件的发生。由于Pair层本身并不做恒定乘积的检查,在重入的过程中,PlatForm层的兑换数据预先进行了计算,在_innerTransferFrom函数完成后,Pair的更新数据也没有反映到PlatForm层中,导致重入交易中的兑换产生的滑点并不影响下一次的兑换,从而造成了损失。用图来看的话大概如下:

总结

本次攻击属于BurgerSwap架构上的问题,由于Pair层完全信任PaltForm层的数据,并没有自己再做一次检查,导致攻击的发生。最近DeFi安全事件频发,针对越来越密集的DApp攻击事件,慢雾安全团队建议DApp开发者在移植其他协议的代码时,需充分了解移植协议的架构,并充分考虑移植协议和自身项目的兼容性,且需通过专业安全审计机构的审计后才上线,防止资金损失情况的发生。

攻击交易参考:

https://bscscan.com/tx/0xac8a739c1f668b13d065d56a03c37a686e0aa1c9339e79fcbc5a2d0a6311e333

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

金智博客

[0:15ms0-6:449ms