新一代安全创企该如何保护区块链代码?

 

9月初,由Cameron和Tyler Winklevoss创立的加密货币公司Gemini Trust宣布,它已经获得纽约州监管机构的批准,推出一套与美元价值相关的数字通证。

这些名为Gemini Dollars的通证可以在以太坊区块链上,通过名为智能合约的专门程序从一个人发送给另一个人。为了证实其通证实际上是由传统的美元所支持的,Gemini发布了一份独立会计师事务所的报告。该公司还发布了一份独立的审计报告,重点没有关注在财务,而是基础软件代码上,该代码来自纽约一家名为Trail of Bits的安全公司。

“评估的目的是发现漏洞,从而让攻击者无法进行只针对发行者的行动,”Trail of Bits首席执行官Dan Guido在Gemini发布的一封信中写道,并解释称,测试中发现的所有问题都已经得到解决。

Trail of Bits是为智能合约提供技术安全审计的几家公司之一,这些智能合约处理从为区块链初创企业筹集资金的ICO到建立在区块链网络之上的复杂数字市场的所有事务。智能合约是由支持区块链的计算机运行的专门程序,通常在满足某些条件时,有权接收和分发加密货币或其他数字通证。专家们表示,编写它们需要新的思维方式,这可能会让没有经验的程序员出错。

悉尼区块链软件和网络安全公司Sigma Prime的董事Mehdi Zerouali说:“实际上,编写智能合约是一个全新的、不同的范例。”

“有些错误非常可怕”

所有的软件都可能有漏洞,但是由于智能合约通常是确定谁拥有价值加密资产的唯一方法,因此他们代码中的错误可能会导致特别严重的后果。当然,如果发现了它们,黑客们会急切地利用它们窃取数字资产。根据ICO跟踪公司CoinSchedule的数据,仅在今年,各大公司就通过ICO筹集了预计超过200亿美元的资金。

“有些错误是非常可怕的,”Guido表示。“如果你产生了它们,它们不仅非常严重,而且对于查看你的智能合约代码的人来说也非常明显。”

最著名的错误是在一个去中心化、以以太坊为基础的投资基金DAO的代码中,DAO指的是分布式自治组织。2016年,黑客利用其代码中的漏洞窃取了大约5000万美元的加密货币,尽管后来以太坊自己进行了调整,返还了被盗的资金。

此后,安全专家一直致力于寻找可能导致智能合约失灵的因素,并开发工具来帮助自动检查代码中的错误。他们还对新的智能合约进行了审计,并经常公开发布,这有助于让投资者和终端用户放心,他们不会因为编程故障而损失资金。

Trail of Bits已经发布了许多开源工具来分析和测试用Solidity编写的程序,Solidity是一种常用于编写智能合约的编程语言。Guido说,开发Solidity程序的标准工具没有那些更成熟的语言工具复杂,所以在专门软件部署之前,它们会存在漏洞。

“它缺乏其他现代语言所具备的许多安全保障,”他说。

当智能合约成为愚蠢错误的牺牲品时

智能合约可能会成为一些同样类型错误的牺牲品,这些错误,比如基本的算术错误或者程序员意外地为多个值重用同一个变量名,可能会影响其他软件。但是它们也可能受到特殊错误类别的影响:对区块链代码可用计算能力的限制可以被用来触发拒绝服务攻击,这使得智能合约中包含的数据超出了它们的处理能力。某些数值大小的上限会导致错误,过大的数字会归零,类似臭名昭著的Y2K错误。这可能会导致大账户被减少到只有几便士,甚至负结余的账户会被视为拥有巨额的正结余。

一些不安全的代码可以用自动分析工具检测到,无需太多人工干预:瑞士创企ChainSecurity的联合创始人兼首席科学家Petar Tsankov说,如果合约允许任何用户提取资金,这可能是一个错误。该创企来自于瑞士知名的科技大学苏黎世联邦理工大学。ChainSecurity已经开发了一种叫做Securify的工具,它可以快速发现并标记Solidify代码中的潜在问题。

但是,其他的漏洞只有在合约实际工作的背景下才能被发现,这意味着安全审计的第一阶段通常包括与开发人员坐下来,了解他们的合约希望实现什么。

“通常,关于合约应该做什么有非常非正式的文件,”Tsankov说。

然后,通常会有人工分析和自动测试相结合的方式来确定合约是否有可能违反其规范。Trail of Bits开发了一个名为Echidna的工具,它可以通过各种输入快速执行智能合约,寻找让代码产生问题的方法。当发现错误时,安全测试人员会为开发人员标记它们,并帮助确保它们在代码部署到实时的公共区块链之前得到解决。

安全公司通常说,随着他们了解常见错误,他们的客户越来越擅长编写安全智能合约代码。Zerouali说,随着技术的成熟和程序员分享有效的实践,这种模式在包括网络本身在内的科技行业的其他角落已经出现过。

但与此同时,一度只需要对ICO背后的合约进行审计的加密初创公司,现在正利用他们的ICO收入来打造更复杂的产品。Tsankov说,这包括更复杂的智能合约,需要对其自身的缺陷进行审计。

“现在,一切又回归原位,”他说。“复杂程度也正在迅速上升。”