以太坊智能合约漏洞梳理:为何DeFi安全事件频发

OKX欧易app

OKX欧易app

欧易交易所app是全球排名第一的虚拟货币交易所,注册领取6万元盲盒礼包!

APP下载   官网注册
币安app

binance币安交易所

币安交易所app是全球排名第一的虚拟货币交易所,注册领取盲盒礼包!

APP下载   官网注册

以太坊智能合约的安全问题主要是因为其「过于灵活」引起的,灵活性和安全性如同天平的两端。

原文标题:《以太坊智能合约为何安全漏洞频发?》撰文:谈国鹏,Ownbit创始人

最近,随着DeFi火热,以太坊智能合约安全漏洞频发。究竟是什么原因造成的,以及如何更好地防范这些漏洞?

概述

相比于比特币而言,以太坊更易发生安全事故。这主要是因为以太坊虚拟机是图灵完备的,以太坊可实现函数间相互调用、嵌套调用,智能合约间相互调用等各种复杂逻辑。而比特币只实现了基于栈的非图灵完备的虚拟机,并只能通过操作码进行入栈和出栈操作。另外比特币也没有复杂的DApp应用,所以逻辑上简单,故而没有太多空间引发安全漏洞。

以太坊上各种DApp复杂的智能合约逻辑是引发安全漏洞的主因。以太坊智能合约的安全漏洞主要可以分为逻辑问题和合约代码问题两种。

逻辑问题

最近频繁的「闪电贷」攻击是一个典型的逻辑问题引起的安全漏洞。在各种闪电贷攻击中你可以看到清晰的逻辑问题。攻击者只要制造出两个系统之间的价格差,便能通过闪电贷攻击获利。

闪电贷攻击的逻辑细节大家可以阅读之前一篇专门讲闪电贷的文章:「造富神器」闪电贷。本文主要阐述合约代码问题。

合约代码问题

我们知道,几乎稍微复杂一点的代码都或多或少地存在问题(bug)。了解出现问题的原因,并且归纳问题类别可以帮助我们更好地防范它们。下面是Ownbit钱包团队整理的关于以太坊智能合约安全最容易出现问题的点。

【重入(Reentrancy)】这是排名第一的问题。所谓「重入」就是一个方法被多次循环调用。而这通常是合约开发者所意想不到的。例如一个取款合约:

functionwithdrawEtherpublic{uintamount=userBalances[msg.sender];(boolsuccess,)=msg.sender.call.value(amount)("");//这里重入require(success);userBalances[msg.sender]=0;}

这是一段很简单的取款合约,让用户取走他的ETH余额。开发者并没有意识到这段代码可能会被重入。方法是:只要调用者是一个合约账户,那么msg.sender.call将默认调用该合约账户的fallback函数。攻击者只需要在其fallback函数再次调用withdrawEther就可以源源不断地取走ETH。

发生在2016年6月,著名的TheDAO攻击,从而导致了ETC分叉的事件,就是通过同样的方法实施攻击的。从事后看来,这只是一个小小的程序问题(却造成了如此严重的后果)。要修复这个问题也非常容易,只需要将两行代码调换顺序即可:

userBalances[msg.sender]=0;(boolsuccess,)=msg.sender.call.value(amount)("");

【让你的交易不打包】以太坊区块的打包机制是按照给予的矿工费(GasPrice)进行优先打包,并且每个区块有总GasLimit的限制(目前为每区块1200万Gas)。所以攻击者可以制造出若干使用GasLimit非常大,并且GasPrice给得非常高的交易,让它们优先占满区块,从而让目标交易无法被打包。

所以,在编写合约逻辑时,不能假设你的交易会在有限时间内被打包,否则就容易受到此类攻击。著名的「Fomo3D」事件就是用了

本站所有软件信息均由用户上传发布,版权归原著所有。如有侵权/违规内容,敬请来信告知邮箱:764327034@qq.com,我们将及时撤销! 转载请注明出处:https://czxurui.com/zx/72031.html

打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023年08月25日
下一篇 2023年08月25日

相关推荐

  • 以太坊挖矿多久结算,以太坊挖矿还能挖多久

    以太坊挖矿还能挖多久至少还能挖2年以上的时间。以太坊最大的两个变化,一个是采用“信标链+分片链”的结构,另外一个是共识机制从当前的 PoW转变为 PoS,按照 V神的说法,实现 PoS共识算法后,以太坊将比比特币更安全,攻击成本也更高。以太坊挖矿的消耗:由于耗电量大,此前

    2025-04-25 10:00:02
    3 0
  • 以太币爆跌为什么,以太坊为什么跌的这么厉害

    一、为什么这么多人现在愿意买虚拟货币呢比如比特币,以太坊因为都想在这个新型金融体系中赚钱。传统经济的市场越来越规范化,赚钱的机会也越来越少。大家对一个投资模型首先要问的是正规不正规,但却没考虑到越是完善的市场赚钱反而越来越难。就像国内股票市场,最正规的市场

    2025-04-25 10:00:02
    3 0
  • 以太坊的矿池在哪里,区块链矿场分布哪里

    一、hiveon矿池是哪里的hiveon矿池是以太坊的。与其它区块链一样,以太坊需要几千人在自己的计算机上运行一个软件,为该网络提供动力。网络中的每个节点(计算机)运行一个叫作以太坊虚拟机(EVM)的软件。将以太坊虚拟机想象成一个操作系统,它能理解并执行通过以太坊特定编

    2025-04-25 08:30:02
    5 0
  • 以太坊什么时候分叉的,以太坊分叉是什么意思

    一、伦敦硬分叉在即,六年前以太坊的创世地址们在干嘛撰文:潘致雄北京时间 2015年 7月 30日晚上 11点 26分,以太坊 0号区块被正式挖出,该区块中包含了 8893笔创世交易,为 8893个地址分配了以太坊网络中初始的 7200多万个 ETH。刚刚过完「六岁生日」的以太坊网络即将在本周迎

    2025-04-25 06:30:01
    5 0
  • 以太坊1个确认多少时间,关于交易确认数的来龙去脉

    一、区块链确认需要多久,区块链交易确认慢的原因区块链是骗人的吗?区块链技术本身不是骗局,但也不排除有人以区块链为幌子进行诈骗的可能性。区块链存在以下几个问题:区块链容量过大的问题。随着区块链的发展,节点存储的区块链数据量会越来越大,存储和计算的负担也会越来越

    2025-04-25 05:00:02
    10 0
  • 以大坊币总共有多少个,以太坊币哪种币的价值大如何判断

    一、比特币***火币***以太坊币哪种币的价值大如何判断他们本质上一样,都属于网络虚拟货币,但诞生的方式不同,因为算法不同,所以就导致了总量不同等差异。比特币是中本聪发明的,以P2P形式存在的数字货币,通过区块链技术实现分布式记账,由于其稀缺性,估值比较高。以太币

    2025-04-25 02:30:01
    6 0

发表回复

8206
验证码

评论列表(0条)

    暂无评论

ok交易所
已有100万用户加入ok交易所

立即下载