您的位置:首页 > 互联网 >

AirSwap公布智能合约的致命漏洞 用户资产可被对手恶意偷盗

2019-10-09 11:39:32 来源: 链闻

2019 年 09 月 13 日 AirSwap 团队公布了一个 AirSwap 智能合约中存在致命的漏洞,这一漏洞可以使得用户的资产在某些情况下被对手恶意吃单『偷盗

2019 年 09 月 13 日 AirSwap 团队公布了一个 AirSwap 智能合约中存在致命的漏洞,这一漏洞可以使得用户的资产在某些情况下被对手恶意吃单『偷盗』,PeckShield 安全人员独立分析了该漏洞,并与 AirSwap 团队沟通了细节和修复方案。

漏洞影响概述

PeckShield 安全人员深入分析 AirSwap 智能合约后发现,这一漏洞只对最近上线的 Wrapper 有影响,AirSwap 团队在发现该问题后第一时间下线当前合约,并将 AirSwap 网站回退到之前使用的合约,从合约上线到问题修复整个过程仅持续了 24 小时,可见 AirSwap 团队对于合约安全的重视程度之高。

PeckShield 安全人员独立分析了漏洞细节,并与 AirSwap 团队沟通细节和修复的方案, 同时将该漏洞命名为“ItchySwap”。

PeckShield 在此提醒,由于这一漏洞可使用户的资产被攻击者恶意偷盗,受此次影响的账号一共有 18 个,其中有部分账号有数万至数十万美元的资产,这些账号需要尽快完成升级,或与 AirSwap 团队联系。

ItchySwap 漏洞详解

一、AirSwap 合约

在分析之前,为方便起见,我们先定义几个概念:

1. maker:出售资产的一方;

2. taker:购买资产的一方;

3. order: maker 与 taker 之间发生资产交割的订单;

4. Indexer: AirSwap 中的订单簿,汇聚了当前正在出售及需要购买的资产信息。

下图说明了 maker、taker 和 Indexer 之间的交互流程:

**

**

AirSwap 智能合约漏洞详解:用户资产可被攻击者恶意吃单?

AirSwap 是一个基于 Ethereum 的点对点去中心化交易所,它集成了 Swap Protocol ,在其中作为一个自动托管服务,允许交易的双方(即 maker 和 taker)在以太坊上安全地交易任何资产。与许多去中心化交易所不同,AirSwap 虽然没有对资金进行托管控制,但仍然有一个用于匹配目的的集中式订单簿,它实现了一个用于交易和订单匹配的完全对等模型。

特别值得一提的是,有一个名为 Indexer 的链下服务,可以聚合来自 maker 和 taker 的交易意图,然后为他们提供匹配的服务。特别是,一旦 taker 找到了合适的 maker,他们就会开始进行场外价格的谈判。一旦达成协议,订单将由 Taker 通过 Swap Protocol 在链上进行填充和资产交割。

在 AirSwap 智能合约中, taker 将订单上链及资产交割的过程在 AirSwap swap(Types.Order calldata_order) 函数之中,这一函数实现如下所示:

AirSwap 智能合约漏洞详解:用户资产可被攻击者恶意吃单?

1)验证订单有效性

订单 order 参数有效性检查,这些信息均由 taker 上链的时候指定的,也意味着这些信息都可以由 taker 篡改,具体包含:

1. 订单还在有效期内;

2. 订单还没有被其它的 taker 吃单;

3. 订单还没有被取消;

4. 订单的 nonce 大于最小值;

5. 设置订单状态为 TAKEN 状态。

2)验证 taker 信息

AirSwap 智能合约漏洞详解:用户资产可被攻击者恶意吃单?

确立有效的 taker,根据 order 中指定或者等同于合约的调用方 msg.sender。

3)验证 maker 信息

AirSwap 智能合约漏洞详解:用户资产可被攻击者恶意吃单?

验证 maker 的有效性,这里的验证分为两种情况考虑:

1. 没有 maker 签名的订单:需要保证 msg.sender 有权限操作这个 maker 地址即可,即这笔 order 发起者有权限操作 maker 的资产;

2. order 中指定了 maker 的签名信息:验证签名的有效性。

4) 资产交割**

**

AirSwap 智能合约漏洞详解:用户资产可被攻击者恶意吃单?

如果上述的验证流程没有问题,那么直接执行 maker 和 taker 的资产交割。

二、Wrapper 合约

在上述的 AirSwap 合约中,用户通过 swap() 函数执行资产互换,这一流程非常清晰,没有问题。但是这一合约存在一点不完美的地方,用户只能通过 Token 进行资产互换,无法直接用 ETH 平台币参与其中。用户可以先把 ETH 转换成 WETH, 再用 WETH 参与互换,但无论如何,用户使用体验上多了一步。

为了降低用户使用体验上的摩擦,AirSwap 团队与 2019 年 09 月 12 日 推出了 Wrapper 合约,其使用是自动将用户转入的 ETH 转换成 WETH 之后再参与资产互换的过程,其关键流程如下:

AirSwap 智能合约漏洞详解:用户资产可被攻击者恶意吃单?

1. 验证 swap() 发起方与 taker 是相同的;

2. 如果用户发起 swap() 有携带了 ETH 资产,并且需要转换的 token 为 WETH, 那么就自动将 ETH 转换成 WETH;

