【袁煜明专栏】从ERC20漏洞事件看区块链安全生态建设

原创
2367 天前
9266

作者 袁煜明、李慧

2018年4月23日BEC(美链)爆出ERC20协议安全漏洞,攻击者利用整数溢出BUG,可无限生成代币,直接导致BEC币值跳水,几乎归零。作为一个价值流通的底层平台,安全性是区块链的重中之重,也是区块链能被社会广为接受的基石之一。如何通过良好的漏洞治理生态来降低风险事件的发生将变的尤为重要。

回望区块链九年的发展历程,安全事件引发的巨额资金损失、公司破产等问题不胜枚举。让我们先来分析一下比特币、以太坊和交易所这三类安全事件重灾区现状,再探讨一下如何从项目团队、项目生态和投资者防范这三个方面去全面构建区块链安全生态,切实降低安全风险。

1.安全问题现状

1.1 比特币安全问题

比特币区块链自2009年1月4日运行以来,截止到今日已经稳定地运行了3405天,其安全性可谓是固若金汤,不过随着加密技术的发展,比特币的安全机制也越来越受到挑战。一个由加密算法爱好者构成的组织(Large Bitcoin Collider(LBC)),正在进行一番堂吉诃德式的努力:暴力破解创建比特币钱包地址的加密算法。LBC上线运作还不到一年,项目方表示,他们已生成了3000万亿条密钥,并将其和现有的比特币钱包地址进行比对。目前总共筛选出了30个匹配的密钥,去除“钓鱼”秘钥,真正包含比特币的匹配密钥已有3个。

除了暴力破解法,比特币最大的安全隐患来自于交易所平台监守自盗或被黑客攻击,亦或是用户账户被盗。一旦被盗,黑客会通过混币等手段进行洗白,追回的可能性几乎为零。

1.2  以太坊安全问题

相较于比特币,以太坊最大的提升莫过于一方面引入了智能合约,其图灵完备的编程机制使得平台可以支持复杂的应用,大大丰富了平台应用的多样性;另一方面以太坊引入了虚拟机中间层,使得多种语言开发的智能合约都能在平台运行,提高了平台的可扩展性。

但恰恰也是这两大机制为以太坊的安全问题增添了更多的不确定性。图灵完备的编程方式固然更灵活,但同时也更复杂和不可控;虚拟机机制使得以太坊支持多种语言,当然也引入了更多语言的不确定性、复杂性和固有的缺陷;这些因素都是黑客寻找猎物的温床。


以太坊架构示意图

 

作为区块链最活跃的公链平台以太坊,目前已知存在Solidity漏洞、短地址漏洞、交易顺序依赖、时间戳依赖、可重入攻击等漏洞,在调用合约时漏洞可能被利用,而智能合约部署后难以更新的特性也让漏洞的影响更加广泛持久。有研究机构运用分析工具Maian分析基于以太坊的近100万个智能合約,发现有34,200个合约含有安全漏洞,可窃取或是冻结资产、甚至刪除合约。

1.3  交易所安全问题


交易所作为巨大的数字资产集中池,成为黑客们攻击的重要目标,若是安全控制做的不到位,任何一次攻击都将是损失惨重,破产倒闭也只是一夜之间。

除了来自外部的攻击,源于交易所内部的监守自盗或是信息泄露也是非常致命和可怕的。2018年4月,总部位于印度的交易所Coinsecure宣布,价值330万美元的438.318个比特币被盗,据称就是由于一名员工所为。

据外媒cointelegraph报道,韩国媒体网站MBC聘请了一家安全公司来测试包括Bithumb在的五家韩国比特币交易所安全性设置,结果令人堪忧。安全公司使用了一些所谓的基本黑客工具就成功绕开了这些比特币交易所的安全程序,该公司称他们能够成功入侵所有五个目标平台,获取用户数据和资金。

2. 构建区块链安全生态

区块链安全生态不仅仅需要项目团队、开发人员,更需要多方的通力合作,因此,本文主要从项目团队内控、项目生态激励和投资者自我防范这三个方面去探讨区块链安全生态的建设。

2.1  完善代码安全审查机制

