By:yudan@慢雾安全团队
据慢雾区消息,2021年05月28日,币安智能链(BSC)DeFi项目BurgerSwap被黑,损失达330万美元。慢雾安全团队第一时间介入分析,并将结果分享如下:攻击细节分析
BurgerSwap是一个仿UniswapAMM项目,但是和Uniswap架构有所区别。BurgerSwap架构总体分成。其中Delegate层管理了所有的Pair的信息,并负责创建lpPlatForm层。然后lpPlatForm层再往下创建对应的Pair合约。在整个架构中,lpPlatForm层充当了Uniswap中Router的角色,负责将计算交易数据和要兑换的代币转发到Pair合约中,完成兑换。本次事件的根本正是出在这种架构的问题上。通过一步步分析攻击者的交易行为,我们来还原整个攻击过程的核心:
GOFi投资者起诉韩国金管局主席等人,指控他们拖延Gopax经营者变更程序:6月29日消息,韩国加密交易所Gopax旗下理财产品GOFi的投资者和法定代表人已向该国金融服务委员会主席以及金融监管局主席以及金融服务委员会金融情报室(FIU)院长提起诉讼,指控其迟迟未接受Gopax经营者变更报告,导致GOFi无法重新开放提款,并要求他们赔偿5000万韩元的损失。
3月7日,Gopax向金融情报机构提交了一份关于注册高管和业务运营商变更的报告,在完成该变更后,币安才能完成对Gopax的收购。诉讼称,根据现行法律,当局必须在45天内通报变更报告受理结果,但当局并未这样做,投资者因此蒙受损失,他们“正在审查超出依法合法审查范围的其他部分”。[2023/6/29 22:08:10]
以太坊NFT FOMO情绪下滑至2021年以来最低水平:金色财经报道,据RoundtableSpace发推表示,“上周买卖以太坊NFT的活跃交易者数量下滑至约49,000人,为2021年以来的最低水平。以太坊NFT底价下跌,加上市场波动加剧,抑制了普通交易员通常的购买紧迫感,即FOMO情绪。”[2023/5/19 15:13:44]
本次攻击开始于Pancake的闪电贷,攻击者从Pancake中借出了大量的WBNB,然后将这些WBNB通过BurgerSwap兑换成Burger代币。在完成以上的操作后,攻击者使用自己控制的代币(攻击合约本身)和Burger代币通过Delegate层创建了一个交易对并添加流动性,为后续攻击做准备。
比特币矿企Genesis Digital已锁定708MW电力,以进行比特币采矿:金色财经报道,比特币矿企Genesis Digital Assets在周三的一份新闻稿中称,今年前六个月,该公司锁定了708兆瓦(MW)的电力,以进行比特币采矿。
这些电力容量分布在德克萨斯州西部以及北卡罗来纳州和南卡罗来纳州的站点。这家总部位于纽约的公司没有具体说明不同站点处于什么开发阶段或何时准备好开始运营。据悉,比特币挖矿站点可能需要几个月才能完成。
根据该公司的网站,该公司已经在瑞典签订了100MW的合同,在德克萨斯州签订了300MW的合同,在南卡罗来纳州签订了金额未透露的合同。(CoinDesk)[2022/8/11 12:19:10]
在完成代币的创建和准备之后,攻击者立马通过PaltForm层的swapExactTokensForTokens函数发起了兑换,兑换路径为
Messari:以太坊合并引发的ETC价格反弹不会持续:金色财经消息,Messari分析师表示,以太坊合并叙事不会推动以太坊经典(ETC)的持续上涨,ETC可能会在合并前几天飙升,但它没有长期上涨动力。Messari表示,以太坊挖矿目前占图形处理单元(GPU)挖矿收入的97%,每日收入为2400万美元。而以太坊合并后,矿工将被迫出售他们的设备或改用ETC挖矿,目前ETC占GPU挖矿收入的2%,每日净收入约为700,000美元。这种盈利能力的巨大差距意味着,即使“有意义的部分”矿工迁移到ETC,挖矿难度也会急剧增加,并使许多矿工无利可图。
根据Messari的说法,以太坊经典的活跃地址数量不到Cardano的一半,该网络目前的发展水平不到以太坊和Cardano的十分之一,自2018年以来交易量没有出现有意义的增长。分析师称:“归根结底,价格应该与网络使用和潜在的经济活动有一些基本的联系,不幸的是,对于ETC持有者来说,两者都没有。”(Coindesk)[2022/8/4 2:58:09]
Cronos 上 DeFi 协议 MM.Finance 遭到前端攻击,损失超 200 万美元:5月5日消息,Cronos 上 DeFi 协议 MM.Finance 遭到前端攻击,黑客利用 DNS 漏洞从用户那里窃取超过 200 万美元的 CRO 代币。被盗资金通过 Tornado Cash 混币后转移到 OKX。MM.Finance 已经通过链上数据整理了在攻击中损失资金的地址,并表示将向用户赔偿超过 200 万美元。[2022/5/5 2:52:57]
接下来进行了最关键的一次操作。由于先前攻击者在创建交易对的时候使用的是自己控制的代币,在代币兑换过程中,_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
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。