星鉴网>IPFS热点>区块链智能合约安全性评估

区块链智能合约安全性评估

2018/10/20 21:47:57 1075人阅读

【导读】 区块链安全不容小视!


大家晚上好。非常荣幸能来到星鉴的分享会。我是刘鹏,来自Armors Labs研究院。

我目前主要负责以太坊和EOS的合约库开发及相关智能合约审计工作。很荣幸能在这里和大家探讨安全方面的话题。

我先简单介绍一下Armors Labs。

Armors Labs从智能合约全生态平台延展到整体的区块链安全。Armors致力于打造一整套完整的智能合约防御、监测以及故障阻断及升级体系,提供开源的智能合约引擎,并逐步适配所有流行的底层公有链。同时,Armors 提供最专业的钱包及交易所安全解决方案,全维度保障区块链整体安全。

今天晚上我们一起聊三个话题

1.     哪些区块链项目容易被攻击导致币价归零

2.     投资者如何分析一个项目的代码质量

3.     投资者需要重视交易所的哪些安全问题

 

1.区块链行业发展路径回顾

我们先简单回顾一下区块链发展的路径。

区块链的发展经历了三个时代,我们分别定义为区块链1.0,2.0,3.0.



1.0时代的典型代表是大家熟悉的比特币。

2.0时代的典型代表是以太坊

我们现在正处于2.0时代,大家都在以数字货币为出发点,研究区块链的发展,寻找具体业务的落地方式。


 

3.0时代的定义叫可编程社会。链塔数据BlockData发布了《 2018 年 8 月以太坊DApp数据分析报告》,报告显示,以太坊上的DApp数量多达 775 个,形成了一个较为完善的开发生态圈,累计交易笔数多达 3 亿,累计交易金额超过 59 亿ETH。以太坊的累计用户已经超过 3587 万人,日均活跃人数多达 20 万人。随着越来越多的Dapp出现,生态的逐渐发展,区块链将会真正进入到高速发展期。


 

 

2. 哪些区块链项目容易被攻击导致币价归零

以太坊中的所有的Dapp都需要通过智能合约来实现,由于智能合约被部署到公链上以后,难以被修改,所以才具有了一定的公信力。现在的智能合约大部分都与数字货币有关,其中对应的市场价值非常庞大,成为了攻击者眼中的蛋糕。

根据腾讯上半年的报告统计,因区块链自身问题导致的损失达到12.5亿,其中智能合约的问题占了较大的比重。

现在最容易被攻击的就是各种菠菜类的合约,单纯的攻击token类合约的情况只有在合约出现漏洞的时候才会发生。

FOMO3D游戏中的随机糖果被攻击者大量获取,就是攻击者利用智能合约的随机数漏洞发起攻击的一个典型代表。这一次的事件中,攻击者通过攻击合约生成的临时合约,不断的对FOMO3D的主合约进行攻击。由于FOMO3D的源代码是公开的,我们在合约中看到,产生随机数的种子是通过当前块信息和msg.sender一起计算出来的,攻击者可以在攻击之前预先计算出结果,这样就能增大自己中奖的概率,从而达到少投入,多获益的目的。


已经关闭的god.game出问题的原因与FOMO3D不同。FOMO3D可以认为是攻击者利用了以太坊的规则进行合理的操作,而god.game完全就是人为原因造成的了。通过代码分析发现是由于类型转换操作不当,导致dividends异常增加,攻击者通过调用reinvest购买大量token,最后卖出token,获利离场。这是典型的由于智能合约代码有漏洞导致的合约被攻击事件。

对于有交易属性的游戏合约,安全漏洞出现的情况非常普遍,除了刚才说的类型转换的漏洞,还有可能有存在后门的情况。投资者在参与的时候一定要谨慎。投资有风险,出手需谨慎。


3.投资者如何分析一个项目的代码质量

我们举一个溢出漏洞的例子。


什么是溢出漏洞呢?当要表示的数据超出计算机所使用的数据的表示范围时,则产生数据的溢出。这个解释有点抽象,那么我们用通俗的例子来描述一下。大家现在看一下我们的图片,我们看到了一个算盘,很老的物件,大概民国时期的,这个叫5档算盘。这个算盘能表示的最大数字是99999。这就是这个算盘的极限了,但是当我们在99999的时候再加1会怎么样呢?结果是所有的算珠恢复原位,我们只能表示0了。多出来的一位去哪儿了呢?多出来的一位溢出了。所以叫溢出漏洞。这个漏洞造成的第一个危险就是“归零”,它可以让一个账户的代币瞬间变成0,而且你反查交易记录,一切都是正常的。也可以利用这个漏洞,在判断条件为某个时候的时候使条件成立。大家应该都还记得BEC的批量转账漏洞,这个事件就是利用了没有使用安全函数计算乘法,导致计算机结果超出范围造成溢出,使判断条件成立,然后就可以大量的转账了,最终BEC蒸发了60多亿的市值,不仅仅是给投资者,也给项目方造成了极大的损失。


 


 


