从The DAO到EOS漏洞 智能合约成区块链安全的重灾区

两天前,360安全卫士在官方微博发布消息称:360公司Vulcan(伏尔甘)团队发现了区块链平台EOS的一系列高危安全漏洞。经验证,其中部分漏洞可以在EOS节点上远程执行任意代码,即可通过远程攻击,直接控制和接管EOS上运行的所有节点。

EOS被称为区块链3.0,是引入的一种新区块链架构,旨在实现分布式应用的性能扩展。但是,EOS网络还未正式上线,即在自身安全方面遭遇“打击”。

这种安全问题,已经成为区块链世界最大的隐患。比如之前发生的The DAO事件,The DAO是由Slock.it发起的一个众筹项目,是运行在以太坊上的智能合约。但合约中存在的漏洞,让攻击者可以非法转移以太币。后来,虽然夺回以太币,但是以太坊却出现分叉,变成两条链。

简单说,通过发布包含恶意代码的“智能合约”,攻击者经过一系列操作后,可控制区块链网络中的所有节点,从而“为所欲为”。

从The DAO到BEC、SocialChain、Hexagon再到EOS漏洞,“智能合约”已经成为区块链安全的重灾区。

那么,何为智能合约?

百度百科介绍:智能合约是一种旨在以信息化方式传播、验证或执行合同的计算机协议。智能合约允许在没有第三方的情况下进行可信交易,这些交易可追踪且不可逆转。

智能合约概念于1994年由Nick Szabo首次提出。他是如此定义,“一个智能合约是一套以数字形式定义的承诺,包括合约参与方可以在上面执行这些承诺的协议。”

而360的相关研究专家则认为,“我们现在所说的区块链智能合约以以太坊为代表,其作者意识到,在区块链系统中,交易逻辑是可以和底层系统机制分离的。”

就是底层系统负责交易块的创建和验证,记账者的共识达成等基础功能,交易本身做什么事情可通过二次编程的方式去定义。

他设计了一种交易代码执行的虚拟环境EVM,使用者可以开发自定义的交易逻辑,发布到链上,当交易进行时,链上所有的节点都执行相同的代码,从而同步改变链上数据的状态。他为这种代码使用了“智能合约”这个名字。

从本质上讲,智能合约就是一段运行在区块链网络中的代码。在这个合约中,交易双方的权利和义务已经规定好,比如一个销售合约,卖家承诺发送货物,买家承诺支付合理的货款。

正如360安全团队表示,“只要是由人编写的程序,就一定会出现错误和缺陷。以太坊这种设计本身就违背了程序设计的一般规律,在智能合约出现漏洞的时候可能会造成无法弥补的损失。”

据了解,以太坊将智能合约设计成一旦部署就不能修改的模式。这种模式虽然是为了提高智能合约的可信性,但是却给了攻击者很大的机会。

如何应对智能合约漏洞?

无疑,在上线之前,需要对智能合约进行全面深入的代码安全审计,尽可能消除漏洞,降低安全风险。

360代码卫士团队安全专家给出6种常见的漏洞类型及可能造成的风险:

1. 整数溢出

智能合约中危险的数值操作

可能导致合约失效、无限发币等风险

2. 越权访问

智能合约中对访问控制处理不当

可能导致越权发币风险

3. 信息泄露

硬编码地址等

可能导致重要信息的泄露

4. 逻辑错误

代理转账函数缺失必要校验

可能导致基于重入漏洞的恶意转账等风险

5. 拒绝服务

循环语句、递归函数、外部合约调用等处理不当

可能导致无限循环、递归栈耗尽等拒绝服务风险

6. 函数误用

伪随机函数调用和接口函数实现问题

可能导致可预测随机数、接口函数返回异常等风险

发表评论
留言与评论(共有 0 条评论)
   
验证码:

相关文章

推荐文章

'); })();