IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 区块链 -> 零时科技 || Rabby Swap合约遭受攻击事件详解 -> 正文阅读

[区块链]零时科技 || Rabby Swap合约遭受攻击事件详解

?

0x1 背景

2022年10月12日,Rabby Swap合约中存在疑似任意用户资产转移漏洞。Rabby Swap官方表示,如果有使用,请撤销所有链上所有现有的 Rabby Swap 批准。对于没有使用过 Swap 的人来说,钱包安全且不受影响。零时科技安全团队及时对该事件进行分析。

0x2 攻击交易信息

攻击者地址:

0xb687550842a24D7FBC6Aad238fd7E0687eD59d55

攻击者合约:

0x9682f31b3f572988f93c2b8382586ca26a866475

Rabby Swap合约(漏洞合约未开源):

0x6eb211caf6d304a76efe37d9abdfaddc2d4363d1

攻击交易之一:

0x366df0c20e00666749b16ae00475b3c41834dc659ebb29e059aa9bffa892c038

受害者地址之一:

0x0753cfbc797abfce05abaacbb1e6ae032feb5f1d

授权被盗HOP Token 代币地址:

0xc5102fE9359FD9a28f877a67E36B0F050d81a3CC

0x3 攻击步骤

分析攻击者交易,可以明确攻击者交易并不复杂,通过部署攻击合约,调用攻击合约0x8f965d0e签名方法进行攻击获利。

?

攻击者共部署两份合约,进行了27次交易步骤相同的攻击,这里选一笔交易进行详细分析。

0x366df0c20e00666749b16ae00475b3c41834dc659ebb29e059aa9bffa892c038

?

通过攻击交易来看,此次攻击似乎很简单,攻击合约给漏洞合约转移0枚USDT,之后将用户的资金转移至攻击者地址。由于官方漏洞合约未开源,并不能看到细节。但通过官方合约审计报告及调用合约签名可以明确,本次攻击主要调用的漏洞方法为_swap。

交易数据如下:

?

_swap代码片段如下:

?

?

通过交易数据分析,可以得出以下_swap方法传参:

IERC20 srcToken:    0xdac17f958d2ee523a2206206994597c13d831ec7(USDT)
uint256 amount:     0
IERC20 dstToken:    0x9682f31b3f572988f93c2b8382586ca26a866475(攻击合约)
uint256 minReturn:  4660
address dexRouter:  0xc5102fe9359fd9a28f877a67e36b0f050d81a3cc(HOP)
address dexSpender: 0xc5102fe9359fd9a28f877a67e36b0f050d81a3cc(HOP)
bytes calldata data:
                    0000000000000000000000000000000000000000000000000000000000000100
                    00000000000000000000000000000000000000000000000000000183c1c270d7
                    0000000000000000000000000000000000000000000000000000000000000128
                    23b872dd(transferFrom(address,address,uint256))
                    0000000000000000000000000753cfbc797abfce05abaacbb1e6ae032feb5f1d(受害者地址)
                    000000000000000000000000b687550842a24d7fbc6aad238fd7e0687ed59d55(攻击者地址)
                    00000000000000000000000000000000000000000000001982589c49e57f7f8d(转账资金470.56)
                    0000000000000000000000000000000000000000000000000000000000000000
                    0000000000000000000000000000000000000000000000000000000000000002
                    000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec7
                    000000000000000000000000eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee
                    869584cd00000000000000000000000010000000000000000000000000000000
                    0000001100000000000000000000000000000000000000000000005f5265d161
uint256 deadline:   时间戳

根据以上交易的传参,继续分析_swap内部逻辑(可以对照代码来看)。

首先require判断时间戳及传入的dexRouter、dexSpender满足条件;

之后将srcToken、dstToken计算得到srclsEth、dstlsEth均为false;

条件判断执行srcToken.safeTransferFrom(攻击者合约,漏洞合约,转移资金0);

最后执行了最重要的一步操作,dexRouter.functionCallWithValue(data,value)。从上述_swap方法传参可以知道,data数据进行了转账,攻击者完成获利;

在随后的逻辑计算和判断中,由于dstToken参数攻击者可控,所以攻击者传入攻击合约进行资金转移及判断,最终绕过条件顺利执行_swap方法,成功获利。

0x4 攻击核心

通过上述攻击交易的详细分析,可以发现攻击者成功的原因主要是_swap方法中多个参数可控,包括dstToken地址可传入任意合约地址进行资金转移;data数据未进行严格判断导致可传入攻击者构造的恶意转账;amount资金转移的数量没有进行区间限制。除此之外,Rabby Swap合约对于用户的资金授权未进行妥善处理,最终导致用户资金被盗。

0x5 事件后续

此次攻击事件中,攻击者获取了多种代币,并将所有代币兑换为114枚ETH和179枚BNB,价值19万美元,并将资金转入Tornado.Cash混币平台,攻击者初始资金(手续费)也来自Tornado.Cash。

发生攻击事件之后,Rabby Swap官方呼吁用户尽快撤销多条链上对于Rabby Swap合约的授权,以下为合约地址:

ETH: 0x6eb211caf6d304a76efe37d9abdfaddc2d4363d1

Polygon: 0xf23b0f5cc2e533283ea97f7b9245242b8d65b26b

BNB: 0xf756a77e74954c89351c12da24c84d3c206e5355

Avalanche: 0x509f49ad29d52bfaacac73245ee72c59171346a8

目前Rabby Swap官方正在追踪资金并表示会提供解决方案。

0x6 总结及安全建议

本次分析主要根据审计报告中代码进行分析,由于合约未开源,合约代码具体是否完全相同不得而知,从攻击交易分析来看,本次攻击事件中只要有两个方面的风险:第一对于Rabby Swap合约传参未进行严格判断导致部分参数可控;第二Rabby Swap合约未对用户在本合约的授权资金数量进行精确计算,导致使用Rabby Swap合约后,仍有授权资金。对于以上安全事件,零时科技安全团队给出以下建议:

  1. 合约上线前应对方法传参进行严格判断及测试,避免参数可控引起安全风险;
  2. 合约上线前进行多次安全审计,避免出现审计步骤缺失;
  3. 合约对于用户资金授权应尽量避免授权最大值,如需授权最大值,则应严格判断合约逻辑避免被其他人利用。

  区块链 最新文章
盘点具备盈利潜力的几大加密板块,以及潜在
阅读笔记|让区块空间成为商品,打造Web3云
区块链1.0-比特币的数据结构
Team Finance被黑分析|黑客自建Token“瞒天
区块链≠绿色?波卡或成 Web3“生态环保”标
期货从入门到高深之手动交易系列D1课
以太坊基础---区块验证
进入以太坊合并的五个数字
经典同态加密算法Paillier解读 - 原理、实现
IPFS/Filecoin学习知识科普(四)
上一篇文章      下一篇文章      查看所有文章
加:2022-10-22 21:20:53  更:2022-10-22 21:21:09 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年2日历 -2024/2/29 6:54:27-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码