回顾ERC20漏洞事件,可知毁掉BEC的仅仅是一个整数溢出漏洞,学过计算机的同学可能知道,这类漏洞是程序中最为常见和普遍的漏洞了,完全可以通过有效的代码安全审查机制来避免。漏洞事件一出,经过核查,使用ERC20协议的项目竟然有20余个都存在类似的问题,代码质量很是堪忧!

瞬息万变的币圈确实发展的太快,每一个人都是飞奔着前进,都赶着写白皮书、赶着募资、赶着上项目,自然而然就很少有人沉下心来好好做测试,好好做安全审查,导致漏洞频出、安全事件频发。

区块链作为一个分布式的去中心化系统,代码一旦部署将很难更新,需通过硬分叉或者软分叉来对代码进行升级,成本不可谓不高。THE DAO事件则直接将以太坊分裂成为ETH和ETC,是对以太坊生态的重大破坏。所以在项目发布之前,充足的测试和代码审核变得十分关键和必要。比如说多人代码审核、内部测评小组、外部专家评测等。

  • 多人代码审核

由于一个人的能力和认知总是有限的,所以对于同一段代码,不同的人将会发现不同的问题,多人代码审核机制能使得代码的BUG率和漏洞率大大降低。这种方式也是软件行业降低错误率最为通用和有效的方式之一。

  • 内部测评小组

项目组建立内部安全测评小组,梳理业界常见的安全问题清单,并逐一对发布的项目进行安全审计,通过简单的梳理和测评便能将常见的基本漏洞一扫而空,大大增加了系统的可靠性。

  • 外部专家评测

对于某些新型的,特殊性的漏洞,项目组可以借助于外部安全专家的帮助进行梳理和测评,争取在项目发布前将安全隐患降到最低程度。

2.2  发展白帽黑客激励机制

世界无非两极,一阴一阳、一黑一白、一正一邪,有黑客肆意破坏,就有白帽黑客维护世界正义。随着各类数字资产的市值越来越高,黑客们从中套取的收益也越来越客观,相比之下,白帽黑客们却穷酸的多。这种巨大的收入差导致越来越多人加入的黑客的阵营,而白帽黑客们则为数稀少。通过激励白帽黑客来抑制或者是平衡黑客越来越肆无忌惮的破坏行为或许将成为一种有效的手段。

那么如何激励白帽黑客们为平台做出贡献呢?我想主要可以从两方面入手,一是物质激励,二是精神激励。

  • 物质激励

对于发行通证的公链来说,最实在的物质激励自然就是通证。它既是区块链平台的价值载体,也是平台生态治理的重要手段。比如COSMOS,为了鼓励发现并及时报告缺陷,Cosmos Hub允许黑客通过ReportHackTx 交易来“邀功”,主要就是说明,“这个节点已被攻击,请将奖金发到这个地址”。黑客可以收到击中资产的5%作为赏金。

除此之外我们也可以通过设立黑客奖金池、黑客基金或者项目特别顾问等方式来激励白帽黑客主动挖掘漏洞,帮助平台持久安全地运行。

  • 精神激励

除了物质奖励,对于Hacker这一非常另类、有性格的群体来说,精神上的激励或许是更持久有效的方式。对于每一个为平台或者项目作出贡献的黑客来说,项目组、基金会或者社区都应将给与其相应的荣誉奖励。可以是排行榜、贡献值亦或是某种稀缺头衔等等,使其不仅能被社区其它成员知晓,更能明显区别于普通会员,增强其在社区的存在感、参与感和荣誉感。

2.3  选择靠谱交易所

交易所之所以成为安全事件的重灾区,一方面是由于交易所存储了投资者的巨额数字资产;另一方面,区块链行业发展迅速,中心化交易所的安防建设赶不上其业务的发展速度,特别是各类交易所参差不齐,安全问题非常突出,投资者利益难以得到保障。

为此,去中心化交易所喊的火热,但由于其交易效率难以提升,技术实现难度较大,目前还不能完全取代中心化交易所。因此,从保护切身利益出发,投资者们选择运行持久、可靠有保障的交易平台非常重要。