By:慢雾安全团队
据慢雾区消息,2021年05月28日,币安智能链(BSC)DeFi项目BurgerSwap被黑,损失达330万美元。慢雾安全团队第一时间介入分析,并将结果分享如下:
攻击细节分析
BurgerSwap是一个仿UniswapAMM项目,但是和Uniswap架构有所区别。BurgerSwap架构总体分成。其中Delegate层管理了所有的Pair的信息,并负责创建lpPlatForm层。然后lpPlatForm层再往下创建对应的Pair合约。在整个架构中,lpPlatForm层充当了Uniswap中Router的角色,负责将计算交易数据和要兑换的代币转发到Pair合约中,完成兑换。
本次事件的根本正是出在这种架构的问题上。通过一步步分析攻击者的交易行为,我们来还原整个攻击过程的核心:
币安将上线IDEX1-20倍U本位永续合约:5月2日消息,币安将于2023年05月03日20:00(东八区时间)上线IDEX1-20倍U本位永续合约。IDEX是将高性能订单簿与AMM相结合的混合流动性DEX。[2023/5/2 14:38:19]
本次攻击开始于Pancake的闪电贷,攻击者从Pancake中借出了大量的WBNB,然后将这些WBNB通过BurgerSwap兑换成Burger代币。在完成以上的操作后,攻击者使用自己控制的代币(攻击合约本身)和Burger代币通过Delegate层创建了一个交易对并添加流动性,为后续攻击做准备。
在完成代币的创建和准备之后,攻击者立马通过PaltForm层的swapExactTokensForTokens函数发起了兑换,兑换路径为
接下来进行了最关键的一次操作。
以太坊质押基础设施SSV.Network与Meta Pool达成合作:金色财经报道,据官方推特,去中心化以太坊质押基础设施SSV.Network宣布与Meta Pool达成合作,Meta Pool是基于NEAR生态的流动性质押解决方案。SSV.Network是基于DVT技术的去中心化验证器基础设施。[2023/4/23 14:21:54]
由于先前攻击者在创建交易对的时候使用的是自己控制的代币,在代币兑换过程中,_innerTransferFrom函数会调用攻击者控制的代币合约,于是攻击者可以_innerTransferFrom函数中重入swapExactTokensForTokens函数。为什么攻击者要这样做呢?
通过对PlatForm层的swapExactTokensForTokens函数进行代码分析,我们不难发现,合约在调用_innerTransferFrom函数时首先计算了用户的兑换数据,然后在_innerTransferFrom函数的操作后使用预先计算的数据来转发到底层进行真正的代币兑换。从这个函数层面来看,就算攻击者重入了swapExactTokensForTokens函数,底层调用的swap函数也是独立的,咋一看并没有什么问题,但是链上的一个行为引起了慢雾安全团队的注意:
Dininho项目Discord服务器遭到攻击:金色财经消息,据CertiK监测,Dininho项目Discord服务器遭到攻击。请社区用户不要点击、铸造或批准任何交易。[2022/8/23 12:43:56]
我们惊讶地发现,在重入的兑换过程中,兑换的数量竟然没有因为滑点的关系而导致兑换数量的减少。这究竟是什么原因呢?看来关键是底层的Pair合约的问题了。我们又进一步分析了底层调用的Pair合约,代码如下:
通过分析Pair的代码,我们再次惊讶地发现在swap的过程中,合约竟然没有在兑换后根据恒定乘积公式检查兑换后的数值!!也就是说,Pair合约完全依赖了PlatForm层的数据进行兑换,导致了本次事件的发生。由于Pair层本身并不做恒定乘积的检查,在重入的过程中,PlatForm层的兑换数据预先进行了计算,在_innerTransferFrom函数完成后,Pair的更新数据也没有反映到PlatForm层中,导致重入交易中的兑换产生的滑点并不影响下一次的兑换,从而造成了损失。用图来看的话大概如下:
OpenLeverage 已部署代币至以太坊:金色财经消息,借贷与保证金交易协议OpenLeverage现已将代币OLE部署到以太坊区块链上,随后会开放代币转账。
OLE初始总供应量为10亿枚,其中45%转至DAO国库,用于社区激励,包括但不限于追溯奖励、交易、借贷、xOLE持有者奖励、活动等;9.6%分配至生态系统发展金库;28.4%分配给OpenLeverage基金会之前的投资者;17%分配给给创始人、员工和顾问。关于追溯奖励,OpenLeverage已于今日完成快照,7.35%的OLE(7350万枚代币)已分配给历史出借人、交易用户和NFT持有者。(Medium)[2022/7/1 1:43:00]
总结
本次攻击属于BurgerSwap架构上的问题,由于Pair层完全信任PaltForm层的数据,并没有自己再做一次检查,导致攻击的发生。最近DeFi安全事件频发,针对越来越密集的DApp攻击事件,慢雾安全团队建议DApp开发者在移植其他协议的代码时,需充分了解移植协议的架构,并充分考虑移植协议和自身项目的兼容性,且需通过专业安全审计机构的审计后才上线,防止资金损失情况的发生。
金色午报 | 5月23日午间重要动态一览:7:00-12:00关键词:Otherdeed、广州天河、BSN
1.被标记为Alameda FTX Deposit的地址向FTX转入6300万USDC和1500万USDT;
2.欧洲经纪商FlatexDegiro与Boerse Stuttgart提供加密交易途径;
3.BAYC和MAYC持有者的Otherdeed今日停止认领,拟7月16日为持有者带来技术演示;
4.Otherdeed市值突破10亿美元;
5.南非储备银行着眼于数字兰特以降低跨境支付成本;
6.广州天河成立超200亿元基金,布局元宇宙创新生态;
7.知情人士:BSN计划8月份在海外推出开源国际版本“BSN Spartan Network”;
8.元宇宙应用BUD完成3680万美元B轮融资,红杉资本印度领投;[2022/5/23 3:35:03]
攻击交易参考:
https://bscscan.com/tx/0xac8a739c1f668b13d065d56a03c37a686e0aa1c9339e79fcbc5a2d0a6311e333
往期回顾
代币闪崩,差点归零-PancakeBunny被黑简析
慢雾科技xFireEye,赋能区块链安全
慢雾科技与虎符智能链HSC达成战略合作
CoinEx入驻慢雾区,发布「安全漏洞与威胁情报赏金计划」
开心做聚合,无奈被攻击——Rari被黑事故分析
慢雾导航
慢雾科技官网
https://www.slowmist.com/
慢雾区官网
https://slowmist.io/
慢雾GitHub
https://github.com/slowmist
Telegram
https://t.me/slowmistteam
https://twitter.com/@slowmist_team
Medium
https://medium.com/@slowmist
币乎
https://bihu.com/people/586104
知识星球
https://t.zsxq.com/Q3zNvvF
火星号
http://t.cn/AiRkv4Gz
链闻号
https://www.chainnews.com/u/958260692213.htm
免责声明:作为区块链信息平台,本站所发布文章仅代表作者个人观点,与链闻ChainNews立场无关。文章内的信息、意见等均仅供参考,并非作为或被视为实际投资建议。
本文来源于非小号媒体平台:
慢雾科技
现已在非小号资讯平台发布68篇作品,
非小号开放平台欢迎币圈作者入驻
入驻指南:
/apply_guide/
本文网址:
/news/10021896.html
免责声明:
1.资讯内容不构成投资建议,投资者应独立决策并自行承担风险
2.本文版权归属原作所有,仅代表作者本人观点,不代表非小号的观点或立场
上一篇:
1700是以太坊主要的压力位、短期可以突破吗?
亲爱的用户: HomiEx将于2021年5月27日20:00(UTC8)上线GTC/USDT交易对.
1900/1/1 0:00:00在人民币头寸退出后,比特币等加密资产交易价格走势的看多看空,一是看监管风险,二是看市场反应。关键是美元头寸的常备量。文丨浙江现代数字金融科技研究院理事长周子衡近期比特币价格波动,引发不少讨论,其中比特币的银行头寸问题,也应该得到重视.
1900/1/1 0:00:00根据SUN官方公告,,SUN平台将于2021年5月26日开始启动SUN代币拆分和兑换计划。Gate.io将会支持此次资产拆分,并为用户提供兑换服务。平台内的用户无需进行任何操作即可完成兑换.
1900/1/1 0:00:00尊敬的用户: BiKi平台即将上线Solana(SOL)并开放SOL/USDT交易对,并支持Solana网络的USDC充提.
1900/1/1 0:00:00尊敬的用户: 以下是Swarm节点售卖免责声明:1、您已对购买Swarm节点的风险、产出和收益有充分了解,自愿承担WBF公开售卖Swarm节点的购买费用以及购买Swarm节点后运行Swarm节点所产生的技术服务费.
1900/1/1 0:00:00Gate.ioTOTM充值赛,赢$10,000美元大奖活动已圆满结束,根据活动规则,我们已为符合规则的用户发放了活动奖励。用户可进入“钱包—账单明细”查询奖励发放情况。活动详情及规则请点击查看。Gate.io对此次活动保有最终解释权.
1900/1/1 0:00:00