宇宙链 宇宙链
Ctrl+D收藏宇宙链
首页 > Filecoin > 正文

智能合约中的重入攻击

作者:

时间:1900/1/1 0:00:00

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

漏洞概述:

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

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

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

Top 100 DeFi通证市值为48,491,091,178美元:金色财经报道,据最新数据显示,Top 100 DeFi通证市值为48,491,091,178美元,总锁仓量为56,986,142,934美元。目前市值排名前三的DeFi通证分别是:Lido Staked Ether(13,329,447,825美元)、Dai(4,587,985,424美元)和Uniswap(3,823,615,098美元)。[2023/6/4 11:56:41]

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

Hedera Governing Council宣布COFRA成为其最新成员:5月17日消息,Hedera Governing Council今天宣布COFRA成为其最新成员,至此其成员数达到30个。COFRA是一家拥有182年历史的家族企业,在全球拥有6万多名员工。

COFRA主要服务于终端用户,计划在Hedera上创建基于区块链的尖端解决方案,最初专注于代币化,并在其供应链流程中带来透明度。据称,该组织将利用Hedera专有的代币服务(HTC)来发行或代币化现实世界的资产。[2023/5/18 15:09:30]

漏洞分析:

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

V神:对以太坊的兴奋现在不再基于未被发现的未知事物的潜力:12月5日消息,V神(Vitalik Buterin)今日发布博客文章《以太坊应用生态系统中的什么让我兴奋》。其在文中表示,对以太坊的兴奋现在不再基于未被发现的未知事物的潜力,而是基于一些特定类别的应用程序,这些应用程序已经证明了自己,而且只会越来越强大。文章分别从1.金钱:第一个也是最重要的应用程序;2. Defi:保持简单;3.身份生态系统:ENS、SIWE、PoH、POAPs、SBTs;4. DAO;5. 混合应用。五个方面进行了论述。其还表示,从长远来看,其中许多应用程序将需要克服隐私问题的困扰。Rollup 技术正在迅速发展以解决可扩展性问题,并且交易已经比三年前更快地包含在链上。[2022/12/6 21:24:36]

Web3游戏工具开发商CloudFeather Games完成125万美元种子轮融资:6月23日消息,Web3游戏工具开发商CloudFeather Games宣布完成125万美元种子轮融资,本轮融资由Lumikai领投,VentureHighway、OYO全球首席战略官ManinderGulati、NazaraTechnologies首席执行官ManishAgarwal等参投。CloudFeather Games成立于2019年,此前一直处于“隐身”状态秘密构建软件开发工具包(SDK),该公司计划利用本轮资金招聘人才并扩大全球开发者外展计划。[2022/6/23 1:26:06]

当然,这里还有另外一个关键的地方——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官方库中有一个专门针对重入攻击的安全合约

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

来源:金色财经

标签:THEDAOHERALLtogetherbnb游戏截图GaiaDAOEthersocialMulti Wallet Suite

Filecoin热门资讯
PDD跨链布局NFT,元宇宙玩法多样化

导语:NFT在2021年实现了爆炸性的增长,当下就连主流的传统资本也开始拥抱NFT热潮,尤其在Web3.0进入大众视野并成为流行词汇后,各方热点的协同作用将加密行业提升至新的高度,PDD.IM在风起云涌中开启了新的生存之道.

1900/1/1 0:00:00
宏達電相信元宇宙勢在必行,3H也提前佈局進入!

宏達電董事長,王雪紅針對未來元宇宙發展表示,並且相信元宇宙是未來勢在必行科技發展,勢必會與文化藝術,音樂領域等相關應用做結合,未來也會擁有眾多不同應用,元宇宙將會成為人們之間最第二世界.

1900/1/1 0:00:00
火星周刊 | Animoca融资3.588亿美元;a16z计划为两只新加密基金筹集45亿美元

整理|Felix 火星编辑时刻 《扩容的夏天,一览投资人眼中的L2赛道密码》随着扩容赛道不同项目的先后上线与异彩纷呈的生态表现,如何捕捉扩容赛道的投资机会,成了行业内机构乃至普通人都十分关注的话题.

1900/1/1 0:00:00
旺链科技加入工信部区块链重点实验室 深化数据安全产业融合

近日,旺链科技与北京交通大学、中孚信息、天融信等知名企事业单位一起,正式成为区块链技术与数据安全工业和信息化部重点实验室成员单位。 此次,旺链科技入选实验室成员单位,区块链技术实力与融合创新能力得到认可.

1900/1/1 0:00:00
币安孵化次元空间链游AWAKEN上线公测

币安孵化次元空间链游AWAKEN上线公测Dimensionalspace次元空间发行的“AWAKEN”是一款3K策略卡牌手游。故事发生在一个名为“创世之山”的地狱世界.

1900/1/1 0:00:00
金色前哨|Terra成立生态基金会LFG

金色财经报道,1月20日消息,Terra公链宣布成立非盈利基金会LunaFoundationGuard,成员由Terra创始成员和专家委员会组成.

1900/1/1 0:00:00