点击上方“Unitimes” 可以订阅哦!
unitimes.io
全球视角,独到见解
北京时间1月16日凌晨,由于以太坊改进提案(EIP 1283)被发现重大安全漏洞,原定于在第 7080000 个区块上进行的君士坦丁堡硬分叉被推迟。该漏洞可能导致“重入攻击”——攻击相关合约、修改用户余额或其他关键变量。
其实这次 EIP 1283 出现的重入攻击在以太坊的发展史上曾出现多次,其中影响最大的一次是The DAO合约的漏洞事件。
image智能合约本质就是一段程序,程序出现bug和漏洞是很正常的事情。但是,由于智能合约一旦发布就无法更改,在发布前的安全审计就显得至关重要。
Quantstamp 就是一个专注于智能合约安全检测的协议。1月17晚,Unitimes 成功举办第19期区块链技术与应用AMA。我们有幸邀请到了Quantstamp 联合创始人兼CTO为大家带来了主题为“拯救智能合约漏洞”的分享。
AMA分为固定问答和自由问答两个环节。
固定问答
1
Unitimes:你好,Steven。欢迎参加Unitimes AMA。请先简单介绍一下你自己以及 Quanstamp。
Steven:大家好,我是 Steven Stewart,Quantstamp 的联合创始人兼首席技术官。2017年夏天,我和 Richard Ma 一起创办了 Quantstamp。Quantamp 构建了一个扫描智能合约安全漏洞的协议,我们还提供智能合约的全面安全审计等服务。
我们创建 Quantstamp 是出于这样一个信仰:由于智能合约涉及的安全问题很多,需要非常成熟的安全工具才能实现主流采用。大家可能还记得新闻报道过的多次智能合约黑客攻击。看到这些消息时,我就想创建一种在智能合约部署到以太坊上之前,可以防止安全漏洞的方法。
我是一个计算机科学家,对解决这样的问题非常感兴趣。所以,我们创建了 Quantstamp!
2
Unitimes:你们项目的进展如何?有没有出来一个可运行的产品?
Steven:当然,我们一直在进步,并且一直在努力工作。在 Richard 和我之前的工作领域里,自我驱动、高效率等等都是必需的核心能力。
从一开始,我们的目标就是用精益、敏捷的方法,并尽可能多地发布一些产品更新。由于我们将研究和开发结合在一起,我们给自己定的是每季度发布一次产品更新。
我们的主要成就是 Quantstamp 协议,目前部署在以太坊主网,这个协议一直在进展当中。例如,我们设计了一个新的用户界面,今年第一季度就会发布出来。顺便说一下,大家可以把你们的智能合约在我们的网站上提交,扫描检测是否存在安全漏洞:https://betanet.quantstamp.com/
我们一直在做这个协议,第一季度也会发布协议的更新。我现在就坐在我们的工程师团队旁边,他们在为协议的下一步做规划,规划的目标是加强去中心化、增加更多新功能。
3
Unitimes:传统软件的安全和区块链上的软件安全有什么区别?
Steven:区块链上的软件——你应该说的是智能合约吧,比如以太坊网络,以及持有大量以太币的去中心化应用程序,例如多重签名钱包和去中心化交易所。
对传统的软件来说,如果发现安全漏洞或者 bug 可以立即修复更新,但智能合约一旦在区块链上发布,就无法更改。合约中的任何错误和漏洞都无法修改。因此,在公开部署之前,必须要找到智能合约中存在的漏洞,并将出现漏洞的可能性降到最低。
从某种意义上来说,由于不可更改这个特性,智能合约设计的风险与那些开发软件设备的风险相似。因此,最好是“第一次就把事情做对做好”。
有几种创建“可升级的智能合约”的方式,但这会带来一些问题:如中心化效应、或者是潜在的复杂治理机制(取决于项目)。
最好是第一次就做好。但犯错是人类的本性,发现错误也是人类的本性,有些人可能会利用这一点。
另一个和传统软件不同的是,传统软件通常是闭源的,智能合约的代码通常是公开发布的,这能增强透明性和公平性,但这也给恶意攻击提供了机会。可以肯定的是,如果你的智能合约有价值,那一定会有人来研究你的代码!
4
Unitimes:一个智能合约被发布之后就无法更改。如果出现漏洞的话该如何处理呢?
Steven:因为智能合约在部署之后无法更改,因此部署后的安全是一个我们在研究的问题。我们正在研究一种通过“保证协议”来解决智能合约的漏洞。
我们把这个协议称为 Quantstamp 安全保证。这是一个允许智能合约的用户和利益相关者与专家一起协作的系统,大家一起合作来帮助确保合约不会被黑客攻击或利用。如果合约被黑客攻击了,用户和利益相关者遭受损失,那么他们会获得相应的赔偿。这个项目目前已经进入测试阶段。
5
Unitimes:智能合约审计的过程是什么样的?
Steven:审计智能合约的过程中,我们的工程师会深入检查该合约的参数,对核心合约的性能进行自动和手动测试,然后对代码进行自动和手动安全分析。我们一般至少有两个工程师先进行独立的审计,然后收集结果并生成一份报告。
我们不仅关注代码错误和安全漏洞(如可重入性),而且还关注参数的变量,以及权力中心化或加密经济激励等设计问题。我们制定了一个很高的标准——我从客户那里听说,与他们合作的其他安全审计相比,我们工作周密、质量高。其中一个原因是,我们雇佣了非常善于分析和注重细节的人,包括拥有博士学位的研究人员,他们对每一个细节都非常挑剔。
最后,我们会生成一份详细的报告,里面有你想知道的每一个细节。未来,我们希望这个工作的大部分都能通过QSP(Quantstamp)协议自动完成。
6
Unitimes:现在有很多不同的智能合约安全审计工具和项目。Quantstamp和它们有什么不同?
Steven:在某种程度上我已经回答了这个问题。更详细地说明一下,我们与其他审计工具不同的是,我们对自己审计的经验和质量感到自豪。我们审计过的智能合约总价值已经超过5亿美元,我们的团队有几百篇谷歌学术引用的论文,这不仅显示了我们工作的质量,也显示了我们对细节的重视。每个审计都由三个安全工程师完成,他们独立分析智能合约,然后将笔记放在一起对比。我们尽最大努力确保穷尽所有方法,我们坚定地为潜在的设计变更、消除中心化等等提供合理论据。
与其他审计工具不同的是,我们还在开发去中心化的系统,如Quantstamp协议和安全保证协议,旨在解决智能合约安全的可扩展性挑战。我们这么做是因为我们想要创新,想帮助这个世界采用智能合约。
7
Unitimes:目前你们主要做以太坊上的智能合约审计,有考虑扩大到其他链吗?
Steven:这个问题让我想起了一个误解,我经常听到很多人说 Quantstamp 是一个“以太坊商店”。实际上,我们已经与部署到其他区块链(如EOS和Wanchain)的客户端进行了合作。我们目前还在研究超级账簿智能合约。虽然我们热爱以太坊,但我们并不局限于任何一个特定的平台。整个加密领域的安全问题都很重要。
8
Unitimes:你对目前dApp的发展状况怎么看?你认为区块链技术大规模采用的主要推动力是什么?
Steven:我们目前处在去中心化软件的早期阶段。目前的状态有时候感觉像是像是一场风暴。很多人都在尝试自己开发dApp,想搞清楚下一个风口在哪里。
我们很多人都想构建基础设施、为开发者构建下一代工具。我们这样做是因为,我们认为,从长远来看这是更聪明的做法。同时,我希望看到新的项目,我经常在想下一个改变游戏规则、能让世界上所有人每天都使用的App会是什么。
我个人认为像安全和可用性这样的问题仍然需要解决,我们在寻找杀手级dApp。似乎我们现在正处在新浪潮的早期阶段——也许是Web 3.0浪潮。
安全对智能合约的主流采用来说非常重要。智能合约的攻击已经造成了数亿美元的损失,随着进入这个领域的开发者越来越多,这个数字会变得越来越大。
我们认为,应用程序的“安全标准”代表着将这一新技术主流安全采用的一条途径,我们创建了智能合约安全联盟来帮助创建和推广这些标准。
除了安全性之外,用户体验和采用也是关键。最近,我们看到一些拥有大量固定受众的公司,比如Line、Messenger 或游戏公司,都涉足了区块链,这可能是第一个杀手级dApp的源头。或许现在参加这个AMA的人就会创造出下一个杀手级应用……谁知道呢?
9
Unitimes:你对当前的“加密寒冬”有什么看法?你觉得这对行业来说是好事还是坏事?
Steven:个人而言,我不担心这个所谓的“寒冬”。从一个技术人员的角度,我认为这个“去信任化的技术”是一个真正的创新,而不是一个骗局。我们正在努力构建这个技术的基础,对 Quantstamp 来说,这意味着推进安全技术,而长期的目标是实现主流采用。
我在很多会议和 meetup 上和很多人交谈过,我理解“加密寒冬”这个概念短期来看是很痛苦的。但从长远来看,这是一次加密领域的“春季大扫除”。例如,我们正在以越来越复杂的方式审计越来越多有趣的aApp。开发人员开始掌握这项技术,学术界也对此产生了更大的兴趣,这应该会带来更多的进步、更高质量的工作。另一个观察结果是,在区块链活动中,我们看到更多的注意力集中在黑客松、研究以及开发等方面,而不是全部集中在投机上。
对以太坊而言,我特别希望看到有关扩展性和共识协议(如 Plasma 和 Casper)的新想法,并且越来越认识到需要应用学术严谨性来构建更强大的平台,同时向整个社区开放讨论,任何人都可以在其中贡献、批评、开发和开展研究活动。
10
Unitimes:你对Quantstamp 2019的发展有什么展望?
Steven:2018年初,我们一直在埋头苦干,严格按照路线图来执行。有时候我们太“埋头”了,也许这对一个全是博士和技术宅的团队来说,这是非常自然的现象。当然,我们仍然在按照路线图执行,2019年也还会如此。
在协议这方面,我们一直在朝更去中心化的方向前进。这需要时间,必须谨慎小心地稳步发展。我们会考虑将我们的一部分代码开源,会继续增加社区参与度,好好测试我们在做的安全保证的项目。
我们会继续做布道者,因为帮助智能合约主流采用是我们使命的一部分。
顺便提一句,我对我们新的UI设计感到非常兴奋,今年第一季度内就会发布。在我看来,dApp领域真的很缺乏好的用户体验。我希望我们新的UI能树立一个好榜样。
自由问答
固定问答环节结束后,参与此次AMA的成员可以自由提问。以下为 Unitimes 从群成员的提问中精选的几个问答:
1
你对以太坊君士坦丁堡硬分叉推迟升级这件事怎么看?
Steven:这说得通。在这里向我们的朋友 ChainSecurity 致敬,他们观察到了EVM的变化,发现了潜在的可重入漏洞。
2
你好Steven。我知道安全审计通常会用形式化验证技术。还有其他的什么技术吗?
Steven:有,比如说渗透测试。很多技术都可以归在形式化验证技术的类别下面。无论如何,人工代码审计也还是很重要的。
3
Steven 谢谢你的分享。我有两个问题:1)如果我发现了一个bug或者想在已经部署了的合约上加一个新功能,如何才能在不丢失原来的数据的情况下升级成新合约?2)你们的团队会开发一个像 Zepplin-Solidity 那样的开源库来提高合约安全吗?
Steven:1)智能合约有一些设计模式,可以将逻辑(可能存在bug)和数据分开。我们使用这种模式与测试网络协议智能合约中使用了这种模式。
2)目前我们还没有发布这样的开源库的计划。但是,我们的工程团队经常在内部讨论这个问题。我们确实计划今年开放一些代码库。我们的合作伙伴和大学里的合作者,他们开发的工具要么是已经是开源的,要么未来会开源。
4
你好,Steven。你们做了那么多审计,在审计的过程中有没有发现什么有趣的东西?
Steven:对我来说最有趣的是世界各地的开发人员的各种想法以及他们各种各样的项目。他们每个人都对安全问题十分关注,这对 Quantstamp 来说是一个好现象,因为这会让我们一直有事情可做。
5
一个审计通常要多久才能完成?
Steven:协议处理的大多数智能合约扫描都是很快的,可以帮助识别许多对人类来说很难或耗时的问题。
而人工代码审核取决于源代码的大小和复杂性以及其他因素,例如是否存在写得很好的规范或白皮书、代码的质量和文档等等。
6
如果一个黑客发现了漏洞,他会选择为了拿到赏金而告诉你这个漏洞,还是等待机会进行攻击?
Steven:如果一个黑客发现了智能合约中的漏洞,该怎么做取决于他本人。如果那个黑客有道德心的话,他会把这个漏洞报告给开发者。
赏金计划肯定有助于激励对大家寻找漏洞,这也是有道德的黑客努力赚取资金的好方法。
7
我听说你们会挑选 Quantstamp 协议节点来监督防止恶意攻击的方法。你们如何挑选这个节点,有什么标准吗?
Steven:我们协议的下一阶段有“监管”网络的概念。首先,将根据信任来选择这些节点。我们目前正在分析激励模式,并将尝试这一概念。最终目标是“去信任”的特性,这可以通过适当设计的加密经济激励机制来实现。
以上是本次 AMA 的全部内容,非常感谢社群成员对 Unitimes 的大力支持,感谢Steven~
往期AMA精选:
【本文版权属于Unitimes,转载请保留版权信息。未经授权,不得以任何方式加以使用,包括转载、摘编、复制或建立镜像。Unitimes将追究侵权者的法律责任。合作或授权请联系contact@unitimes.media或添加微信unitimes2017】
网友评论