3. 直接调用 AirSwap 合约的 swap() 操作。

考虑到一种特殊的场景,Alice 希望通过 Wrapper 合约执行 AirSwap 资产互换,这一过程需要先由 Alice 自行在 AirSwap 合约中授权 Wrapper 合约,以允许 Wrapper 合约可以执行各自的资产交割流程。

由于区块链的透明性,Eve 看到了 Alice 的授权操作,那么他就可以向 Wrapper 合约发起一笔恶意的订单,其包含的内容如下:

1. order 中的有效时间、nonce 为一个非常大的数值;

2. order 中的 maker 对应的账号为 Alice 的账号;

3. order 中的 taker 为空;

4. order 的 signature 为空。

将上述构造好的 order 代入 AirSwap 的 swap() 函数,其中 1,2 两步的验证由于是 taker 控制的,不会有问题,我们重点看下第三步验证 maker 信息:

AirSwap 智能合约漏洞详解:用户资产可被攻击者恶意吃单?

由于此时 AirSwap 合约是由 Wrapper 合约调用的,那么 msg.sender 即 Wrapper 合约的地址,前文讲到,Wrapper 合约是经过 Alice 授权可直接控制 Alice 的资产,此时虽然 Eve 没有权限操作 Alice 的资产,但此时可以通过 Wrapper 控制,也就间接地控制了 Alice 的资产。

安全规避

PeckShield 安全人员分析发现,截止至 2019 年 09 月 28 日为止,共有 6 个账号执行了revoke()操作,以解除对Wrapper合约的授权,还有 12 个账号存在安全风险,这剩下的所有账号应当立即执行revoke()操作,或者将账号中的资产转移至未对Wrapper授权过的安全账号。

任何的代码在上线生产环境之前都应当得到充分的测试和验证,特别是承载着用户价值的 DEX 平台。在产品增加新特性之时,一定要考虑到旧特性的兼容性与安全,新特性的引入不应该触发旧产品中设计不完备的地方。

附录

AirSwap 智能合约漏洞详解:用户资产可被攻击者恶意吃单?

关键词: AirSwap 智能合约 致命漏洞

精选 导读

募资55亿港元万物云启动招股 预计9月29日登陆港交所主板

万科9月19日早间公告,万物云当日启动招股,预计发行价介乎每股47 1港元至52 7港元,预计9月29日登陆港交所主板。按发行1 167亿股计算,万

发布时间: 2022-09-20 10:39
管理   2022-09-20

公募基金二季度持股情况曝光 隐形重仓股多为高端制造业

随着半年报披露收官,公募基金二季度持股情况曝光。截至今年二季度末,公募基金全市场基金总数为9794只,资产净值为269454 75亿元,同比上

发布时间: 2022-09-02 10:45
资讯   2022-09-02

又有上市公司宣布变卖房产 上市公司粉饰财报动作不断

再有上市公司宣布变卖房产。四川长虹25日称,拟以1 66亿元的转让底价挂牌出售31套房产。今年以来,A股公司出售房产不断。根据记者不完全统

发布时间: 2022-08-26 09:44
资讯   2022-08-26

16天12连板大港股份回复深交所关注函 股份继续冲高

回复交易所关注函后,大港股份继续冲高。8月11日大港股份高开,随后震荡走高,接近收盘时触及涨停,报20 2元 股。值得一提的是,在7月21日

发布时间: 2022-08-12 09:56
资讯   2022-08-12

万家基金再添第二大股东 中泰证券拟受让11%基金股权

7月13日,中泰证券发布公告,拟受让齐河众鑫投资有限公司(以下简称齐河众鑫)所持有的万家基金11%的股权,交易双方共同确定本次交易的标的资

发布时间: 2022-07-14 09:39
管理   2022-07-14

央行连续7日每天30亿元逆回购 对债市影响如何?

央行12日再次开展了30亿元逆回购操作,中标利率2 10%。这已是央行连续7日每天仅进行30亿元的逆回购缩量投放,创下去年1月以来的最低操作规

发布时间: 2022-07-13 09:38
资讯   2022-07-13

美元指数创近20年新高 黄金期货创出逾9个月新低

由于对美联储激进加息的担忧,美元指数11日大涨近1%创出近20年新高。受此影响,欧美股市、大宗商品均走弱,而黄金期货创出逾9个月新低。美

发布时间: 2022-07-13 09:36
资讯   2022-07-13

美股三大股指全线下跌 纳斯达克跌幅创下记录以来最大跌幅

今年上半年,美股持续回落。数据显示,道琼斯指数上半年下跌15 3%,纳斯达克综合指数下跌29 5%,标普500指数下跌20 6%。其中,纳斯达克连续

发布时间: 2022-07-04 09:51
推荐   2022-07-04

融资客热情回升 两市融资余额月内增加超344亿元

近期A股走强,沪指6月以来上涨4%,融资客热情明显回升。数据显示,截至6月16日,两市融资余额1 479万亿元,月内增加344 67亿元,最近一个半

发布时间: 2022-06-20 09:41
资讯   2022-06-20

4个交易日净买入超百亿元 北向资金持续流入A股市场

北向资金净流入态势延续。继6月15日净买入133 59亿元后,北向资金6月16日净买入44 52亿元。自5月27日至今,除6月13日以外,北向资金累计净

发布时间: 2022-06-17 09:37
推荐   2022-06-17