区块链安全事件与代码审计
据统计,2018年全球区块链领域发生近百起安全事件156,损失超20亿美元,6991相较于2017年增长了538%。3780比特币的底层技术“区块链”面临着来自数据层、网络层、共识层、激励层、合约层、应用层的安全风险,安全攻击方式层出不穷,防不胜防。安全攻击主要发生在应用层,其中智能合约是区块链安全的重灾区。
安全事件
MtGox事件
MtGox是当时全球最大比特币交易平台,处理的比特币交易占全球70%。2014年,MtGox遭遇了最严重的黑客攻击,随后MtGox宣布暂停交易,理由是其安全软件存在漏洞。两周后,网站突然关闭,MtGox申请破产。
据MtGox估计,公司的比特币投资损失约合4.8亿美元,其中包括客户的75万单位比特币和公司自己持有的10万单位,合计约占全球比特币发行量的7%。此次事件导致投资者信心受挫,比特币直接暴跌36%。
The DAO 事件
DAO,英文全称是Decentralized Autonomous Organization,去中心化自治组织。这个去中心组织,依靠智能合约在区块链上运行,没有法律实体,我们可以把它理解成“去中心化的公司”。The DAO则是区块链公司Slock.it发起的一个众筹项目。
2016年6月17日,黑客利用智能合约脚本漏洞,通过ICO(首次代币发行)项目盗取360万以太币,超过了该项目筹集的以太币总数目的三分之一。受此事件影响,以太币价格第二天暴跌约30%。
The DAO事件影响之大,甚至惊动了美国SEC,虽然他们不是来调查是谁偷走了那些代币。不过,这也对之后的代币众筹项目产生了很大影响,项目方也会更注意法律风险。
51%攻击
2018年5月,比特币黄金(BTG)开发团队公告显示攻击者掌控了BTG网络的大比例算力,从而针对交易所发动了“51%双花攻击”。攻击从交易所窃取超过388200个BTG,价值高达1860万美元。
“51%攻击”的原理在于数字货币采用的分布式记账机制。以比特币为例,比特币网络是一个去中心化的分布式账本,每记一笔账都需要“全民投票”确认。当你掌握全网算力超过50%时,你就拥有了对比特币网络操纵和篡改的权力。“51%攻击”能造成的破坏是巨大的。一旦你攻击成功,可以修改自己的交易记录,进行双重支付(即双花)。
代码审计
在区块链的安全事件中,大多都是由于源代码存在漏洞而使黑客趁虚而入。智能合约受到区块链本身保护,所以智能合约代码可以最大限度的开源和让人阅读。但是代码的公开性使得黑客容易掌握代码的缺陷,进一步利用代码缺陷触发条件改变智能合约执行结果,使得区块链项目存在巨大的经济隐患。所以智能合约代码的开源性需要代码的高可靠性,这种可靠性要求100%的正确。
但是,对于程序员来说,写一个完全没有漏洞的代码实在是太难了,即使采取了所有可能的预防措施,在复杂的软件中也总会出现没有预料到的漏洞。所以,代码审计的重要性不言而喻。
代码审计,顾名思义就是检查源代码中的安全缺陷,检查程序源代码是否存在安全隐患,或者有编码不规范的地方,通过自动化工具或者人工审查的方式,对程序源代码逐条进行检查和分析,发现这些源代码缺陷引发的安全漏洞,并提供代码修订措施和建议。
代码审计对于区块链的发展具有重要意义:一方面,代码审计可以节约安全投入,降低修复成本。研究表明,当应用发布后再执行代码修复,修复成本大约是设计编码阶段的30倍。所以,变被动防护为主动防御,从源头上控制安全隐患,可以最大程度节约成本;另一方面,代码审计可以降低系统安全风险。通过代码审计及时对代码层缺陷进行修复,从而大幅度提升系统整体安全性,避免巨额经济损失。
结语
越来越多的区块链安全事件正在倒逼代码审计的发展。目前,智能化代码审计,即利用计算机进行稳健性检验是代码审计最重要的方式,但掌握该项技术标准的国内公司并不多。代码审计亟待进一步普及与发展。