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 智能合约漏洞详解:用户资产可被攻击者恶意吃单?

精选 导读

Telegram推出Grams Wallet 可以集成到Messenger使用

10月9日讯,Financemagnates在周二(10月8日)发布的报道称,Telegram今日更新了服务条款,正式引入了Grams Wallet,可以作为独立应用程序提

发布时间: 2019-10-09 09:06
币库   2019-10-09

宝宝树:人员变动属于正常优化 总市值已跌落至36.81亿港元

近日,母婴平台宝宝树的内部人事变动传闻引起了市场的关注。北京商报记者为此向宝宝树方面核实,对方回应称,消息不属实,公司确有人事(高

发布时间: 2019-10-09 08:52
学院   2019-10-09

坚果Pro 3渲染图曝光 搭载后置四摄+Smartisan OS 7.0

近日网络上流出了疑似锤子新机坚果Pro3的渲染图以及相关消息,在沉浸了许久以后,锤子手机终于有了些动静。从网上流传出的信息来看,这款新

发布时间: 2019-10-09 08:29
金沙国际娱城8004   2019-10-09

Redmi 8真机曝光 搭载后置双摄+5000mAh电池

近日,SalimBaba Technical在视频网站上传了Redmi 8的开箱视频,确认这款手机将搭载高通骁龙439处理器和5000mAh电池。在配置方面,Redmi 8

发布时间: 2019-10-09 08:26
金沙国际娱城8004   2019-10-09

三星折叠屏专利曝光 副屏位于手机的右侧

近日,三星向世界产权组织(WIPO)提出了一项新的折叠屏专利申请。曝光的专利图显示,三星新的折叠屏屏幕会更大,展开后将达到普通屏版的大小

发布时间: 2019-10-08 17:27
金沙国际娱城8004   2019-10-08

realme X2 Pro将采用双立体扬声器 音质通过Hi-res小金标认证

10月5日,realme手机欧洲官方推特宣布,realme X2 Pro采用双立体声扬声器,支持杜比音效,并通过了Hi-res小金标认证。realme X2 Pro是realm

发布时间: 2019-10-08 17:24
金沙国际娱城8004   2019-10-08

苹果宣布iPhone 6s/6s Plus的免费维修计划 以修复无法开机的问题

苹果在周五宣布了一项针对某些iPhone 6s和iPhone 6s Plus设备的服务维修计划,以修复可能无法开机的问题。苹果在通知中称,该维修计划并不

发布时间: 2019-10-08 11:47
金沙国际娱城8004   2019-10-08
发布时间: 2019-10-08 11:34
行业   2019-10-08

华为推出HMS服务 因为Mate 30在海外无法使用谷歌GMS

日前,华为Mate30系列正式在马来西亚、菲律宾、新加坡等亚洲国家发布。但值得注意的是,这次华为Mate30系列由于一些原因在海外无法使用谷歌

发布时间: 2019-10-08 09:22
金沙国际娱城8004   2019-10-08

三星电子第三季度营利可能下降56% 内存芯片贡献了2/3的利润

北京时间10月8日早间消息,三星电子周二报告称,第三季度营业利润很可能同比下降56%。这主要是由于全球存储芯片价格的滑坡。不过,这仍然略

发布时间: 2019-10-08 09:11
行业   2019-10-08

每日热点

热门TAG

more
Copyright @ 2008-2017 www.opapudo.com All Rights Reserved 块财经 联系QQ:2676207053
版权所有:宁德市威创互联网金沙国际娱城8004有限公司 备案号:闽ICP备18003015号-1