加入收藏 | 设为首页 | 会员中心 | 我要投稿 晋中站长网 (https://www.0354zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 服务器 > 安全 > 正文

一文看懂区块链技术安全,在安全行业区块链又有什么用

发布时间:2018-02-22 02:33:20 所属栏目:安全 来源:雷锋网
导读:副标题#e# 注:本文作者,360CERT 。原文出处:Seebug Paper 。 区块链技术是金融科技(Fintech)领域的一项重要技术创新。 作为分布式记账(Distributed Ledger Technology,DLT)平台的核心技术,区块链被认为在金融、征信、物联网、经济贸易结算、资产管

以太币组织The DAO被黑事件

2016-06 

事件简介: 

以太币的去中心化组织The Dao被黑,价值逾 5000 万美元的以太币外溢出DAO的钱包。以太币(ETH)市场价格瞬间缩水,从记录高位21. 50 美元跌至15. 28 美元,跌幅逾23%。 

在此前的智能合约写法中,有三个严重漏洞,黑客也正是利用这几个漏洞攻击The DAO窃取以太币。

fallback函数调用

向合约地址发送币有两种写法:

一文看懂区块链技术安全,在安全行业区块链又有什么用

二者都是发送 20 个ether,都是 个新的message call, 同的是这两个调 的gasli mit 样。send()给予 0 的gas(相当于 call.gas(0).value()() ), call.value()() 给予全部(当前剩余)的gas。 当我们调 某个智能合约时,如果指定的函数找 到,或者根本就没指定调 哪个函数(如发送ether)时,fallback函数 就会被调用。

当通过 addr.call.value()() 的 式发送ether,和send() 样,fallback函数会被调 ,但是传递给fallback函数可 的 是当前剩余的所有gas,如果精 设计 个fallback就能影响到系统,如写storage, 新调 新的智能合约等等。

递归调用

一段用户从智能合约中取款的代码如下:

一文看懂区块链技术安全,在安全行业区块链又有什么用

如果付款方的合约账户中有 1000 个ether,而取款方有 10 个ether,此处就有严重的递归调用问题,取款方可以将 1000 个ether全部取走。

调用深度限制

合约可以通过message call调用其他智能合约, 被调用的合约继续通过message call在调用其他合约,这样的嵌套调用深度限制为1024。

一文看懂区块链技术安全,在安全行业区块链又有什么用

如果攻击者制造以上的 1023 个嵌套调用,之后再调用sendether(),就可以让add.send(20ether)失效,而其他执行成功:

一文看懂区块链技术安全,在安全行业区块链又有什么用

(编辑:晋中站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读