前言
北京时间2022年6月8日,知道创宇区块链安全实验室?自动数据监测工具监测到BSC链上NFT项目GYMNetwork因"PublicdepositFromOtherContract"权限控制问题被攻击,损失包括7475枚BNB,共计约216W美元,目前已将兑通过DEX换70W美元的ETH通过Celer跨链到以太坊,2000枚BNB利用BSC-Tornado进行混币,余下3000枚BNB在攻击者地址。
知道创宇区块链安全实验室?第一时间跟踪本次事件并分析。
基础信息
BadgerDAO关于“升级智能合约”的提案BIP 76已开启投票:12月11日消息,BadgerDAO表示,其论坛已上线关于“升级智能合约”的提案BIP 76。该提案旨在覆盖重要的智能合约升级,以拯救用户资金,改进暂停功能,并通过黑名单提供额外的保障。本提案不包括拟议拯救资金功能的执行和解除暂停。这些功能将通过未来的BIP解决。基于社区反馈,为了加快智能合约的重新激活,该提案将直接转向48小时快照投票。
提案称,Badger致力于在安全的情况下重新启动智能合约。考虑到时间锁的因素,一旦最终BIP决定执行拟议的拯救资金和解除暂停,在进行这些升级之前等待标准时间框架将增加至少3天的延迟。因此,该提案将智能合约升级与拯救行动的执行和解除暂停分开,以便执行决策可以遵循Badger的治理流程,同时还确保生成的治理决策能够迅速制定。[2021/12/11 7:32:26]
被攻击合约:0x0288fba0bf19072d30490a0f3c81cd9b0634258a
58COIN永续合约大户持仓情况20:00播报:截至20:00,据58COIN官方永续合约数据,大户持仓情况如下:
BTC永续合约账户中,多头平均持仓比例为19.40%、空头平均持仓比例为17.52%,多头暂时领先,领先数量(净头寸数量)为0.15万个BTC。
EOS永续合约账户中,多头平均持仓比例为16.83%、空头平均持仓比例为17.11%,空头暂时领先,领先数量(净头寸数量)为20.31万个EOS。
ETH永续合约账户中,多头平均持仓比例为19.88%、空头平均持仓比例为18.41%,多头暂时领先,领先数量(净头寸数量)为1.08万个ETH。[2020/12/5 14:08:17]
攻击者地址:0xB2C035eee03b821cBe78644E5dA8B8eaA711D2e5
公告 | ChainUP旗下金融衍生品独立品牌EXUP推出合约流动性服务:官方消息,2月17日,ChainUP旗下金融衍生品独立品牌EXUP推出合约流动性服务系统。面向市场提供专业的流动性量化、多种流动性策略、智能风控预警等产品和服务,可达到事件驱动毫秒级响应。
EXUP拥有专业的量化团队,具有丰富的量化和传统金融交易经验,且全部来自于EXUP开发团队,有丰富的衍生品系统开发设计经验,在流动性服务方面将更专业、更具优势。
EXUP是ChainUP最新推出的区块链金融衍生品独立品牌,致力于为客户提供安全、稳定、高效的区块链金融衍生品技术服务,以基于微服务的分布式系统架构,打造高稳定、高可靠的撮合引擎,从而为区块链金融生态赋能,截止目前已为全球10+国家和地区的60+企业提供服务。[2020/2/17]
攻击合约:0xcD337b920678cF35143322Ab31ab8977C3463a45、0x68b5f1635522ec0e3402b7e2446e985958777c22
推特创始人Jack Dorsey仍持有推特2.4%的股份:金色财经报道,美国证券交易委员会的一份文件显示,在推特被马斯克被收购后,推特创始人Jack Dorsey仍然拥有推特2.4%的股份。
Jack Dorsey于2021年11月离开公司,并于今年5月卸任董事会职务,曾透露过希望在离开推特后将专注于加密货币和慈善项目。此前曾公开表示:“推特应成为协议级别的公共产品,Elon Musk是我唯一信任的解决方案。”[2022/11/1 12:02:50]
tx:0xfffd3aca0f53715f4c76c4ff1417ec8e8d00928fe0dbc20c89d875a893c29d89
GymSinglePool代理合约:0xa8987285e100a8b557f06a7889f79e0064b359f2
漏洞分析
项目方在GymSinglePool合约中实现过程中对于0x0288fba0bf19072d30490a0f3c81cd9b0634258a#depositFromOtherContract函数缺少了权限控制,导致攻击者能够通过该函数调用内部_autoDeposit函数实现零消耗质押:
对于应该开放给用户的质押内部函数是_deposit函数,该函数实现了对于token的审批传入,如下图所示:
对应的_autoDeposit函数则实现了"特权"质押,即不需要转入Token进行质押。同时该函数直接暴露给了用户,函数对比如下:
攻击流程
攻击者为了防止链上MEV和抢跑机器人,将合约进行了分步部署执行,同时部署/调用了多次以完成对GymNetwork合约(0x3a0d9d7764FAE860A659eb96A500F1323b411e68)中的GYMNETToken完全抽离,以其中一笔部署调用为例:
1.部署合约后调用depositFromOtherContract实"特权"质押,对应0xfd4a2266方法:
内部调用细节如下:
2.调用0x30649e15实现对上一步特权质押的Token回撤:
3.利用0x1d111d13函数售出获取到的的GYM-Token:
重复多次"特权"质押--回撤--售出步骤,攻击者最终获取到7475枚BNB:
为了抑制抢跑,攻击者将添加质押和回撤进行了步骤分离,两个步骤均为核心操作,同时刻意提高添加部分步骤的GasPrice为15/20gwei,可见攻击者是有意为之。
溯源处置
本次攻击原因是项目方实现的特权函数权限控制不当,在攻击发现的1小时后项目方将GymSinglePool代理合约的逻辑合约进行了多次修改,为其添加了权限控制:
并在20分钟后对逻辑合约添加了紧急账户处置函数:
而对于项目方Deployer地址分析,其部署的多个GymSinglePool合约根据追踪仅在两天前部署的GymSinglePool合约中存在漏洞,4天前的合约则不存在此函数:
同时代理合约对应的逻辑合约被升级为漏洞合约的事件发生在在2days13hrsago:
攻击者的资金准备(FromTornado)则在约6小时以前,攻击者的身份也值得令人深思。
总结
虽然只是一处小的控制缺陷,却导致了数百万美元的损失。项目方的处置虽较为及时,漏洞导致的损失却难以挽回。该类型漏洞在审计过程中很容易被发现并将归纳到逻辑缺陷/不安全的外部调用,各项目方在开发和审计流程上切莫大意。
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。