“一两拨千金”:Crosswise攻击事件分析_虚拟币交易所平台,数字货币,NFT

admin 阅读:33 2024-04-01 13:23:32 评论:0
美化布局示例

欧易(OKX)最新版本

【遇到注册下载问题请加文章最下面的客服微信】永久享受返佣20%手续费!

APP下载   全球官网 大陆官网

币安(Binance)最新版本

币安交易所app【遇到注册下载问题请加文章最下面的客服微信】永久享受返佣20%手续费!

APP下载   官网地址

火币HTX最新版本

火币老牌交易所【遇到注册下载问题请加文章最下面的客服微信】永久享受返佣20%手续费!

APP下载   官网地址

前言


foreword 比特币今日价格行情网_okx交易所app_永续合约_比特币怎么买卖交易_虚拟币交易所平台

2022 年 1 月 18 日,知道创宇区块链安全实验室监测到 BSC 上 Crosswise 遭遇攻击,此次攻击导致协议损失 87.9 万美元。

攻击者仅用 1 个 CRSS token 便获取 Crosswise MasterChef 池中价值 87.9 万美元的 692K 个 CRSS。实验室将对本次事件深入跟踪并进行分析。

基础信息

攻击交易哈希:

0xd02e444d0ef7ff063e3c2cecceba67eae832acf3f9cf817733af9139145f479b

攻击者地址:

0x748346113B6d61870Aa0961C6D3FB38742fc5089

攻击合约:

0x530B338261F8686e49403D1b5264E7a1E169F06b

MasterChef:

0x70873211CB64c1D4EC027Ea63A399A7d07c4085B

CrosswiseRouter:

0x8B6e0Aa1E9363765Ea106fa42Fc665C691443b63

CRSS:

0x99FEFBC5cA74cc740395D65D384EDD52Cb3088Bb

攻击核心

此次攻击的核心在于,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 质押到 Crosswise MasterChef

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 权限更改能被绕过。

知道创宇区块链安全实验室 在此提醒,任何有关合约权限问题的操作都需要慎重考虑,合约审计、风控措施、应急计划等都有必要切实落实。

查看更多

文字格式和图片示例

注册有任何问题请添加 微信:MVIP619 拉你进入群

弹窗与图片大小一致 文章转载注明 网址:https://netpsp.com/?id=43286

美化布局示例

欧易(OKX)最新版本

【遇到注册下载问题请加文章最下面的客服微信】永久享受返佣20%手续费!

APP下载   全球官网 大陆官网

币安(Binance)最新版本

币安交易所app【遇到注册下载问题请加文章最下面的客服微信】永久享受返佣20%手续费!

APP下载   官网地址

火币HTX最新版本

火币老牌交易所【遇到注册下载问题请加文章最下面的客服微信】永久享受返佣20%手续费!

APP下载   官网地址
可以去百度分享获取分享代码输入这里。
声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

发表评论
平台列表
美化布局示例

欧易(OKX)

  全球官网 大陆官网

币安(Binance)

  官网

火币(HTX)

  官网

Gate.io

  官网

Bitget

  官网

deepcoin

  官网
关注我们

若遇到问题,加微信客服---清歌

搜索
排行榜
扫一扫,加我为微信好友加我为微信好友