从The DAO到BEC,SocialChain,Hexagon,再到EOS漏洞,“智能合约”已经成为区块链安全的重灾区。智能合约安全漏洞频现并非偶然,其落地推广可能还需经历一个漫长的技术突破期。
近期,区块链平台EOS智能合约漏洞事件,再次把区块链安全推上了风口浪尖。攻击者可以通过发布包含恶意代码的“智能合约”,经过一系列的操作之后,控制区块链网络中的所有节点,从而为所欲为。
事实上,EOS智能合约漏洞引发的安全事件并不是第一次,距上次发生此类严重漏洞才过去了短短1个月。
今年4月,美蜜币因为智能合约出现重大漏洞而遭到黑客攻击,BEC凭空蒸发了10亿美元,最后价值几乎归零。
就在距BEC现重大漏洞几近归零仅时隔三天,SMT的以太坊智能合约再曝安全漏洞,SMT遭到与BEC类似溢出攻击。数据表明,截止交易停止时间,SMT在火币Pro的价格下跌近20%。
据区块链安全网的数据显示,区块链行业的重大安全事故数量在2018年爆发式增长,因智能合约漏洞而引发的经济损失,也赶超交易平台事故成为了第一名。
为何智能合约漏洞频发?
为什么“智能合约”会成为区块链安全的重灾区,智能合约的漏洞究竟给安全带来了什么样的新挑战?
我们现在通常所说的区块链智能合约,是以太坊为代表的一种交易代码执行的虚拟环境EVM。使用者可以开发自定义的交易逻辑,发布到链上,当交易进行时,链上所有的节点都执行相同的代码,从而同步改变链上数据的状态,其本质是一段运行在区块链网络中的代码,它完成用户所赋予的业务逻辑。
从软件代码开发的角度看,智能合约代码和其它软件代码并没有显著的区别,都是一段程序。但是一段程序用在什么地方、什么场景,往往决定了这段程序代码的重要程度。
普通的软件程序,通常不和资金挂钩,所以即便出现漏洞,也不会产生太大的影响,而智能合约代码一般用来控制资金的流转,因此一旦出现漏洞,产生的影响难以估量。
实际上,在软件开发领域,出现程序漏洞是一个常见现象,只要是由人编写的程序,就一定会出现错误和缺陷。
目前并没有通用的自动化手段,可以验证一段代码是否包含漏洞,一切依赖于开发者的技能水平和测试流程的完善。智能合约代码需要尽量经过多人阅读审核,这样才能降低漏洞出现的概率,防止资金流转发生异常。
然而,区块链是一门比较新的技术,市场上的智能合约开发人员,还没有完全培养到位,对开发者的技术水平、细心程度,同样都有着更高的要求。众多项目团队在技术实力、安全意识与责任意识上存在很大欠缺。
就目前智能合约的应用情状而言,其漏洞发掘存在非常严重的滞后性,往往是在黑客发动攻击后,各开发团队才开始自我审查并进行修复。
从另一个角度看,以太坊在设计之初,将智能合约设计成了一旦部署就不能修改的模式。这种设计有可能是为了提高智能合约的可信性。但是以太坊这种设计本身就违背了程序设计的一般规律,在智能合约出现漏洞的时候可能会造成无法弥补的损失。
同时,以太坊只是一个记录dapp执行结果的区块链,其本身并没有加密货币复式记账所需的utxo模型。重要的token资产本身是需要货币级别的安全程度,以太坊目前的设计更适合游戏积分之类的合约运行结果。
我们可以看到,无论是ETH和EOS,其实都不是面向货币的设计。面向区块链平台的设计,复杂度很高,也蕴含更多安全隐患。
智能合约漏洞该如何应对?
智能合约安全漏洞频现并非偶然,当前数字货币市场鱼龙混杂,智能合约缺乏有效的监管,缺少安全审计流程,其代码安全性与逻辑漏洞仅靠开发人员人工审核,难免存在隐患和漏洞。
对于厂商来说,由于智能合约不可修改的特性,要对上线后发现的漏洞进行有效修复,只能选择重新部署新的合约,这将付出巨大的代价,因此有的厂商可能会选择不响应,不处理。
但如果厂商迟迟不修补漏洞,公众对于漏洞的存在不知情,风险会随着时间的增长迅速膨胀,漏洞一旦爆发可能会造成更大的危害,波及更大的人群,可能会造成很多人的投资瞬间化为乌有。
要应对区块链智能合约的安全漏洞问题,未来需要普遍考虑设计相应的智能合约协商更新机制,降低漏洞修复的成本。
虽然在一些联盟链中,智能合约的设计是可以在部署之后更新的,这种更新需要一定的线下协商流程。
但更现实的是,做出几乎唯一可行的、切实有效的努力——在智能合约上线之前,对其进行全面深入的代码安全审计,尽可能的消除漏洞,降低安全风险。
上线后,一定要注意应急响应,比如监控智能合约有没有异常交易情况。同时,开发业务项目方里要有应急响应团队。
从整个行业生态看,亟待开发出一系列的智能合约验证工具集:开发相关的验证⼯具,提前辅助合约开发者发现问题;开发证明辅助生成⼯具,提⾼形式化验证的⾃动化⽔平;在区块链共识协议中引⼊必要的形式化证明验证流程;支持链下的证明检查流程等等。如果项目方和交易所有相应的漏洞奖励计划,也将促使形成一个健康的生态。
数字货币市场中应用的智能合约就像一个定时炸弹,随时可能被黑客找到引爆点,而智能合约的安全与否直接影响项目安全。在智能合约真正安全突围之前,我们依然要对相关的安全漏洞事件保持警惕,及时做好风险防范。
联系客服