百科 | 什么是智能合约中的重入攻击?

时间:2024-09-25 编辑: 浏览:(411)

作者:Jagjit Singh,CoinTelegraph;编译:五铢,

一、智能合约中的潜在漏洞

尽管智能合约具有开创性,但它也并非不受恶意方可能利用的缺陷的影响。

输入验证不足是一个普遍的弱点,使攻击者能够通过提供意外的输入来影响合约的执行。 此外,业务逻辑的不当应用可能会在合同中产生意外行为或逻辑差距,从而导致漏洞。 此外,如果处理不当,不安全的外部调用(例如涉及与外部数据源或其他合约的接口的调用)可能会造成漏洞。

重入攻击是一个合约在完成其自身状态更改之前从外部调用另一个合约时发生的弱点。 这允许被调用合约重新进入调用合约,并可能再次执行其某些操作。 这可能会导致意外的行为,并允许攻击者改变合约的状态,从而耗尽资金或产生其他负面影响。

考虑到此类攻击的可能性,开发人员在使用外部合约或数据源时也应谨慎行事,确保正确处理外部调用,以避免意外行为和漏洞。 他们可以通过密切关注智能合约测试等安全程序来帮助保护智能合约免受不断变化的威胁。

二、什么是智能合约中的重入攻击?

在智能合约中,当合约在完成自己的状态更改之前从外部调用另一个合约或函数时,就会发生重入攻击。

这允许被调用合约重新进入调用合约,并可能再次执行其部分操作,这可能会导致不可预见且频繁的恶意行为。 例如,合约 A 调用合约 B 发送资金,然后修改自己的状态。

合约 B 的代码可能包含一个回调函数,允许其重新进入合约 A,并可能在合约 A 完成其状态更改之前重新执行传输函数。 这将使攻击者能够在完成初始交易之前多次从合约中获取资金。

2016 年臭名昭著的以太坊区块链上的去中心化自治组织 (DAO) 黑客攻击是另一个众所周知的例子。 攻击者利用智能合约代码中的重入缺陷,递归地从 DAO 中删除资金,最终导致价值数百万美元的以太坊 (ETH) 被盗。

此外,包括 Uniswap、Lendf.Me、BurgerSwap、SURGEBNB、Cream Finance 和 Siren Protocol 在内的多个去中心化金融 (DeFi) 协议由于可重入漏洞而蒙受了重大财务损失。 这些违规行为造成了 350 万美元至 2500 万美元的损失,凸显了 DeFi 领域可重入漏洞带来的持续威胁。

三、重入攻击如何工作

重入攻击利用智能合约函数的顺序执行和外部调用形成一个循环,攻击者可以在完成之前多次执行特定函数,这可能会导致恶意行为和未经批准的资金提取。

在受害者完成状态修改之前,攻击者的合约有效地“欺骗”受害者的合约回调攻击者的合约。 此操作可能会导致反复提款或其他疏忽行为。

上图演示了对智能合约的重入攻击。 攻击者的合约调用受害者的“withdraw()”函数,该函数在更新余额之前发送以太坊。 然后,攻击者的后备函数被触发,再次递归调用withdraw()以从受害者合约中耗尽资金。 这种攻击利用了受害者在发送资金之前未能更新余额的情况。

让我们使用一个简化的示例来分解重入攻击的工作原理:

具有“提现”功能的智能合约

假设有一个允许用户提取资金的数字钱包智能合约。 除了跟踪用户余额之外,该合约还具有提款功能,方便资金提取。 提款功能通常允许用户将他们的代币或以太坊从智能合约提取到他们的个人钱包。

用户交互和功能执行

用户自行请求从钱包中提款。 他们使用提款功能输入所需的提款金额。

提款函数会在调用时验证用户是否有足够的资金进行提款。 如果满足要求,它将所需的资金转移到用户选择的地址。

外部调用

这就是弱点显现出来的地方。 在提款反映在用户的余额中之前,合约会对另一个合约或账户进行外部调用。

