区块见闻 区块见闻
Ctrl+D收藏区块见闻
首页 > Coinw > 正文

SEA:智能合约中的重入攻击_AMOR

作者:

时间:

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

漏洞概述:

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

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

全国首个数币智能合约预付资金监管场景在北京交行落地:金色财经消息,近日,交通银行在中国人民银行数字货币研究所指导下,联合北京市朝阳区政府,成功为某教育培训机构上线数字人民币智能合约预付资金管理系统。该业务是全国首个基于数字人民币智能合约生态服务平台对预付资金进行管理的项目,实现了数字人民币在预付资金管理领域的应用。(新华网)[2022/9/11 13:23:03]

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

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

穆长春:数字人民币智能合约已在政府补贴、零售营销等领域成功应用:9月2日消息,中国人民银行数字货币研究所所长穆长春在2022年中国国际服务贸易交易会金融服务专题主论坛、2022中国国际金融年度论坛上表示,目前,数字人民币智能合约已经在政府补贴、零售营销、预付资金管理等领域成功应用。随着底层平台和相关制度安排的逐步完善,将在更大范围内加速落地。[2022/9/2 13:05:19]

漏洞分析:

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

报告:以太坊将在第二季度继续主导智能合约市场:加密研究和分析平台Messari在最近的一条推文中分享了关于智能合约领域本季度业绩的数据,并指出,在第二季度,除了DPoS之外,PoS和PoW代币都能够大幅攀升:“在可预见的未来,加密市场似乎会受到更广泛的经济环境不稳定性影响。尽管面临宏观经济的不利因素,但即将进入第二季度的智能合约领域显示出复苏迹象,PoW指数上涨1%,PoS指数上涨4%,DPoS指数下跌11%。”以太坊可能会在第二季度继续主导智能合约市场,因为有几个关键趋势可以让它巩固对该领域的控制。Messari研究员Wilson Withiam解释称,有三个主要的趋势可以帮助ETH在未来几个月实现增长:“第二季度的趋势是:随着更多的网络发布,ETH 2.0将继续主导对话;‘ETH杀手’市场将更加饱和;staking市场将继续处于压力之下,将在大型验证器和交易所汇集力量。”(CryptoSlate)[2020/4/15]

动态 | 智能合约代码部署到 eosio.wrap 账户的提案已通过:由 Libertyblock 发起的关于将智能合约代码部署到 eosio.wrap 账户的提案,目前已获得 15 个出块节点的赞同并通过。[2018/10/18]

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

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

来源:金色财经

标签:SEAPENOpenSeaAMORSEADBOpenSeaopensea币价格MetaMorph

Coinw热门资讯
MYST:以太坊EIP-1559可能并不稳定_Serum Ecosystem Token

自以太坊因其Gas费高昂而渐渐被其他公链觊觎其市场份额后,EIP-1559的上线就备受大众关注,被寄予厚望.

CTS:CTSI 现已登录 Vauld_CTSI

我们很高兴地宣布CTSI在Vauld上新区登录,这是一个去中心化的加密平台,旨在为加密用户提供与传统银行业务的核心业务.

CHA:2022年:开启元宇宙NFT+DAO的未来_dogchain

导语:2021年以来,加密圈里最狂热的毫无疑问是NFT,尤其在元宇宙和Web3爆发以来,许多投资者将目光转向这一新潮,NFT作为基础设施也在为元宇宙添砖加瓦.

DAM:OpenSea与ADAMoracle:杀手级应用的不同探索方向_BOpenSea

本文翻译自ADAMoracleMedium《OpenseaandADAMoracle:DifferentExploringDirectionsforKillerApps》从BoredApeYac.

NFT:过去五周加密基金的资金流出额超5亿美元 BTC 现货交易量处于 6 个月以来最低水平_加密货币

伴随着投资者的风险偏好降低,加密市场交易并不活跃。比推终端数据显示,过去24小时,比特币一直徘徊在4.12万美元至4.25万美元之间,波动率进一步缩窄,上攻还是下行趋势尚不明朗.

比特币:2022年值得关注的去中心化交易所 (DEX)_NFT

自Uniswap在以太坊上首次亮相以来,去中心化交易所(DEX)的受欢迎程度已达到顶峰。与中心化交易者不同,DEX为加密用户提供了一个无需许可的交易生态系统,允许全球任何人轻松访问加密市场.