区块链安全入门与实战
上QQ阅读APP看书,第一时间看更新

2.4.2 案例分析

1.越权操作

可能是因为开发人员热衷于打破樊篱,所以越权操作一直是Web安全中老生常谈的问题,并且由于订单、地址、余额和个人信息等功能的聚集,交易所是越权问题的重灾区。越权漏洞一般分为平行越权和垂直越权两种,而交易所中平行越权占大多数,不仅可以导致越权查看、修改、撤销订单,添加、删除地址以及修改个人信息,而且配合存在的信息泄露问题,可以变相地获取所有用户的KYC信息,而且因为是正常请求,这类问题比起“脱库”更难被WAF所发现。

某交易所修改userPhone可以越权让任意用户下单,如图2.17所示。

(1)越权下单

某交易所遍历id可以越权删除地址,如图2.18所示。

(2)越权删除地址

根据上述示例可以看出,虽然请求头中含有token和userId等参数,但服务器在接收到请求后并没有将token和userId与body里所携带的id和userPhone进行校验,没有做好鉴权,导致越权。

图 2.17

图 2.18

2.工作流程绕过

近期我们团队在某交易所发现一起由于越权、信息泄露以及工作流程绕过导致的盗币事件。因为事件发生时间太近,不确定厂商是否修复完毕,这里不再披露详细的攻击细节以及截图,简单介绍一下攻击手法,以便进行安全防御时对此类手法加以防范。

攻击者在某交易所前端文件中发现了转账时所调用的API接口。按照流程,用户验证身份通过后调用此API转账,但由于验证在前,转账在后,两者并非同时进行,导致攻击者能够直接调用转账API接口发起转账,这样可以直接绕过身份验证并且可以越权对其他用户进行转账,如图2.19所示。

图 2.19

造成本次攻击事件的主要原因有三点:

·前端文件泄露API接口。

·交易时验证逻辑可被绕过。

·未能做好鉴权措施。

暴露意味着更大的攻击面。要隐藏好自己的信息,完备逻辑,完整鉴权,来应对还在潜伏着的威胁。

3.KYC认证缺陷

KYC(Know-Your-Customer,充分了解你的客户)认证了解账户的实际控制人和交易的实际收益人,还要求对客户的身份、常住地址或企业所从事的业务进行充分的了解,并采取相应的措施。

认证是交易所的重要功能之一,认证方式也百花齐放,常见的有通过身份证正反面照片认证,手持身份证照片认证,手持身份证视频认证,等等。而认证方进行认证的方式有人工识别和接口识别两种:人工识别的准确性取决于审核员当天的心情以及前一天的睡眠,PS加AI换脸的手持身份证照片一般来说可以轻松通过;对于调用接口来进行识别的,有使用百度识图接口来验证的,判断身份证照片上的身份证号以及姓名与用户输入的是否相同,以此判断是否通过认证;也有需要用户自己付费审核的人脸识别接口。

图2.20所示为某交易所调用Baidu API进行KYC认证的前端代码。

图 2.20

这种KYC认证方式对于掌握作图技巧的攻击者来说作用不大。

4.OTC逻辑缺陷

OTC(Over-The-Counter,场外交易市场)通常是指店头交易市场或柜台交易市场。对于交易所来说,OTC指的是用户依托交易所的担保、卖家和买家进行交易。

正常OTC交易流程为:

商家卖币=>买家购买币并支付=>商家确认收款=>系统转账到买家

而攻击者越权后的交易流程为:

商家卖币=>攻击者购买币并不支付=>攻击者通过越权点击商家的确认收款=>系统转账到买家

图2.21所示为某交易所OTC存在的逻辑缺陷:

图 2.21

利用此类逻辑问题,攻击者可以轻易地不进行支付而直接获得系统转账。此类问题在我们对交易所客户进行安全审计时多次出现,会给交易所带来直接的经济损失,要引起重视。

5.二次验证绕过

在安全审计过程中,交易所的二次验证有使用Google验证码以及手机和邮箱验证码等方式,二次验证就是为了保障用户账号安全,对敏感操作加以确认,但是如果设计上存在缺陷,将导致二次验证形同虚设。

在“工作流程绕过”中谈过,如果支付验证与转账操作分为两步进行,就一定需要在转账时对当前用户进行验证以及鉴权来防止绕过和越权。我们团队对大量交易所进行安全审计时发现,大部分交易所进行对转账等敏感操作的二次验证时,将验证操作与转账操作通过不同接口隔离实现,导致验证码结构脱离转账操作,失去二次验证的效果;部分交易所虽然通过服务器验证了手机号与短信验证码的有效性,但是并未验证手机号是否为当前用户所绑定的,换句话说,修改数据包就可以达到使用任意手机号进行验证,从而任意提币;还有更离谱的事情,将验证码填空即可绕过验证。

图2.22所示是某交易所进行提币的二次验证,虽然使用手机和邮箱验证码同时验证,但并未对当前操作用户的手机号绑定进行验证,导致可以使用任意手机号码的验证码进行二次验证,直接提币。

6.盘口价格设置缺陷

2019年8月23日,AWS东京机房硬件设备出现故障,导致无法连接到服务。部分交易所因使用其他交易所错误的价格数据而导致币价出现剧烈波动,BTC成交价最低为0.32USD/BTC,ETH以及EOS均受到影响,如图2.23所示。

图 2.22

图 2.23

在上游数据错误的情况下,没有对数据的有效性进行判断,而直接使用导致损失的出现。在传统安全行业,我们称这种情况为供应链攻击,一旦上游的数据、厂商被劫持、修改,对下游没有做好防护措施的交易所将会造成降维打击。