递归调用

如果外部合约的代码包含可以再次调用原始合约的函数(例如另一个提款函数),则会创建一个递归循环。 这使得可以在完成之前再次调用withdraw方法。

可重入利用

然后,攻击者使用恶意合约来利用此循环。 攻击者合约在钱包合约调用外部合约期间,在余额更新之前,快速再次调用钱包的提现函数。

回退功能

在某些情况下,智能合约的回退功能(一种独特的功能,当合约收到没有任何数据或以太坊的调用时启动)可能会被攻击者使用。 重入攻击可以通过在资金仍在处理过程中重复调用回退函数来进行。

操纵和反复提款

攻击者的合约可以在同一笔交易中重复使用提款功能,因为钱包合约会延迟更新余额,直到收到外部调用后。 因此,这使得资金更容易在未经授权的情况下被取出,从而使攻击者能够窃取超出其合法权利的资金。 随后,它给钱包合约的用户造成了巨大的经济损失。

四、重入攻击的后果

重入攻击会对智能合约用户产生严重影响,因为它们有可能造成重大财务损失。

重入攻击最直接的后果之一是未经授权提取或操纵易受影响的智能合约中保存的现金。 攻击者利用该漏洞反复从合约中提取资金,耗尽合约余额,并可能给在受影响合约中投资或存储资产的用户造成重大财务损失。

此外,重入攻击可能会削弱用户对智能合约和区块链技术安全性和完整性的信心。 重入漏洞可能会产生灾难性的影响,2016 年以太坊区块链上的 DAO 黑客事件等备受瞩目的事件就证明了这一点,该事件造成了巨大的经济损失并损害了社区的声誉。

除了短期财务后果之外,重入攻击还可能产生长期影响,例如监管和法律关注、投资者信任度下降以及对区块链平台和项目声誉的损害。 容易受到攻击的认知可能会导致用户在与智能合约交互或投资去中心化应用程序(DApp)时保持谨慎,从而阻碍区块链技术的采用和扩展。

五、如何减轻重入攻击

在智能合约创建和审计方面实施最佳实践对于减轻重入威胁是必要的。

这包括使用具有安全记录的知名代码库,这是实现这一目标的一种方法。 这些库经过了广泛的测试和同行评审,这降低了引入漏洞的机会。

开发人员还应该使用“检查-效果-交互”设计等安全检查,通过确保状态修改以原子方式发生,最大限度地减少重入攻击的机会。 如果可用的话,可以使用可重入安全的智能合约开发框架来添加针对此类漏洞的额外防线。

开发人员不太可能手动添加安全保护,因为这些框架通常包含专门设计用于避免重入攻击的内置方法和保护措施。 然而,由于区块链安全仍在发展,开发人员必须继续寻找新的威胁和弱点。

