By:yudan@慢雾安全团队
据慢雾区消息,2021年05月28日,币安智能链(BSC)DeFi项目BurgerSwap被黑,损失达330万美元。慢雾安全团队第一时间介入分析,并将结果分享如下:
攻击细节分析
BurgerSwap是一个仿UniswapAMM项目,但是和Uniswap架构有所区别。BurgerSwap架构总体分成。其中Delegate层管理了所有的Pair的信息,并负责创建lpPlatForm层。然后lpPlatForm层再往下创建对应的Pair合约。在整个架构中,lpPlatForm层充当了Uniswap中Router的角色,负责将计算交易数据和要兑换的代币转发到Pair合约中,完成兑换。
Web3空间计算公司Rypplzz完成300万美元pre-seed轮融资,Deal Box Ventures等参投:金色财经报道,Web3空间计算公司Rypplzz Inc.宣布完成300万美元pre-seed轮融资,Deal Box Ventures、Fulcrom Investing和Innovative Venture Partners参投。Rypplzz拥有获得专利的地理空间测绘软件,该软件可以创建“智能”空域,使数字文件能够通过增强现实、虚拟现实和Web3技术进行编程,继而能让广告商在元宇宙等领域里应用。Deal Box Ventures是资本市场咨询公司Deal Box于今年二月推出的投资机构,将向新兴增长领域、房地产、FinTech、FunTech和社会影响五个方面的Web3技术公司投资1.25亿美元。(labusinessjournal)[2023/7/3 22:15:32]
Filecoin VM已部署总计2500个智能合约,已创建9.1万个钱包:金色财经报道,Filecoin Network发文称,自3月14日上线以来,Filecoin VM已部署总计2500个智能合约,已创建9.1万个钱包,每日发送9.32万枚FIL,已部署1210个独立智能合约,已从FEVM地址发送283万枚FIL。此外,Filecoin表示,2023年下半年将优先考虑FVMDApp用户以及使用FVM的开发者体验。团队计划专注于小型存储交易,推动Filecoin与FVM实现存储民主化,允许围绕个人用户上传的数据构建DApp和DAO。Filecoin还在构建一个分布式聚合标准,允许任何人为FVM创建“数据投递箱”,以实现无信任聚合并通过FVM在链上进行管理。未来,Filecoin还将推出分布式计算、数据市场以及用LLM和生成式AI构建的DAO。[2023/6/30 22:10:34]
本次事件的根本正是出在这种架构的问题上。通过一步步分析攻击者的交易行为,我们来还原整个攻击过程的核心:
波场TRON账户总数突破1.6亿:据官方消息,2023年5月16日,TRONSCAN数据显示,波场TRON账户总数达到160,117,108,正式突破1.6亿。波场TRON各项数据稳中前进,波场生态逐渐强大的同时,也将迎来更多交易量。[2023/5/16 15:05:39]
本次攻击开始于Pancake的闪电贷,攻击者从Pancake中借出了大量的WBNB,然后将这些WBNB通过BurgerSwap?兑换成Burger代币。在完成以上的操作后,攻击者使用自己控制的代币(攻击合约本身)和Burger代币通过Delegate层创建了一个交易对并添加流动性,为后续攻击做准备。
末日博士:美国的麻烦将比1970年代更大 有人却还在痴心妄想:金色财经报道,知名经济学家“末日博士”鲁比尼表示,利率上升和沉重债务负担令美国面临严重衰退,那些预计经济只是小幅滑坡的人“纯属痴心妄想”。鲁比尼称,现在的情况与1970年代不同,当时尽管经济滞胀,但负债率处于低位。而自08年金融危机以来,美国的债务激增,紧随其后的是信贷危机和需求冲击导致的低通胀或通缩。这一次,美国遭遇的是滞胀环境下总供给负面冲击和处于历史高位的负债比。在过去的两次衰退中,美国实施了大规模的货币和财政宽松政策。这一次美国却在收紧政策,缺乏财政腾挪空间。[2022/7/26 2:37:23]
美国参议员:加密货币监管权应交给商品期货委员会:6月8日消息,美国参议员周二公布一份法案,它有可能为加密货币设定新规则,并将监管权交给商品期货委员会(CFTC)。议员们认为,在监管加密货币时,CFTC应该发挥更重要作用,而不是SEC,因为加密货币更像商品而非证券。对于加密货币来说,CFTC的监管似乎更友好一些。
还有几个月美国将会进行中期选举,在本届国会手中该法案不太可能成为法律,但其框架可能会是一个争论的起点,争论的焦点是加密货币市场由谁监管更好。参议员宣称法案的目标是为加密货币市场带来稳定性和清晰度并保护客户。按照新法案的要求,稳定币发行者须持有与所有流通稳定币相等的高流动性资产,而且还要公开披露所持资产。[2022/6/8 4:09:38]
在完成代币的创建和准备之后,攻击者立马通过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
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。