当前,号称“最安全、最可靠、最方便”的智能合约技术漏洞百出,因智能合约漏洞导致的数值货币被盗事件时有发生:
2016年6月17日,由于以太坊的智能合约存在着重大缺陷,区块链业界最大的众筹项目TheDAO遭到攻击,导致300多万以太币资产被分离出The DAO 资产池,The DAO直接宣布破产。
2017年7月21日,智能合约编码公司Parity警告1.5版本及之后的钱包软件存在漏洞,据Etherscan.io的数据确认有价值3000万美元的15万以太币被盗。
2017年11月8日,以太坊Parity钱包再出现重大bug,多重签名代码漏洞(合约代码权限未作限制)被黑客利用,导致上亿美元资金被冻结。
今年4月22日中午,有黑客利用以太坊 ERC-20智能合约中BatchOverFlow漏洞(数值溢出)攻击BEC(美链的代币“美蜜”)智能合约,成功向两个地址转出了天量级别的BEC代币,导致市场上海量BEC被抛售。此事使得当日BEC的价值几乎归零。64亿人民币瞬间蒸发。
今年 4月25日,另一个智能合约SmartMesh(SMT)曝出漏洞,交易所表示,因SMT出现异常交易,各交易平台暂停SMT的充提和交易。
对于已经发生的“智能合约惨案”,无论是资产冻结还是各种分叉,合约漏洞所带来的损失都是无法挽回的。
总结了很多起因智能合约漏洞导致的数字货币被盗事件后我们发现,其实并不是智能合约技术本身有问题,而是在实际编写中出现了漏洞,那么在实际开发中我们该如何防范风险?
什么是合约安全?
死循环?数值溢出?可重入的代码?
区块链从本质上来说,就是一种共享的会计分类账簿,可以利用虚拟加密货币和计算机网络来追踪与记录各种资产的状态,同时有效保证分类账簿的安全,以防出现一些恶意篡改现象。
区块链交易由所谓的“智能合约”管理。智能合约一旦提交后,能够无需中介的参与自动执行,并且没有人可以阻止它的运行。如果智能合约开发者疏忽或者测试不充分,而造成智能合约的代码有漏洞的话,就非常容易被黑客利用并攻击。并且越是功能强大的智能合约,就越是逻辑复杂,也越容易出现逻辑上的漏洞。
而我们要做的就是,从源头上避免智能合约漏洞,HyperFlow就是为合约上链之前建立的一道安全屏障。
列举几个著名的合约漏洞:
HyperFlow能做什么?
一键检测智能合约
HyperFlow集成了基于多种安全规则库的代码分析器,其基础规则库涵盖几乎所有的solidity安全规范,且支持开发者动态添加自己的规则。
在合约编译的同时,HyperFlow还将使用形式化验证校验方法分析合约代码块的执行安全性。HyperFlow将合约转化为数学模型,进行形式化验证,并生成报告,指明合约中哪一行可能出现漏洞,系统在什么状态或条件下可能被侵入,并提供完善的解决方案。
在此,我们回顾下近期美链(BEC)的智能合约危机:
代码很简单,batchTransfer函数就是分别将固定的value转给_receivers数组中的所有地址。
事实证明,下面这行出现一个常见的数值溢出问题
这种溢出让黑客有机会提取超过了账户余额的金额。当黑客使用2个地址的动态数组,value值为2255,上述的校验1、校验2都会通过,最后的结果是合约成功转了2256个BEC给黑客提供的2个账户。
这些类型的bug暴露之后通常是直截了当的,但当你试图从一堆代码中找到它的时候,这种类型的bug是不那么容易被发现的。细微的bug总是埋在深处,很难察觉。
如果我告诉你,智能合约安全校验平台——HyperFlow可以轻松的追踪到这个错误,并且它还会给你提供合理的解决方案呢?请看如下
我们新增了*SafeMath*类库,专门用于合约中的数值计算,并强制开发者使用*SafeMath*。
可视化的智能合约编辑器
HyperFlow拥有良好的人机交互界面,支持开发者在线编辑智能合约,目前除主流的solidity语言外,还将支持java、javaScript等语言开发智能合约。
HyperFlow还将面向开发者提供一些实用的API供调用,例如合约编译等。
智能合约开发规范
以太坊和其他复杂的区块链项目都处于早期阶段并且有很强的实验性质。因此,随着新的bug和安全漏洞被发现,新的功能不断被开发出来,其面临的安全威胁也是不断变化的。
相比于传统的web开发和移动开发,智能合约开发都有更大的挑战。因此,仅仅防范已知的漏洞是不够的,你还需要学习新的开发理念。HyperFlow针对开发人员编写一套安全的智能合约开发规范,它将形成一套区块链理念开发的标准思维。
支持合约功能和流程化测试
HyperFlow面向所有开发者,是一款集开发、测试及安全检测一体的智能合约工具。
在以EVM为代表的智能合约虚拟机中,智能合约的整个运行环境都是一个沙盒,HyperFlow将为开发者提供便捷的合约测试环境,包括合约单步测试和多合约组合测试。
另外,智能合约的性能也是影响区块链项目效率的重要部分,一份好的智能合约应当尽量优化计算复杂度。HyperFlow将支持智能合约的性能测试。
此外除EVM外,HyperFlow将支持更多智能合约开发语言、多种合约执行引等,其中包括趣链科技自主平台Hyperchain支持的Java合约、Js合约等。未来HyperFlow还将针对不同场景下的合约安全问题,提出多种合理的解决方案,敬请拭目以待!
趣链不仅仅拥有国产自主可控的底层区块链平台,同时也在为区块链开发(尤其是智能合约开发),协定更完善、安全、高效的代码标准和项目规范,与广大合作伙伴和开发者打造区块链研发和应用的生态,共同推动区块链行业的应用发展。
领取专属 10元无门槛券
私享最新 技术干货