最新 更多 >
  • 1 MMAON币最高的时候是多少钱?

    MMON币最高时价值多少? MMON币是加密货币市场上的一个相对较新的币种,它在加密货币市场上的表现也一直备受关注。随着加密货币市场的不断变化,MMON币最高价是多少呢?下面让我们来一探究竟。 MMON币简介 MMON币是一种去中心化的区块链数字资产,它是基于以太坊区块链技术的ERC-20标准构建的。它具有快速交易速度、高度的安全性和可靠性,而且交易费用极低。相比于其他加密货币,MMON币不

  • 2 BABYSAITAMA币怎么出售

  • 3 BANANA币哪个交易所可以买到

    BANANA币是一种基于区块链技术的加密货币,它的目标是成为全球范围内广泛接受并使用的数字货币。与其他加密货币不同,BANANA币的特点是其稳定的价值和快速交易速度。作为一种数字资产,它可以用于购买商品和服务,也可以进行投资交易。对于有意购买BANANA币的用户来说,选择一个可靠的交易所至关重要。以下将介绍三个著名的交易所,它们是欧易交易所、币安交易所和火必交易所。欧易交易所,是全球领先的数字资产

  • 4 MIN币的创始人是谁

    MIN币是近年来备受关注的一种数字货币,其创始人是一位名叫王滔的年轻人。王滔的个人经历王滔是中国大陆的一位程序员,他曾就职于多家知名互联网公司,具有丰富的技术和市场经验。在2017年,他开始专注于区块链技术的研究,并在同年创立了MIN币。MIN币的创立MIN币的创立,源于王滔对于区块链技术的热爱和追求。他深刻理解区块链技术的重要性,并希望将其运用于数字货币领域。因此,他创立了MIN币,并集合了一批

  • 5 BASIS币怎么交易

    BASIS币是一种加密数字货币,它是一种稳定币,被设计用来验证和稳定链上的货币供应。BASIS币的目标是提供一个不受通货膨胀和波动影响的数字货币,以促进更稳定和可持续的资金流动。现在,让我们来看一下三个著名的交易所,它们是欧易交易所、币安交易所和火必交易所。1. 欧易交易所(EU Exchange):欧易交易所是一个全球知名的加密货币交易所,在全球范围内拥有大量的注册用户。它提供多种数字货币的交易

  • 6 BASE币交易平台软件有哪些

    BASE币,全名为Basecoin,是一种基于区块链技术的数字资产,也是当前市场上较为知名的加密货币之一。作为一种基于稳定币原理设计的加密货币,BASE币的价格相对稳定,一般维持在1:1的比例,使得用户可以更方便地进行交易和价值储存。下面将介绍三个著名的BASE币交易平台。欧易交易所(OEX)是一个全球领先的数字资产交易平台,成立于2017年。该平台提供一站式数字资产交易服务,包括BASE币的交易

  • 7 BABYPEPE币怎么出售

    在加密货币市场中,有许多不同的数字资产可供交易和投资。BABYPEPE币作为一种令人感兴趣的新兴加密货币,在市场中引起了广泛关注。本文将介绍BABYPEPE币,并分享一些著名的交易所,以帮助您了解如何出售BABYPEPE币。BABYPEPE币是一种基于区块链技术的数字资产,以其独特的特性和激励机制而闻名。它采用了去中心化的交易和智能合约技术,并具有高度安全、匿名、透明的特点。与其他加密货币不同的是

  • 8 BABY币交易所有哪些

    BABY币是一种新兴的加密数字货币,它的特点是快速、安全且具备良好的可扩展性。作为一种基于区块链技术的货币,BABY币在金融领域拥有巨大的潜力。随着加密货币市场的快速发展,更多的人开始关注和参与BABY币的交易。在众多交易所中,欧易交易所是一个备受认可的平台,它提供了丰富的交易对和多种交易类型。作为国际知名的数字货币交易所,欧易交易所的交易安全性和用户隐私保护备受赞誉。通过欧易交易所,用户可以方便

  • 9 BAO币用什么app买

    BAO币是一种数字货币,是基于区块链技术的一种加密资产。它的概念源于DeFi(去中心化金融),致力于为用户提供更多的金融创新和高收益投资机会。BAO币具有去中心化、安全、匿名等特点,正受到越来越多投资者的关注和追捧。对于想要购买BAO币的投资者来说,选择合适的交易所是至关重要的。下面介绍三个著名的交易所:欧易交易所、币安交易所和火必交易所。欧易交易所欧易交易所是一个知名的加密资产交易平台,成立于2

  • 10 MER币历史价格走势怎么样?

    MER币历史价格走势怎么样?MER币,全称Mercury Protocol,是一个基于区块链技术的社交应用协议。它旨在解决现有的社交应用在隐私保护、内容管理等方面存在的问题。MER币是Mercury Protocol生态内的数字货币,可以在Mercury Protocol中流通使用。MER币的历史价格走势相对稳定,但也经历了不少波动。2017年MER币价格走势MER币于2017年10月份上线交易所