前言
北京时间2022年6月8日,知道创宇区块链安全实验室自动数据监测工具监测到BSC链上NFT项目GYMNetwork因"PublicdepositFromOtherContract"权限控制问题被攻击,损失包括7475枚BNB,共计约216W美元,目前已将兑通过DEX换70W美元的ETH通过Celer跨链到以太坊,2000枚BNB利用BSC-Tornado进行混币,余下3000枚BNB在攻击者地址。
知道创宇区块链安全实验室第一时间跟踪本次事件并分析。
基础信息
被攻击合约:0x0288fba0bf19072d30490a0f3c81cd9b0634258a
波场TRON生态首个RWA产品stUSDT质押总量已超过4亿USDT:据官方消息,据官网数据显示,stUSDT质押总量已超过4亿USDT。截至目前,stUSDT产品APY高达4.22%。
据悉,stUSDT是波场TRON生态中首个RWA(真实世界资产)赛道产品,于7月3日正式上线,现已通过去中心化平台JustLend运行。stUSDT平台致力于通过智能合约在个人与机构投资者、加密世界与现实世界之间架设桥梁,提供面向所有人的更公平的RWA投资渠道。[2023/7/21 11:08:39]
攻击者地址:0xB2C035eee03b821cBe78644E5dA8B8eaA711D2e5
攻击合约:0xcD337b920678cF35143322Ab31ab8977C3463a45、0x68b5f1635522ec0e3402b7e2446e985958777c22
孙宇晨:JUST NFT基金拍下的NFT作品都将以TRC-721协议发布在波场TRON网络上:据最新消息,波场TRON创始人兼BitTorrent CEO孙宇晨正在火星财经进行视频直播,解析NFT行业发展机遇,他在直播中表示:“基于对未来NFT发展的极度看好以及波场TRON公链进军NFT的战略方向,我们成立了JUST NFT基金,初衷是希望搭建全球顶级艺术家与区块链的桥梁,支持加密世界原生NFT艺术家的成长。
JUST NFT基金拍下的NFT作品都将以TRC-721协议发布在波场TRON网络上,不仅美国著名女演员、模特和录音艺术家林赛·罗韩等名流选择在波场发布NFT作品,也有越来越多的项目将会陆续与波场TRON开展深度战略合作。关于NFT+DeFi,关于NFT的所有潜力机会,我们都不会错过,波场TRON上有许多令人兴奋的想法正在涌现,请大家持续关注波场TRON和JUST NFT基金。”[2021/4/21 20:44:38]
tx:0xfffd3aca0f53715f4c76c4ff1417ec8e8d00928fe0dbc20c89d875a893c29d89
波场TRON总账户数突破1800万:1月3日,根据TRONSCAN波场区块链浏览器最新数据显示,波场TRON总账户数达到18,070,546,突破1800万。波场TRON各项数据稳中前进,波场生态逐渐强大的同时,也将迎来更多交易量。[2021/1/3 16:19:53]
GymSinglePool代理合约:0xa8987285e100a8b557f06a7889f79e0064b359f2
漏洞分析
项目方在GymSinglePool合约中实现过程中对于0x0288fba0bf19072d30490a0f3c81cd9b0634258a#depositFromOtherContract函数缺少了权限控制,导致攻击者能够通过该函数调用内部_autoDeposit函数实现零消耗质押:
波场TRON正式启用顶级单字母域名t.network:据最新消息显示,2020年7月7日,波场TRON正式启用顶级单字母域名t.network。字母“t”代表波场“TRON”的首字母缩写,目前访问域名t.network页面内容已与波场TRON官网原域名tron.network保持一致。
对此,波场TRON创始人孙宇晨表示:“一个小小的域名,它可能成为个人的收藏品,也可能成就各种优质投资标的。但显然,域名的真正意义更在于塑造企业的品牌资产和商业价值上面。波场TRON4.0时代已经呼啸而至,此次顶级单字母域名的加入,让本就举足轻重的TRONZ匿名协议、新二层共识机制、TICP跨链、企业级一键发链这四项重磅级特性下的波场TRON网络,更加意义非凡。”[2020/7/7]
波场TRON总账户数突破490万:3月20日,根据TRONSCAN波场区块链浏览器最新数据显示,波场TRON总账户数达到4916308,突破490万。[2020/3/20]
对于应该开放给用户的质押内部函数是_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小时以前,攻击者的身份也值得令人深思。
总结
虽然只是一处小的控制缺陷,却导致了数百万美元的损失。项目方的处置虽较为及时,漏洞导致的损失却难以挽回。该类型漏洞在审计过程中很容易被发现并将归纳到逻辑缺陷/不安全的外部调用,各项目方在开发和审计流程上切莫大意。
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。