区块链安全事件回顾之The DAO被黑事件

来自:jinse.com 归档时间:2018-08-03

曲速区:只有不忘历史才能展望未来,在接下来这段时间里曲速区将带你一起回顾区块链安全事件总结与区块链技术展望。

二、THE DAO被黑事件详细回顾

今天我们来说第二个被盗事件: The DAO 被黑事件

区块链安全事件回顾之The DAO被黑事件

二、以太币组织 The DAO 被黑事件解析

时间:2016年6月

北京时间2016年6月17日发生了在区块链历史上留下沉重一笔的攻击事件。由于 其编写的智能合约存在着重大缺陷,区块链业界最大的众筹项目TheDAO(被攻击前 拥有1亿美元左右资产)遭到攻击,目前已导致300多万以太币资产被分离出TheDAO 资产池。TheDAO编写的智能合约中有一个splitDAO函数,攻击者通过此函数中的漏洞重复利用自己的DAO资产来不断从TheDAO项目的资产池中分离DAO资产给自己。

TheDAO 被攻击,攻击利用两个代码漏洞创建子合约提取了360万个以太币。因为攻击者是通过splitDAO开始攻击。我们从splitDAO代码开始分析

区块链安全事件回顾之The DAO被黑事件

函数调用者只能是TokenHolder。不能是ether账户。这里没什么问题,符合预期

splitDAO的代码有点长,我们看到如下的代码

区块链安全事件回顾之The DAO被黑事件

在这里是计算需要支付的金额,然后调用createTokenProxy函数。我们需要记住这点。根据BLOG 2,在DAO.sol中,function splitDAO函数有这样一行:

区块链安全事件回顾之The DAO被黑事件

合约中,为msg.sender记录的dao币余额归零、扣减dao币总量totalSupply等等都发生在将发回msg.sender之后,这里是在Blog 1中指出的一个典型“反模式”。

接下来看withdrawRewardFor函数。目前github中所见最新代码并非部署于Ethereum livenet的代码:

区块链安全事件回顾之The DAO被黑事件

paidOut[_account] += reward 在原来代码里面放在payOut函数调用之后,最新github代码中被移到了payOut之前。再看payOut函数调用。rewardAccount的类型是ManagedAccount,在ManagedAccount.sol中可以看到:

区块链安全事件回顾之The DAO被黑事件

_recipient.call.value()() 这个函数调用时,转账_amount个Wei,call调用默认会使用当前剩余的所有gas,此时call调用所执行的代码步骤数可能很多,基本只受攻击者所发消息的可用的gas限制。

把这些拼起来,黑客的攻击手法就浮现了:

我们现在可以建立一个攻击合约。

  1. 创建一个钱包,调用splitDAO多次,直到到达合约的gas limit,或者stack limit。

  2. 创建一个分割提案到一个新的钱包地址。

  3. 等待7天。

  4. 调用splitDAO

区块链安全事件回顾之The DAO被黑事件

调用了两次splitDAO,withdrawRewardFor也调用了两次,并且两次都是成功。成功窃取ether。

所以一定要先重置变量,再调用发送函数。

从代码看,本次攻击得逞的因素有二:一是dao余额扣减和Ether转账这两步操作的顺序有误,二是不受限制地执行未知代码。

曲速未来实验室表示:本次黑客事件不意味着以太坊乃至去中心化、区块链的终结。虽然教训深刻,但如果能够汲取教训,那么从中获益的不仅仅是THE DAO, 以太坊,整个区块链社区都将从中获益。

本文章内容来自微信公众号【区块链安全档案】

有关于区块链安全事件回顾之The DAO被黑事件

区块链安全事件回顾:The DAO被黑事件

.details .details-cont p, p {word-break: normal; text-align: unset} p img {text-align: center !important;} 来源:区块链安全档案只有不忘历史才能展望未来,在接下来这段时间里曲速区将带你一起回顾

区块链安全事件回顾之The DAO被黑事件

只有不忘历史才能展望未来,在接下来这段时间里曲速区将带你一起回顾区块链安全事件总结与区块链技术展望。 二、THE DAO被黑事件详细回顾 今天我们来说第二个被盗事件: The DAO 被黑事件   二、以太币组织 The DAO 被黑事件解析 时间:2016年6月 北京时间2016年6月

区块链安全事件回顾之The DAO被黑事件

只有不忘历史才能展望未来,在接下来这段时间里曲速区将带你一起回顾区块链安全事件总结与区块链技术展望。 二、THE DAO被黑事件详细回顾 今天我们来说第二个被盗事件: The DAO 被黑事件   二、以太币组织 The DAO 被黑事件解析 时间:2016年6月 北京时间2016年6月

史上最大众筹项目The DAO事件背后的加密经济学意义

说起The Dao,就不得不回忆起Dao攻击事件。 2015年7月30日,Vitalik Buterin和以太坊基金会创建了第一个基于区块链的图灵完备智能合约平台。这一天以太坊正式和公众见面。接着Sock.it设计了TheDao以太坊合约,并在2016年4月30日正式部署TheDao智能合

以太坊被盗,回顾一下这几年发生的安全事件

由于以太坊被盗事件,引发大家对数字资产安全性担忧。事实上,类似的事件过去发生过,将来还可能会发生。回顾下这几年:2017年7月19日,多重签名钱包Parity1.5及以上版本出现安全漏洞,15万个以太坊ETH被盗,共价值3000万美元。2017年4月22日,韩国比特币交易平台yapizon成为了黑客