链安科技杨霞教授:EOS主网上线在即,智能合约安全由VaaS来保障 ...
记者:铅笔盒
历时一年的EOS众筹终于在本月初圆满落下帷幕,而这一年40亿美金的ICO也成就了目前为止加密货币历史上的又一之最——耗时最久,金额最大。随之而来的就是对EOS的潜力果真能与如此巨额估值相匹配的质疑,大众对这一史上最大ICO区块链项目的期待越高,争议也就越大。巨大的融资金融以及追捧,迅速将EOS推向了风口浪尖,支持者与反对者各执一词,EOS主网上线喜忧参半。
而就在EOS程序即将上线之际,360发现的软件漏洞更是给了EOS当头一棒,但除了平台的基础漏洞之外,智能合约漏洞的问题也是众人关注的焦点。过去种种以太坊智能合约漏洞在带来损失的同时,也给区块链技术蒙上了一层阴影。伴随着EOS主网上线,如何有效保障智能合约的安全,减少安全事件的发生,给大众以信心,也是未来EOS平台上的项目方需要注意的问题。为此,区块链铅笔(Chainb.com)特别邀请到了形式化验证专家,成都链安科技创始人杨霞教授为我们谈谈她的看法。
成都链安科技创始人:杨霞教授
区块链铅笔:回顾区块链发展历程,这项技术容易遭黑客攻击的领域都有哪些?哪个方面又会是黑客攻击的最主要目标?从您专业的角度来看,造成一系列安全事件以及黑客攻击的主要原因又在哪里?
杨教授:区块链技术容易遭受黑客攻击的包括区块链底层平台、区块链智能合约两个方面。而智能合约由于代码小,复杂度较低,攻击较方便,因此黑客攻击的最主要目标为智能合约。造成这些的攻击的主要原因在于这些程序自身存在安全漏洞或者逻辑漏洞。
区块链铅笔:区块链的安全问题一直是所有人的心腹之患,每一次安全事件的发生都会造成币市恐慌从而引发瀑布。而对于行业来说,每一次安全问题的暴露无疑是给区块链技术发展的当头一棒,究竟区块链的安全问题是与生俱来不可攻克,还是采取适当的举措可以解决?又有什么样的方式修复这些安全隐患?
杨教授:区块链作为一个新兴技术,出现安全事件是可以理解的。任何软件系统都不可避免的存在bug或者安全漏洞,也就是说这些安全问题不只是存在于区块链平台中。但是由于区块链平台一旦出现安全问题将会带来巨大的财产损失,从而造成币市恐慌。这些安全问题是可以采取适当措施进行解决的,比如对在智能合约部署之前,对其进行严格的安全审计,是可以有效提高智能合约程序的安全性,提前预防安全隐患。我们的VaaS智能合约安全审计平台,采用了形式化验证方法和技术,并且率先实现了自动化检测合约安全漏洞的工具。
区块链铅笔:最初是如何想到使用形式化验证的方法来检测智能合约漏洞的?
杨教授:形式化验证作为一种大家公认的提高安全关键软件功能正确性和安全性的一种有效手段,并且在军事、航空、航天等安全关键系统中得到了应用。区块链作为一个有着大量数字货币交易的平台,其所面临的安全问题及其带来的严重后果不亚于军事等安全关键系统。因此,基于我原来在形式化验证方面的研究成果和经验,我萌生了将二者结合的想法。
区块链铅笔:形式化验证方法如何对智能合约的漏洞起到预防作用?采用形式化验证又会对智能合约的安全性带来多大的改善?
杨教授:在智能合约部署之前,对其代码和文档进行形式化建模,然后通过数学的手段对代码的安全性和功能正确性进行严格的证明,可有效检测出智能合约是否存在安全漏洞和逻辑漏洞,防止被黑客攻击。该方法可以有效弥补传统的靠人工经验查找代码逻辑漏洞的缺陷。如果每个智能合约在部署之前,都进行完备的形式化验证,可极大提高其安全性,防止被攻击,保护用户财产。
区块链铅笔:您在两年前就开始了使用形式化验证检查以太坊智能合约漏洞的研究,如今我们也看到了VaaS平台的诞生,那么到目前为止通过该平台已帮助发现多少智能合约漏洞?
杨教授:自2016年下半年开始,我尝试用形式化验证的方法提高智能合约安全性,并且研制了第一个高度自动化的智能合约安全审计平台VaaS(同时支持EOS和以太坊平台),能够快速定位到出现安全漏洞的代码位置,并生成安全审计报告。该方法可以有效的为智能合约提供安全审计,提高其安全性。我们借助于VaaS平台,对以太坊平台的100多个智能合约进行了安全审计,发现了RMC,UET 等合约存在严重的溢出类安全漏洞和逻辑漏洞。通过VaaS智能合约安全审计平台可以对智能合约进行整型溢出审计、可重入攻击审计、异常可达状态审计、多签名钱包审计、执行顺序依赖审计、时间戳依赖审计、Tx.origin漏洞审计、拒绝服务攻击审计等10多种常规安全漏洞和bugs进行“一键式”自动化检查。这种自动化的智能合约审计方式,提高了检查效率和准确度,再以人工方式对智能合约代码逐行复核,保证审计质量。
区块链铅笔:形式化验证是指根据某个或某些形式规范或属性,使用数学推理来验证设计意图(指标)在实现(RTL)中是否得以贯彻的一种方法,那么VaaS平台是如何实现对智能合约各种属性的检查与验证的呢?可以举例说明一下吗?
杨教授:VaaS平台使用了已经广泛应用于航空、航天、军事等安全关键领域的形式化验证技术,通过对合约文档和和代码进行形式化的建模,通过数学推理和证明的方式验证智能合约的功能正确性和安全属性。可以有效的发现代码的逻辑漏洞和安全漏洞,弥补人工方式对逻辑漏洞查找的不足。以近期频发的溢出类安全漏洞属性检查为例展示如何通过形式化验证的手段对该漏洞进行检测的过程:
如检查代码 int8 c=a+b是否存在溢出漏洞,下面展示对这行代码的功能正确性和安全属性的证明过程;
我们首先对整数类型建模,定义形式化规则“Int8.repr: Z -> int8”,该规则通过截取纯数学整数(取值范围从无穷小到无穷大)的低8位数值得到一个8位长度的机器整数。然后写加法运算的形式化规范,如下:
// 设置代码执行的前提条件,保证a和b的类型是8位有符号机器整数;
// 加法运算的源码程序;
{(int8.repr(a+b))
/ ((Int8.repr (a+b)) = (a+b))} ; // 设置代码正确执行的后置条件。其中(int8.repr(a+b))描述是为了证明代码的功能正确性是否满足,即需要证明源代码是对a和b进行求和而不是求差或任何其他运算逻辑,并且将运算结果转换为int8类型;此外,需要对是否溢出的安全属性进行证明,因此添加后置条件 ((Int8.repr (a+b)) = (a+b)),因为一旦a+b>int8.max_singed 或a+b<int8.min_signed都将导致 (Int8.repr (a+b)) ≠ (a+b)。
最后,根据前置条件证明代码的执行是否满足上述后置条件。如果产生一个不可证明结果,说明程序功能不正确,或者存在溢出安全漏洞。然后根据证明结果,对源程序进行分析修改,然后再重新证明,直到证明通过为止。
我们采用这种数学的证明方式将代码形式化描述为公式,并对其属性进行同样对其他逻辑漏洞和安全漏洞进行证明,基于此原理,我们实现了自动化的验证工具,能够方便,快速的验证出代码的功能正确性和安全属性。
区块链铅笔:随着EOS主网启动在即,EOS智能合约是否会像以太坊智能合约那样出现一系列安全事件?有没有办法防患于未然?对此,VaaS又做了哪些努力?
杨教授:安全是一个持续完善的过程,没有绝对的安全,越是复杂的软件系统,出现安全事件的概率越高,所以不能保证EOS智能合约不会出现类似以太坊智能合约所面临的安全事件。为了避免安全事件的发生,最好的办法就是提高软件开发人员的安全意识,并对智能合约在部署之前进行全面的安全审计。VaaS平台正是为此应运而生的,VaaS专注于智能合约的安全保障,并且为EOS智能合约量身打造了一套自动化的安全审计工具,可以“一键式”自动化检查出EOS合约常见的安全漏洞,事先为智能合约做好安全保障。
区块链铅笔:作为一个致力于EOS社区安全的形式化验证平台,针对前几天360发现的EOS安全漏洞,可以谈谈您的看法吗?VaaS对EOS未来可能会出现安全漏洞是否预先设想过解决方案或预防措施呢?
杨教授:区块链安全的细分领域有很多:系统平台级安全、区块链平台安全、智能合约安全、DAPP安全等,360发现的是EOS平台的安全漏洞,我们目前主要专注于智能合约安全,未来也会关注区块链平台的安全问题。VaaS平台对EOS未来可能会出现的安全漏洞已经做好了安全预防措施和解决方案,比如某些安全漏洞我们可以“一键式”自动检查。
区块链铅笔:在EOS社区生态中,VaaS计划扮演一种什么样的角色,如何发挥作用,促进生态发展?
杨教授:在EOS社区生态中,VaaS一直在努力使其智能合约更加安全,我们将会为上线的智能合约提供安全审计服务,尽最大努力帮助智能合约开发人员查抄安全漏洞和逻辑漏洞,提高智能合约的安全性。使其在部署之前发现并解决问题,避免合约上线后出现漏洞带来重大损失。
区块链铅笔:从整个区块链行业的角度来看,未来VaaS又有着什么样的规划与布局?
杨教授:目前区块链行业处于百家争鸣的态势,因此未来我们将为更多的区块链平台提供从智能合约开发、安全审计等一条龙服务,尽我们最大努力为区块链安全贡献一份力量。
安全固然重要,但问题不是区块链所独有,也不是与生俱来不可攻克,若以一个安全问题就断言未来,未免有些以偏概全。
目前,EOS主网上线的工作正在有条不紊地进行着,预计今晚21:00将举行EOS全球会议投票决定是否开放主网。虽然EOS应用及生态的未来走向我们无法得知,但我们知道的是,当社区内的所有人都齐心协力,众志成城的时候,力量就无比的强大。而有着形式化验证为智能合约保驾护航,无疑是给EOS和以太坊又增加了一层保障。
Scan QR code with WeChat