使用安全函数能够避免溢出漏洞。在这种写法里,我们除了做正向计算外,还要做一次逆向计算,以保证运算结果可逆,这样的计算结果才是正确的。也就是说做一个加法,我们计算a + b = c,安全函数在计算完之后一定要再计算一遍c >= a,这个结果成立,我们会认为这是一次有效的计算。虽然这样增加了计算量,但是由于智能合约部署以后不可变更并且不可升级的特性,我们牺牲一点点效率,换来的是安全正确的计算结果,也是值得的。所以大家在投资的时候一定要找开源代码的来投,开源代码的,一定要检查是不是用了安全函数,但是要注意,有了安全函数,不代表用了安全函数。我们审核的一个合约中就发现,项目方定义了安全函数,但是只有个别地方使用了。Transfer的操作里面没有使用,这个时候我们给项目方提供了风险提示,项目方根据我们的指导,逐一将安全函数应用到位,最终才通过我们的审核。


4.投资者需要重视交易所的哪些安全问题


面对交易平台诸多的安全隐患,我们该如何选择一个安全靠谱的交易平台呢?可以从以下几个方面来考虑:

一、关注了解一家交易所的基本信息,如果无法在公开渠道查询到总部、CEO、雇员等基本信息,那可能意味着这家交易所不想对公众公开其经营活动,这种情况下,可直接将其排除。

二、了解一家交易所是否遭受过黑客攻击非常重要,并且还要熟知这家交易所如果遭遇黑客攻击,是否有完善的预警或应急方案。如果数字货币被盗,交易所是否会负责赔偿投资者损失?赔偿时间是多久?交易所事后是否会采取措施提升网络安全?

三、一家靠谱的交易所至少应该为其用户/投资者提供这几种安全性支持:1.双重登录认证;2.PGP加密电子邮件沟通;3.电子邮件或短信提醒。

 

 


互动提问:

Q1:现在真正能达到实用级别的允许开发dapp公链是否只有以太坊和eos.如何看待eos目前菠菜游戏成风的现象,既然用户入门门槛很高,为什么有那么大的eos交易量在菠菜游戏,是否庄家炒作,而非个人行为。

A1:目前大家熟悉的公链也就是以太坊和EOS了。其实还有很多底链也是支持智能合约开发的。我们刚才说到,整个行业都在寻找更优的落地方式,现在菠菜也只是其中的一种。其实这种游戏用户入门的门槛非常低,开发的成本也很低,唯一需要注意的,就是在开发完成以后,必须经过严格的测试,防止已知的安全问题发生。之所以eos上菠菜游戏比较多原因是在EOS上,交易的费用成本低,用户基数也有保障。EOS上的合约可以升级,有利于及时修复出现的bug。保障合约的正常运行。至于是否是庄家在自己操纵,这个我们没有明显的证据,所以暂时无法给出结论。

 

Q2:都说交易所现在都沦为洗钱工具,那我们的数字货币放在交易所真的安全吗?怎么选择安全的交易所?

 

A2:我并不认为交易所现在是洗钱工具,虽然现在币市低迷,但是经过一轮又一轮的波动调整以后,市场会逐渐把空气币淘汰出去,留下的都会是有投资价值的货币。数字货币是否安全这个问题其实我们讨论的更多的是会不会被盗。这个和是不是洗钱工具没有必然联系。所以大家不用担心。现在排名靠前的大交易所都是在安全方面有一定投入的。但是也只能说相对安全。最安全的方式,就是放在钱包里,然后保护好自己助记词和私钥。

 

Q3:有没有哪些比较可靠的交易所和钱包推荐?

A3:现在排名靠前的交易所都是值得信任的。

钱包方面,imtoken和mytoken,以及一些开源钱包都是可以用的。

 

Q4: 区块链安全事件主要都是哪些方面,对个人都主要会产生哪些影响?

A4:对于投资者来说区块链安全事件最直观的就是某某币被盗,某交易所被攻击,某游戏被攻击等等。而实际上,区块链安全事件是在整个生态的每一个环节都会发生的。

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

360官方团队发布的消息用“史诗级“描述了该漏洞,并称“足以轰瘫整个数字货币体系”,“可完全控制虚拟货币交易”。

也就是说,如果公链出了问题,所有的数字币都不在是你的,都会被恶意操控,从而造成损失。但是从目前来看,由于纯粹的公链漏洞导致的损失比较少见,更多的问题最终还是出在智能合约上,所以大家目前来说,主流公链还是值得信任的。

智能合约方面:各种盗币、游戏合约被攻击

交易所方面:交易所被攻击,被盗

其实投资者注意理性投资,尽量少碰杠杆。注意关注项目方的动态,都有助于规避风险。

 

Q5: 都说IPFS才是真正的区块链3.0项目,您是怎么看待这个项目的?

A5:IPFS也仅仅是区块链3.0的一个垂直领域,区块链3.0的概念咱们刚才说了是可编程社会,所以整个社会体系都在区块链3.0的覆盖之内。我个人认为IPFS是未来整个区块链生态体系中非常重要的一环,在解决分布式存储的业务时会有非常大的价值。



33

参与讨论

登录后参加评论......

全部评论 0

作者

返回顶部