前言
2022年1月18日,知道创宇区块链安全实验室监测到BSC上Crosswise遭遇攻击,此次攻击导致协议损失87.9万美元。
攻击者仅用1个CRSStoken便获取CrosswiseMasterChef池中价值87.9万美元的692K个CRSS。实验室将对本次事件深入跟踪并进行分析。
基础信息
攻击交易哈希:
0xd02e444d0ef7ff063e3c2cecceba67eae832acf3f9cf817733af9139145f479b
攻击者地址:
0x748346113B6d61870Aa0961C6D3FB38742fc5089
攻击合约:
0x530B338261F8686e49403D1b5264E7a1E169F06b
Andre Cronje:Fantom链上费用销毁的FTM已超1000万枚:金色财经报道,Fantom创始人Andre Cronje(AC)在社交媒体发布了Fantom项目更新,主要内容包括:1、Gas货币化(Fantom将向符合条件的dApp补贴15%的Gas费用);2、Fantom生态中16个活跃项目目前已赚取了2万枚FTM;3、生态金库通过孵化项目赚取的Gas费用已超过50万枚FTM,目前任何人都可以申请且没有限制;4、费用销毁FTM已超1000万枚;5、Fantom本届黑客松吸引了855支队伍参加;6、通过治理,将验证者最低质押量减少至5万枚FTM;7、一个以太坊客户端团队转移到Fantom并构建了一个新的超优化客户端,早期测试已经显示吞吐量提高40%。
AC透露,Fantom即将发布2个重大里程碑,一个是Carmen,支持EVM优化的数据库,将主网存储减少98%,总体吞吐量提高9.8倍(读和写);另一个是Tosca,总体增益比当前EVM架构提高50%,吞吐量提高4倍。[2023/6/25 21:57:53]
MasterChef:
汇丰在线交易平台已禁止购买MicroStrategy股票:据cointelegraph消息,汇丰客户不再可以在其在线交易平台HSBC InvestDirect或HIDC上购买MicroStrategy股票(MSTR),同时,汇丰已指示已经拥有MicroStrategy股票的用户不要购买额外的股票。将MSTR列入黑名单只是汇丰银行最近反加密行动中的最新动作,但是在HIDC交易目录中仍列出了进行比特币大量投资的其他公司,例如Tesla,Hut 8 Mining和Square。[2021/4/10 20:03:42]
0x70873211CB64c1D4EC027Ea63A399A7d07c4085B
CrosswiseRouter:
0x8B6e0Aa1E9363765Ea106fa42Fc665C691443b63
Microstrategy将召开会议,对大公司进行比特币教育:Macrostrategy将在2月3-4日召开一个线上会议,教育大公司关于投资比特币的好处,免费分享比特币战略战术,以及为公司带来增长,为股东带来收益。[2021/1/17 16:23:05]
CRSS:
0x99FEFBC5cA74cc740395D65D384EDD52Cb3088Bb
攻击核心
此次攻击的核心在于,Crosswise中的MasterChef合约Owner地址设置即transferOwnership函数能够被攻击者绕过,使得攻击者能够成为新的Owner并对MasterChef池子进行攻击利用。我们将本次攻击过程分为两个阶段进行分析:获取Owner权限攻击和MasterChef池攻击。
MicroStrategy比特币价值6.5亿美元,3个月内增长50%:今天,比特币自2018年1月以来首次突破17000美元大关。MicroStrategy在今年8月至9月期间向比特币投资了4.25亿美元。现在,它的比特币价值6.5亿美元,3个月内增长53%。此外,去年10月,Square向比特币投资5000万美元,其比特币价值已升至8000万美元。(Decrypt)[2020/11/17 21:05:47]
获取Owner权限攻击
1.由于在MasterChef合约中setTrustedForwarder函数为公开可见性且未作权限设置,攻击者先将自己的地址设置为TrustedForwarde地址。
BBKX平台已于今日14时上线FOR、ANT、AUX、CRV、SRM、CRO:据BBKX平台官方公告披露,平台已于2020年8月19日14:50(UTC+8)上FOR/USDT、ANT/USDT、AUX/ETH、CRV/USDT、SRM/USDT、CRO/USDT,并开放交易对。
BBKX成立于2019年,致力于打造综合性交易平台,现已集合币币交易、ETF杠杆、量化交易、永续合约、混合合约、云算力等多项功能,已获得节点资本与链上基金联合战略投资。[2020/8/19]
2.Crosswisefi项目方对MasterChef的_msgSender()函数并未采取openzepplin的标准写法且存在漏洞,导致攻击者能够通过构造恶意的calldata实现绕过onlyOwner限制完成合约Owner的获取。
下图为攻击者绕过onlyOwner权限构造的恶意payload:
MasterChef池攻击
1.攻击者在CrosswiseRouter中用0.01个WBNB兑换出3.71个CRSS
2.攻击者调用deposit将1个CRSS质押到CrosswiseMasterChef
3.由于上一阶段攻击者已经获取到MasterChef的Owner权限,此时攻击者调用set函数对MasterChef的pid为0的池子重新部署了一个未开源的策略合约:0xccddce9f0e241a5ea0e76465c59e9f0c41727003
4.攻击者调用MasterChef的withdraw函数从池子中获取692K的CRSS
5.最后攻击者把692K的CRSS通过CrosswiseRouter合约swap兑换出547个BNB完成攻击,获利超87.9万美元。
策略合约
猜想
由于攻击者部署的策略合约并未开源,我们只能反向推导猜想策略合约的主要逻辑:
1.根据下图第18行代码可以推断出合约中lockedAmount应该是一个极大值才能支撑攻击者692k的代币转出;又根据第7-11行可以推导出攻击者部署的strategy合约的LockeTotal()函数返回值极大、sharesTotal()返回值极小。
2.在上图代码23行当_amount>0时,会先计算出user的shareRemoved,然后在执行user.amount=user.amount.sub(shareRemoved);,此时若shareRemoved大于user.amount则代码执行不会通过,可以推导出26行的shareRemoved值很小,又shareRemoved是调用攻击者部署strategy合约中withdraw获取,所以此时的strategy合约中withdraw的返回值会很小,小于之前质押的1个CRSS数量;再结合链上数据可推导攻击者部署strategy合约中的withdraw调用返回值为0。
反编译
为了证实我们的猜想是否正确,我们将攻击者部署的策略合约进行反编译。
反编译后我们可以发现存在一个极大值和一个较小值的常量,即对应猜想1中LockeTotal和sharesTotal值,猜想1正确。
对于猜想2,经过反编译后我们可以看到策略合约的withdraw最后的返回值为0,猜想2正确
总结
这次攻击产生的主要原因是项目方使用错误的方法去获取msgSender,导致合约的Owner权限更改能被绕过。知道创宇区块链安全实验室在此提醒,任何有关合约权限问题的操作都需要慎重考虑,合约审计、风控措施、应急计划等都有必要切实落实。
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。