前言
2022年1月18日,知道创宇区块链安全实验室?监测到BSC上Crosswise遭遇攻击,此次攻击导致协议损失87.9万美元。
攻击者仅用1个CRSStoken便获取CrosswiseMasterChef池中价值87.9万美元的692K个CRSS。实验室将对本次事件深入跟踪并进行分析。
基础信息
攻击交易哈希:
0xd02e444d0ef7ff063e3c2cecceba67eae832acf3f9cf817733af9139145f479b
攻击者地址:
0x748346113B6d61870Aa0961C6D3FB38742fc5089
微软浏览器Microsoft Edge现已支持欧易插件钱包:据欧易OKX官方消息,微软浏览器Microsoft Edge现已支持欧易Web3插件钱包,是为数不多Microsoft Edge支持的Web3插件钱包。用户可通过Microsoft Edge安装、使用欧易Web3插件钱包。
上周,微软完成了对一家专注Web3游戏公司的投资。微软游戏公司首席执行官Phil Spencer表明公司打算扩大对web3的参与。[2022/11/17 13:17:01]
攻击合约:
0x530B338261F8686e49403D1b5264E7a1E169F06b
MasterChef:
0x70873211CB64c1D4EC027Ea63A399A7d07c4085B
消息人士:FTX、币安和Cross Tower正竞购Voyager,Cross Tower胜算较大:9月27日消息,据知情人士透露,根据前投资银行家和天使投资人 Simon Dixon 公布的细节,加密货币交易所 FTX、币安和 CrossTower 正在竞标收购 Voyager Digital 的破产资产,并各自提出了收购条款和条件。
FTX 和币安均提议为 Voyager 的资产提供约 5000 万美元的现金,Voyager 客户将获得按比例分配的加密资产,并完全过渡到 FTX 和币安平台;CrossTower 提议保留现有的 Voyager 平台和应用程序,现有客户无需过渡到新平台,客户还将按比例获得资产份额。CrossTower 的收购计划还将使该交易所与 Voyager 客户分享其数年的收入。
消息人士还透露,监管可能在谁赢得拍卖方面发挥重要作用。英国金融行为监管局 (FCA) 最近警告 FTX 未经授权经营。同时,在美国,外国投资委员会可能不会允许币安收购 Voyager。另据此前报道,币安和 FTX 各出价 5000 万美元竞购 Voyager 资产被拒。(Cointelegraph)[2022/9/27 22:31:59]
CrosswiseRouter:
MicroStrategy CEO:只要比特币被视为资产就不会被政府打压:MicroStrategy首席执行官Michael Saylor表示,只要比特币被视为一种资产,而不是一种货币,政府和央行就不会干预、打压、消除或取缔它。Saylor将加密空间进一步划分为加密资产和加密应用,并声称比特币是前加密资产的领导者,而以太坊是加密应用的领导者。Saylor称,没有任何资产可以与比特币相提并论,以太坊是一个完全不同的类别。(AMBcrypto)[2021/5/8 21:36:05]
0x8B6e0Aa1E9363765Ea106fa42Fc665C691443b63
CRSS:
0x99FEFBC5cA74cc740395D65D384EDD52Cb3088Bb
CrossTower将于月底推出比特币基金:金色财经报道,加密货币资本市场公司CrossTower将于本月底推出一只对冲基金,以与灰度比特币信托基金(GBTC)和其他比特币基金竞争以获得合格投资者。CrossTower的比特币基金不会在二级市场进行交易,但正设法在管理费和流动性上与其他比特币基金竞争。CrossTower首席执行官Kristin Boggiano表示,该基金收取60个基点的管理费(0.6%),而GBTC则收取2%的管理费。该基金以比特币的资产净值(NAV)交易,没有锁定期,可以让投资者在一天之内赎回。[2021/2/4 18:50:12]
攻击核心
此次攻击的核心在于,Crosswise中的MasterChef合约Owner地址设置即transferOwnership函数能够被攻击者绕过,使得攻击者能够成为新的Owner并对MasterChef池子进行攻击利用。我们将本次攻击过程分为两个阶段进行分析:获取Owner权限攻击和MasterChef池攻击。
获取Owner权限攻击
1.由于在MasterChef合约中setTrustedForwarder?函数为公开可见性且未作权限设置,攻击者先将自己的地址设置为TrustedForwarde地址。
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权限更改能被绕过。知道创宇区块链安全实验室?在此提醒,任何有关合约权限问题的操作都需要慎重考虑,合约审计、风控措施、应急计划等都有必要切实落实。
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。