设为首页 - 加入收藏 ASP站长网(Aspzz.Cn)- 科技、建站、经验、云计算、5G、大数据,站长网!
热搜: 创业者 数据 手机
当前位置: 首页 > 运营中心 > 网站设计 > 佳作 > 正文

智能合约问题致区块链安全事件频发

发布时间:2018-09-25 15:12 所属栏目:49 来源:猎云财经
导读:腾讯上半年的报告统计,因区块链自身问题导致的损失达到12.5亿,其中智能合约的问题占了较大的比重。 9月13日晚,Armors Labs研究院院长刘鹏作为主讲嘉宾参与到猎云财经空中课堂第十四期的分享当中,本期课题:智能合约安全问题的分析与警示。 以下为分享

1000

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

9月13日晚,Armors Labs研究院院长刘鹏作为主讲嘉宾参与到猎云财经空中课堂第十四期的分享当中,本期课题:智能合约安全问题的分析与警示。

以下为分享实录(经编辑删改):

主持人好,诸位币圈儿的兄弟姐妹们,大家晚上好。欢迎大家参与猎云财经的分享会,我是刘鹏,来自Armors Labs研究院。

Armors Labs作为全球顶级的区块链安全实验室,从智能合约全生态平台延展到整体的区块链安全平台,致力于打造一整套完整的智能合约防御、监测、故障阻断以及升级体系,实验室提供开源的智能合约引擎,并逐步适配所有流行的底层公有链。

01

区块链安全

区块链安全大致涉及到三个大的方面。

第一个,区块链自身机制,这里包含了智能合约、51%攻击、双花攻击等。

第二个,区块链生态,包括交易所被盗、拒绝服务攻击、交易所被钓鱼等。

第三个,使用安全,包括账号失窃、用户被钓鱼、私钥泄露等。

我们今天要讨论的重点内容是区块链自身机制中智能合约安全的相关话题。

02

区块链发展的路径

区块链的发展划分为三个时代,分别定义为区块链1.0、2.0和3.0。

1000 (1)

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

1000 (2)

3.0时代的定义叫可编程社会,这个时代将是区块链真正落地的时代,我们目前就是在向3.0时代大步迈进。

链塔数据BlockData发布了《2018年8月以太坊DApp数据分析报告》,报告显示,以太坊上的DApp数量多达775个,累计交易笔数多达3亿,累计交易金额超过59亿ETH。

随着越来越多的Dapp出现,生态的逐渐发展,区块链将会真正进入到高速发展期。

1000 (3)

03

DAPP与智能合约

智能合约是部署在区块链上的一段代码,目前所有的Dapp都需要通过智能合约来实现,像发行数字货币、投票等功能都离不开智能合约。

由于智能合约被部署到公链上以后,难以被修改,所以才具有了一定的公信力。

现在的智能合约大部分都与数字币有关,因其对应的市场价值非常庞大,成为了攻击者眼中的蛋糕。

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

04

智能合约问题导致区块链安全事件频发

FOMO3D是一款主要基于以太坊智能合约开发的区块链游戏,这款游戏包含了闪拍、分红机制、战队功能、邀请好友等功能,整体看起来还是比较全面的一款博弈类游戏。

FOMO3D游戏中的随机糖果被攻击者大量获取,攻击者通过攻击合约生成的临时合约不断对FOMO3D的主合约进行攻击,这是攻击者利用智能合约的随机数漏洞发起攻击的一个典型代表。

由于FOMO3D的源代码是公开的,在合约中可以看到,产生随机数的种子是通过当前块信息和msg.sender一起计算出来的,攻击者可以在攻击之前预先计算出结果,这样就能增大自己中奖的概率,从而达到少投入、多获益的目的。

1000 (4)

另外一个是GOD.GAME被盗事件,2018年8月22日,GOD.GAME官方发布消息,因合约遭到攻击,所有投注的ETH被盗走。

这个游戏被攻击的原因与FOMO3D不同。

FOMO3D可以认为是攻击者利用了以太坊的规则进行合理的操作,而GOD.GAME完全就是人为原因造成的了。

通过代码分析发现GOD.GAME是由于类型转换操作不当,导致dividends异常增加,攻击者通过调用reinvest方法购买大量token,最后卖出token,获利离场。

这是典型的由于智能合约代码有漏洞导致的合约被攻击事件。该游戏造成的损失比较小,有200多ETH。

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

另一种常见攻击叫溢出漏洞攻击。

溢出漏洞是指当要表示的数据超出计算机所使用数据的表示范围时,产生的数据的溢出。

1000 (5)

我们用一个比较通俗的例子解释一下溢出漏洞。上图的这个算盘,很老的物件,大概民国时期的,叫5档算盘,这个算盘能表示的最大数字是99999。

99999是这个算盘的极限了,思考一下,当我们在99999的时候再加1会怎么样呢?

结果就是所有的算珠恢复原位,只能表示0了。

多出来的一位去哪儿了呢?多出来的一位溢出了。这个漏洞造成的第一个危险就是“归零”,它可以让一个账户的代币瞬间变成或者是极小的一个数字。

而且当你反查交易记录时,一切都是正常的。攻击者利用这个漏洞,使判断条件成立。

(编辑:ASP站长网)

网友评论
推荐文章
    热点阅读