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

OKX欧易app

OKX欧易app

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

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日

相关推荐

  • 以太坊哪里买,以太坊在哪里可以买

    一、以太坊国内可以交易吗以太坊国内如何购买目前,国内用户购买以太坊的渠道有很多,下面简单介绍常用的几种:一、场外可盈可乐平台(CoinCola)1、关于可盈可乐可盈可乐是个人与个人之间交易比特币的场外交易平台。可盈可乐隶属于香港CoinCola Limited,由专业的国际化团队研

    2025-01-10 02:00:01
    1 0
  • 以太坊17年能到多少,2019年以太坊能涨到多少

    一、rx470显卡能挖以太坊吗GPU服务器是基于GPU的应用于视频编解码、深度学习、科学计算等多种场景的快速、稳定、弹性的计算服务。作用是:出色的图形处理能力和高性能计算能力提供极致计算性能,有效解放计算压力,提升产品的计算处理效率与竞争力。采用2颗至强E5-2600V3系列

    2025-01-09 22:30:01
    3 0
  • 以太坊和什么币同时挖,以太币挖矿

    一、以太币挖矿***用什么来挖以太币挖矿教程1、在硬盘上新建文件夹,比C:Eth。之后所有挖矿软件就存放在这里。2、下载以下软件1)Geth——选择Geth-Win下载然后解压2)Ethminer——下载解压到同一个文件夹,重命名为“miner”3)Ethereum Wallet(以太坊钱包)——下载Win以太坊钱

    2025-01-09 19:00:02
    5 0
  • 以太坊在哪里炒,在哪里交易以太坊币

    一、在哪里交易以太坊币人民银行上海总部称,近年来,与虚拟货币相关的炒作(如ICO、IFO、IEO、IMO和STO等)花样翻新、投机盛行,价格暴涨暴跌,风险快速聚集。相关融资主体通过违规发售、流通代币,向投资者筹集资金或比特币、以太坊等虚拟货币,其本质上属于未经批准非法公

    2025-01-09 16:30:01
    5 0
  • 以太币哪个矿池好,比特币的挖矿到底挖的是什么

    一、国内现在这么多区块链,哪个潜力大区块链这三个都烂了,太多区块链应用,我们要用万千区块链产品中挑出有潜力的app,这要靠运气,还有看产品,首先我们注册一款区块链产品,要先看白皮书,在看代币发行量,有些区块链产品动不动就是1000亿发行了,我去那我撸多少才合适啊!

    2025-01-09 11:30:01
    6 0
  • 以太坊涨了多少倍了,2024牛市以太坊会涨几倍

    一、区块链eth涨了多少,eth怎么涨这么多eth会涨到10万美金一个嘛会。eth会涨到10万美金一个。以太坊(英文Ethereum)是一个开源的有智能合约功能的公共区块链平台,通过其专用加密货币以太币(Ether)提供去中心化的以太虚拟机。以太坊最贵涨到多少信心爆棚!投资大佬预测年底

    2025-01-09 09:30:02
    7 0

发表回复

8206
验证码

评论列表(0条)

    暂无评论

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

立即下载