如何确保自身区块链项目代码不受漏洞影响
随着区块链行业130的发9370展,项6165目如雨后春笋般应运而生,但是在大力开拓新项目的同时,很多人没有注意到代码审计这一块,那么什么是代码审计呢?所谓代码审计,就是检查源代码的安全缺陷,检查程序源代码是否存在安全隐患,或者编码不规范的地方安全审计的目的是什么。那么代码审计有什么作用呢?
据统计,2018年全球区块链领域发生近百起安全事件,损失超20亿美元,相较于2017年增长了538%。比特币的底层技术“区块链”面临着来自数据层、网络层、共识层、激励层、合约层、应用层的安全风险,安全攻击方式层出不穷,防不胜防。安全攻击主要发生在应用层,其中智能合约是区块链安全的重灾区。
而且还发生了很多的安全事件,影响较大的例如MtGox事件,MtGox是当时全球最大比特币交易平台,处理的比特币交易占全球70%。2014年,MtGox遭遇了最严重的黑客攻击,随后MtGox宣布暂停交易,理由是其安全软件存在漏洞。两周后,网站突然关闭,MtGox申请破产。
据MtGox估计,公司的比特币投资损失约合4.8亿美元,其中包括客户的75万单位比特币和公司自己持有的10万单位,合计约占全球比特币发行量的7%。此次事件导致投资者信心受挫,比特币直接暴跌36%。
还有非常多别的项目同样受到巨大的损失,仔细研究不难发现:在区块链的安全事件中,大多都是由于源代码存在漏洞而使黑客趁虚而入。智能合约受到区块链本身保护,所以智能合约代码可以最大限度的开源和让人阅读。但是代码的公开性使得黑客容易掌握代码的缺陷,进一步利用代码缺陷触发条件改变智能合约执行结果,使得区块链项目存在巨大的经济隐患。所以智能合约代码的开源性需要代码的高可靠性,这种可靠性要求100%的正确。
但是,对于程序员来说,写一个完全没有漏洞的代码实在是太难了,即使采取了所有可能的预防措施,在复杂的软件中也总会出现没有预料到的漏洞。所以,代码审计的重要性不言而喻。
通过代码审计,检查源代码中的安全缺陷,检查程序源代码是否存在安全隐患,或者有编码不规范的地方,通过自动化工具或者人工审查的方式,对程序源代码逐条进行检查和分析,发现这些源代码缺陷引发的安全漏洞,并提供代码修订措施和建议。
目前已经服务的有交易所、钱包、公链和智能合约等代码审计,为区块链行业保驾护航,合作的慢雾科技,Certik等全球知名审计公司,我们有着优质的服务满足客户的需求,欢迎合作伙伴合作交流,共同探讨!
发生过的案例:
一、区块链代码审计可以解决哪些问题:让黑客无孔可入
随着BTC、ETH、EOS等区块链项目的迅速发展,区块链项目已经进入了智能合约时代,但是智能合约自身的正确性和安全性却面临着巨大的问题。
也就是说任何一个项目在使用区块链时都有可能走向歧途,不能完全保证代码的准确性。就像每个人在电脑打字时都会打错字一样,程序员在输入代码时也会存在笔误和错漏。
而区块链中的基础:智能合约代码的开源性需要代码的高可靠性,这种可靠性要求100%的正确。
差之毫厘,谬以千里。
用专业的术语来说:
类似比特币这样的代码全部公开,用智能合约代码存储在区块链上,与交易数据一样受到区块链的加密保护,要想修改智能合约代码需要掌握51%的算力,因此,智能合约代码的防篡改性得到大大提升。
智能合约受到区块链本身保护,所以智能合约代码可以最大限度的开源和让人阅读。智能合约解决了可以公开代码并保障其安全的问题,但是代码的公开性使得黑客容易掌握代码的缺陷,进一步利用代码缺陷触发条件改变智能合约执行结果,使得区块链项目存在巨大的经济隐患。
就像,我们在银行里转账,每一个账户的信息都是对的,转账才能够是正确的,你的财产才可以安全被保护,所以:区块链代码中一个字都不能错。
二、区块链代码错误导致的严重后果
区块链中的智能合约代码质量不好造成了许多严重的后果。
目前来看,许多交易所和代币项目在上交易所之前没有经过区块链代码审计,造成了许多虚拟货币被盗窃的黑客事件。
1、SMT项目方与美国BEC代币的安全漏洞
2018年4月25日凌晨,SmartMesh(SMT)项目方反馈发现其交易存在异常问题,经初步排查,SMT的以太坊智能合约存在漏洞。受此影响,火币Pro目前暂停所有币种的充提币业务。
另据媒体报道,发现SMT与美图BEC代币存类似的安全漏洞,即可通过溢出攻击可以收到大量的代币。
2、美图BEC的异常交易漏洞
2018年4月22日,美图BEC出现异常交易,据分析,BEC 智能合约中的batchTransfer批量转账函数存在漏洞,攻击者可传入很大的value数值,使cnt * value后超过unit256的最大值使其溢出导致amount变为0。
3、Parity多签名钱包漏洞
2017年7月,Parity多签名钱包由于其智能合约代码中存在漏洞,被黑客盗取时价超过3000万美金的ETH。
4、黑客盗币漏洞
2016年6月由于智能合约的一个错误,黑客从DAO偷走了价值5500万美元的ETH。
代码的安全缺陷倒逼智能合约的代码自动审计。
三、区块链代码审计成就完美合约
区块链智能合约通过代码建立一套“法律合同”,软件工程师创造一个完全无误差的代码是不可能的,程序员总存在疏忽的地方。红岸科技和国防科技大学的Ulord区块链项目研究团队对市面上的区块链智能合约进行了审计,他们的研究发现:
对所有的程序员来说,写一个没有bug的代码实在是太难了,即使采取了所有可能的预防措施,在复杂的软件中也总会出现没有预料到的执行路径或可能的漏洞。
这是为什么要代码审计最重要的原因之一。
区块链中的 “法律合同”是一项受解释和仲裁的约束,程序员很难去创造一个缜密的合约。在任意一个大的合约里,可能出现的文稿错误以及一些条款需要解释和仲裁。
同时,软件工程师不是法律专家,反之亦然。起草一份好的合约需要各种各样的技能,不一定与编写的计算机程序兼容。
因此,智能合约代码在一定程度上都可能存在安全隐患。传统的智能合约代码审计主要利用人工,依靠code reviewer阅读智能合约代码。人工代码审计最终还是依赖人的经验,代码审计效果不明显,针对目前ETH大量代币的智能合约,人工审计工作量大,难以高效的完成工作。
在区块链领域从事代码审计业务的项目公司较少,目前每个代币在上交易所之前,其区块链智能合约代码由交易所进行审察和判定,但交易所有时并不能完全有效地判断合约是否完美。
智能化代码审计,利用计算机进行稳健性检验是当前代码审计最重要的方式,掌握该项技术标准的国内公司并不多。
但,区块链代码审计的重要性不言而喻,区块链世界本身是相当安全的,但是由于人为撰写代码的问题,不可能完美,必须加强代码有效性的识别。