链资讯 链资讯
Ctrl+D收藏链资讯

DAO:智能合约中的重入攻击_ALL

作者:

时间:

智能合约是一种旨在以信息化方式传播、验证或执行合同的计算机协议。智能合约允许在没有第三方的情况下进行可信交易,这些交易可追踪且不可逆转。智能合约概念于1995年由NickSzabo首次提出。智能合约的目的是提供优于传统合约的安全方法,并减少与合约相关的其他交易成本。

漏洞概述:

因为以太坊智能合约中是可以调用外部的合约代码,外部合约可能是攻击者构造的恶意不安全的合约代码,当在转账操作时执行代码,迫使攻击的合约回调包括自身的代码,和绕过源代码的限制发生了重入攻击事件。

发生重入攻击漏洞有两个原因:

资产管理公司VanEck在欧洲市场推出专注于5个主要智能合约的ETN:5月4日消息,资产管理公司VanEck在欧洲市场推出了一个新的ETN,专注于领先的智能合约数字资产。该公司今年早些时候在美国推出了VanEck Smart Contract Leaders Fund。

这个新的ETN为5个主要的智能合约应用提供了简单的捆绑投资,包括以太坊、Solana、Cardano、Polkadot和TRON。任何单一加密货币在任何给定时间都不可能占ETN资产的30%以上,确保各个智能合约的多元化。(Business Wire)[2022/5/4 2:49:59]

1.?调用了外面不安全的合约代码

北卡罗来纳州参议院通过法案 鼓励采用和研究区块链技术及智能合约:据官方消息,6月15日,美国北卡罗来纳州参议院一致通过法案并创建了创新委员会,旨在研究区块链技术和智能合约,从而为全州未来的增长\"提供法律和监管的清晰度\"。[2021/6/16 23:40:17]

2.?外部合约的函数早于状态变量的修改

漏洞分析:

看withdraw函数,我们可以看到它接收了一个_amount参数,将其与发送者的balance进行比较,不超过发送者的balance就将这些_amount发送给sender,同时我们注意到这里它用来发送ether的函数是call.value,发送完成后,它才在下面更新了sender的balances,这里就是可重入攻击的关键所在了,因为该函数在发送ether后才更新余额,所以我们可以想办法让它卡在call.value这里不断给我们发送ether,同样利用的是我们熟悉的fallback函数来实现。

爱荷华州出台法案 为区块链和智能合约创造公平竞争环境:金色财经报道,2月11日消息,由共和党爱荷华州州参议员马克·洛夫格伦(Mark Lofgren)周三提出的参议院第303号法案规定,除非另有明确规定,否则任何使用分布式账本技术保护信息的党派都享有与使用传统手段保护记录的党派相同的权利。它还修改了“合同”的定义,以包括那些使用DLT担保的合同,并进一步包括智能合同。因此,任何合同都不会因为是智能合同而被剥夺法律效力。“电子记录”和“电子签名”还包括所有使用分布式账本技术担保的文件。这个中西部的州此前已经出台了立法,免除虚拟货币的“某些安全和货币传输条例”以及“个人、公司、特许经营权、销售和使用以及遗产税”。(CoinDesk)[2021/2/11 19:32:41]

ADA更新线路图 近日将发布钱包和智能合同:据Cardano(ADA)官方消息,已对线路图的一些关键部分进行了更新:将于近日发布钱包,于5月25日发布智能合同。[2018/5/19]

当然,这里还有另外一个关键的地方——call.value函数特性,当我们使用call.value()来调用代码时,执行的代码会被赋予账户所有可用的gas,这样就能保证我们的fallback函数能被顺利执行,对应的,如果我们使用transfer和send函数来发送时,代码可用的gas仅有2300而已,这点gas可能仅仅只够捕获一个event,所以也将无法进行可重入攻击,因为send本来就是transfer的底层实现,所以他两性质也差不多。

2016年6月以太币组织TheDAO被攻击,攻击者利用两个代码漏洞创建子合约提取了360万个以太币。接下来我们简单说一下这个事件

攻击者利用the?DAO函数智能合约中splitDAO()函数,重复对DAO资产进行重入攻击,不断从项目的资产里面分离出DAO资产并转移到自己的账户中

1.?创建钱包,调用splitDAO函数

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

3.?等待再调用splitDAO函数

4.?成功获取了ether

?解决方法:

1.?使用其他转账函数

进行以太坊转账时发送给外部地址时使用Solidity的内置函数,这将不足以调用另一份合约.

2.?先修改状态变量

这种方式就是确保状态变量的修改要早于转账操作,即Solidity官方推荐的检查-生效-交互模式(checks-effects-interactions)。

1.?使用互斥锁

互斥锁就是添加一个在代码执行过程中锁定合约的状态变量以防止重入攻击。

2.?使用OpenZeppelin官方库

OpenZeppelin官方库中有一个专门针对重入攻击的安全合约

??本文作者:权星实验室团队

来源:金色财经

标签:DAOALLTHECALOmnisphere DAODatawallet3X Short Ethereum Classic Tokenethicaljudgement

以太坊最新价格热门资讯
PRO:和冷兔聊NFT:从WEB2到WEB3 XRC宇宙现在才刚刚开始_TOM

CryptoPunk很反叛...无聊猿有点阴郁...冷兔Neverback...如果你是表情包玩家,可能此刻收藏夹里就躺着冷兔.

XRC:金色前哨|三个月内市值翻番:Animoca Brands以50亿美元估值融资3.58 亿美元_ANI

1月18日,据官方消息,风投公司AnimocaBrands宣布其在最新一轮的融资中,以50亿美元的估值筹集了3.58亿美元.

元宇宙:OceanMollu丨元宇宙的最优秩序_元宇宙概念是什么意思

在讨论元宇宙的最优秩序之前,我们先来讨论一下元宇宙企业的投入和产出。我们把元宇宙企业的投入分为两类:一类是企业专用性投资,比如适用于特定客户群体的算法、某些虚拟场景的渲染方法,这样可以通过塑造平.

元宇宙:大争之世,链游公会联盟STK和他的元宇宙版图_GDAO币

元宇宙作为一个新兴的概念,一出现就引起了很多网友的关注,元宇宙究竟是什么,能干什么?又或者是基于什么,在高速发展的现今,它又能带来什么样的机遇?说到元宇宙,不得不提的一个概念就是区块链.

EFI:读懂资本投资的Dimensional Space Labs 币安孵化 软银参投、LD Capital_squid-game

币安CEO赵长鹏表示:我们可能会在2022年看到蓬勃发展的兴趣和创新,其中SocialFi和GameFi和DAO将成为2022主要驱动力.

元宇宙:行业报告|腾讯新闻&复旦大学发布2021-2022年元宇宙报告(附下载路径→)_Substratum

点击蓝字关注我们 SUBSCRIBE?toUS刚刚过去的2021年被称为元宇宙元年,元年的概念我们并不陌生,微博元年、大数据元年、全面直播元年,元年概念的频现与出现周期的缩短.