一、近期部分与数字货币交易平台相关的安全事件
近期,数字货币交易所安全事件频发。2018年01月日本Coincheck交易所受到黑客攻击被盗取NEM新经币损失约5.34亿美元;2018年02月基于以太坊的XMRG代币的交易价格上涨787%后迅速暴跌归零,造成大量用户经济损失,背后原因在于其智能合约代码存在整数溢出漏洞,超额铸币后抛售造成恶性通胀;2018年03月Binance交易所,黑客利用盗取的用户信息进行大量交易操纵市场行情获利超过1亿美元。2018年04月基于以太坊的BEC代币和SMT代币先后因智能合约存在溢出漏洞造成天量代币转出,引发恐慌抛售,导致市值几近归零……这样的案例数不胜数。
笔者通过这些观察,发现两个现象:一是事件发生的频率很频繁,要知道这只是列举近期部分影响比较大的事件,如果把时间范围扩大,或者算上可能存在的影响较小的以及被掩盖的事件的话,数量会比这个更多;二是平台或用户的损失数额巨大,动辄数千万甚至数亿美元。
实际上,通过这些事件记录,还可以得到更多信息,接下来展开分析一下。
2018年3月初,著名的数字货币交易平台币安出现大量账户异常交易,继而影响了整个数字货币市场的交易行情。这个事件的操作手法很有趣,后文会再提起。这里要说的是,事件发生之后,有人发文指责事件是币安官方自导自演的,币安联合创始人何一后续发文回应,反驳这一指责。事件真相究竟如何笔者不打算在此讨论,这里是想要援引何一回文中的一句话:“出现这种安全问题是几乎不可避免的,任何种类的交易所每天都遭受攻击,一方面政策空间狭窄,导致币圈不太可能照搬传统交易所体系,另一方面虚拟货币交易所面世才几年,不管是风控还是技术积累都需要一个成长过程。”
是否认同这个说法,是个仁者见仁的问题,笔者所关注的主要是它的思路。这个说法当中,把数字货币交易平台同传统金融交易平台做了对比,本文接下来也会使用同样的思路来阐述。
二、黑客为何攻击数字货币交易所?
从逻辑上说,任何主观行为都是有目的的,黑客攻击行为的目的,不乏有为了炫耀技术或者表达政治诉求之类的情况,但是占比最大的还是为了获得经济回报。
现实生活中,是存在攻击传统金融机构例如银行或者证券交易所系统的情况的,但是这方面的记录相对上文而言少很多,下面分析一下原因。
笔者认为,主要存在两方面的原因,一方面,传统金融机构所保有的资产,无论是数字化的(相对于实体化的纸币和硬币)法定货币,还是证券凭证,普遍都是记名的,其流转过程有迹可循,并且接受监管,要实现难以追踪的转移效果,成本高难度大。另一方面,传统金融行业的数字化历史已经很久,无论是人才储备,技术积累,制度规范都已经很成熟,单就信息安全方面的建设水平也相对很高了,要从技术上实现成功侵入盗走资产并逃脱追捕这一系列步骤难度非常大。
反观数字货币交易所,一方面,数字货币的匿名性,不可篡改性以及无监管特性,导致了资产转移便捷,溯源找回难度大。另一方面,数字货币交易行业出现时间短,发展又非常快,利润高,导致本来技术积累就不足的情况下,仍然忽视信息安全方面的建设,隐藏的安全漏洞多,攻击起来相对容易。
三、数字货币交易所在技术方面面临的安全威胁
目前数字货币交易所在技术方面面临的安全威胁,笔者分析主要分为两大部分。
1.传统信息系统安全漏洞
这一部分来说,数字货币交易所,和传统金融机构差别不大,其整个信息系统,由Web服务器,后端数据库等元素构成,用户通过浏览器,移动端App以及交易所提供的API等多种方式作为客户端访问服务器。
结合本文第一部分的事件记录,可以看出,这部分面临的安全威胁主要包括,服务器软件漏洞,配置不当,DDoS攻击,服务端Web程序漏洞(包括技术性漏洞和业务逻辑缺陷),办公电脑安全问题,内部人员攻击等。
对于规模较大,用户较多的交易所,还会面临用户被攻击者利用仿冒的钓鱼网站骗取认证信息的问题。上文中提到的币安交易所的异常交易事件,据官方的说法,是攻击者利用钓鱼欺骗的方式骗取了部分用户的认证凭证,继而利用API发起大量交易,将用户账户内的其他币种交易成比特币,币安及时发现异常,冻结了提币功能。
有趣的是,攻击者虽然不能提币,但是想到了另一个巧妙的获利方式,即利用其控制的大量场内比特币操纵市场,影响其他币种的价格,再在另外的数字货币期货交易所进行做空操作,最终在无法提币的情况下获利超过1亿美元。在这个事件中,攻击者利用了币安平台对市场的巨大影响力,理论上来说,并没有盗取谁的数字货币,只是“换了换币种”,因大量的做空订单分散在成百上千的其他交易所,导致根源也无从查起。
该平台收录的最早的漏洞信息在2018年07月12日,截止到撰写本文时,在不到两个月的时间里已经收录了超过1800个漏洞,并且仍在以每天数十个的速度增长。
上个月,某安全团队称捕获到了一个0day漏洞,是某个数字货币交易所整站程序的逻辑漏洞,有上百个中小交易所在使用该程序,虽然大众普遍认为,国内外的规模较大的交易所不会购买使用这种第三方开发的整站程序,但是现在数字货币交易行业利润高,发展迅猛,后期可能会有很多人想要快速进入这个市场,在搜索引擎中搜索“数字货币 交易 平台 开发”等关键字即可发现这一块的需求量应该还是很大的。
其实在初期使用第三方外包开发的方式本来未尝不可,就传统的银行领域来说,大量的中小规模银行的信息系统也会使用第三方公司的产品来定制,因为政府层面的严格监管以及这一类开发公司长久的技术积累,银行使用的类似系统通常安全性是有足够保证的。但是在数字货币行业则不同,部分从事这一类开发的个人和团队对于产品质量的保障能力很有限,导致通用型漏洞频发也就不奇怪了。
对于这一部分安全威胁的解决方法来说,通过渗透测试,代码审计等安全服务,挖掘并修复系统存在的安全漏洞,可以参考传统金融行业的安全规范和最佳实践结合自身情况完善安全体系的建设。
2.智能合约安全漏洞
以太坊被称为“区块链2.0”技术的代表,因为它支持智能合约的运行。可以这么来理解,比特币系统就是在底层区块链技术的基础之上,加上一个定义了奖励分发规则的“合约”所构成的。而以太坊的出现,提供了现成的底层区块链网络,开发者可以在这个基础之上,使用Solidity等程序开发语言,开发部署自己的智能合约,包括模拟一个类似比特币一样的产品。因为Solidity是图灵完备的程序开发语言,因此理论上,可以用来实现各类分布式应用。
开发者编写好智能合约代码之后,将代码部署到区块链上,程序在以太坊节点的EVM虚拟机上执行。代码上链之后,各节点执行相同的操作,同步数据状态。
和传统的程序一样,智能合约也不可避免的会存在安全漏洞,不同的是,由于区块链技术的不可篡改特性,一旦合约部署好之后,就很难再修复其中的问题。一些存在例如整型溢出等漏洞的代币分发合约部署之后,代币上线交易所交易,接着漏洞被触发利用,短时间内超发大量代币影响市值,对交易所和用户来说都会造成巨大的经济损失。
这部分安全威胁,就与传统的信息安全漏洞大不一样了。在传统金融市场中,也存在类似的攻击,例如20世纪末期亚洲金融危机时,索罗斯对港元的操作。不同的是,在传统金融市场要发动这样的攻击需要巨量的资金支持才能实现。而在数字货币领域,拥有挖掘合约漏洞能力的人理论上都有可能实现这样的攻击。
下图是部分基于以太坊ERC-20智能合约标准开发的代币合约的漏洞信息:
实际的威胁情况可能比这还要严重得多。我们说智能合约之所以“智能”,是因为一旦部署上链之后,它的执行过程透明可见,不可篡改,无需人工干预,自然解决了执行过程中的信任问题,这也是区块链技术出现时所想要解决的根本问题。然而虽然解决了程序“运行”阶段的问题,但是如果合约代码存在漏洞,开始执行之后被利用,背离了原本的涉及初衷,那区块链技术的这些优秀特性反而会成为挽救损失的障碍。
应对这部分安全威胁,需要交易所在上线新的代币之前,先经过完善的合约代码安全审计工作,防患于未然,将可能的攻击威胁降到最低。