设为首页 - 加入收藏 ASP站长网(Aspzz.Cn)- 科技、建站、经验、云计算、5G、大数据,站长网!
热搜: 数据 手机 公司
当前位置: 首页 > 服务器 > 安全 > 正文

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

发布时间:2018-02-19 18:50 所属栏目:53 来源:雷锋网
导读:以太币组织The DAO被黑事件 2016-06 事件简介: 以太币的去中心化组织The Dao被黑,价值逾 5000 万美元的以太币外溢出DAO的钱包。以太币(ETH)市场价格瞬间缩水,从记录高位21. 50 美元跌至15. 28 美元,跌幅逾23%

以太币组织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)失效,而其他执行成功:

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

(编辑:ASP站长网)

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