首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

众享区块链大讲堂49-安全漏洞防范

大家好,欢迎收听众享区块链大讲堂,今天我们要讲的是安全漏洞防范。

上节课,我们介绍了什么是智能合约以及智能合约能够做什么。我相信,大家对智能合约都有了一定的了解。本节课我们会介绍智能合约存在的安全漏洞以及防范措施。

历史教训

接触过链圈的人,应该都知道以太坊。在区块链的发展中,以太坊的出现可以说是继比特币之后的又一个里程碑。因此,以太币的价值,也在不断的暴涨。暴利刺激之下,便出现了利用安全漏洞盗取以太币的行为。其中比较著名的是TheDAO事件,该事件导致了以太坊硬分叉,以太坊直接撕裂成了ETH和ETC。

北京时间2016年6月17日,由于TheDAO编写的智能合约存在重大缺陷,作为区块链业界最大的众筹项目被攻击(被攻击前拥有1亿美元左右资产),导致数万以太币资产被分离出TheDAO 资产池。

这是由于TheDAO编写的智能合约中有一个splitDAO函数,用于从资金池中分离出资产,攻击者重复利用此函数中的漏洞,不断从TheDAO项目的资产池中分离DAO资产给自己。

攻击者组合了2个漏洞攻击

攻击者利用的第一个漏洞是递归调用splitDAO函数,也就是说splitDAO函数被第一次合法调用后会非法的再次调用自己,然后不断重复这个自己非法调用自己的过程。这样的递归调用可以使得攻击者的DAO资产在被清零之前,数十次的从TheDAO的资产池里重复分离出来理应被清零的攻击者的DAO资产。

攻击者利用的第二个漏洞是DAO资产分离后避免从TheDAO资产池中销毁。正常情况下,攻击者的DAO资产被分离后,TheDAO资产池会销毁这部分DAO资产。但是攻击者在递归调用结束前把自己的DAO资产转移到了其他账户,这样就可以避免这部分 DAO资产被销毁。

在利用第一个漏洞进行攻击后,再利用第二个漏洞把安全转移走的DAO资产再转回原账户。仅仅这样,攻击者就做到了只用2个同样的账户和同样DAO资产,进行了200多次攻击,获得了巨额财产。

那么智能合约在那些场景下存在漏洞呢?

安全漏洞

(1)在发起以太坊转账交易时,如果将所有余额作为转账金额,会因为gas(相当于交易费用)过少而导致交易失败。这种情况下,如果接收方地址是一个合约地址,而不是一个普通钱包地址的话,攻击者可以通过一个漏洞攻击合约进行多次退款……

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20190614A0L4GW00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券