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

时间:2024-09-27 编辑: 浏览:(605)

作者: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 最新行情晚报:SOL索拉纳价格达160.3美元/枚,日内跌幅-2.01%

    索拉纳solana今日行情消息,SOL索拉纳最新价格:$160.3,24小时涨1.42%,交易量$30.1亿从k线图的解析中看出,现在属于震荡趋势。相比07:00较大幅上涨,突破01:00的高点。超买状态,交易量减少,价格上升。 威廉指标表明,现在是超买。最近交易量有所减少,交易量比前几小时减少,价格上升,交易量下降:上涨动能减弱。市场超买,上涨动能减弱,建议继续观望,等待明确方向后再操作。以上内

  • 2 某聪明钱通过早期买入Base链上meme币MIGGLES,获得6258%收益率

    BlockBeats 消息,7 月 19 日,据 ai_9684xtpa 监测,某聪明钱交易 MIGGLES 回报率高达 6258%。该聪明钱在代币上线后花费 2.6 枚 ETH 买入 1913 万枚 MIGGLES,均价 0.00047 美元。目前已卖出 75% 的持仓,获利 27.9 万美元,剩余 464 万枚仍浮盈 28.3 万美元,共获利 56.2 万美元。

  • 3 香港金管局公布稳定币发行人沙盒参与者

    Foresight News 消息,香港金融管理局公布稳定币发行人沙盒参与者名单。以下机构将参与沙盒,由今日起生效:京东币链科技(香港)有限公司 ,圆币创新科技有限公司,及渣打银行(香港)有限公司、安拟集团有限公司、Hong Kong Telecommunications (HKT) Limited。这些机构在评估过程中能够展示在香港发展稳定币发行业务的真实意愿和合理计划,以及在沙盒下的拟议运作会

  • 4 RWAFinance宣布销毁62%RWAS代币

    7月18日消息,Web3金融平台RWA Finance宣布执行重要的代币销毁,高达62%的RWAS代币总供应量,总计约3.1亿枚RWAS代币被销毁。此外,RWA Finance宣称用户卖出RWAS代币的手续费会用来每天回购RWAS进行销毁,并每日进行公示。所有RWAS代币持有者都可见证公开销毁的一刻。 这一举措旨在增加RWAS代币的稀缺性和价值,从而提升RWAS代币经济体系的健康发展。

  • 5 BlockInc.旗下的消费者支付平台CashApp关闭其在英国的业务

    据彭博社,Block Inc. 旗下的消费者支付平台 Cash App 将于 9 月 15 日关闭其在英国的业务。Cash App 于 2018 年在英国首次推出,是其第一个国际市场。Block 表示,此举是为了专注于美国市场,并降低全球扩张的优先级。尽管关停英国业务,Block 的其他运营不受影响。Block 在 2024 年第一季度报告的总利润为 20.9 亿美元,其中 Cash App 全球

  • 6 Mantle核心贡献者于8小时前将625万枚MNT转入Bybit

    BlockBeats 消息,7 月 19 日,据链上数据分析师 @ai_9684xtpa 监测,Mantle 核心贡献者于 8 小时前将 625 万枚 MNT 充值进 Bybit,价值 521 万美元。据悉,多签地址 0xc21...3b0E2 在 23 小时前收到 Mantle Core Contributor Budget 合约分发的 600 万枚代币,经过多次中转后通过地址 0x095...

  • 7 实时价格午报:SOL索拉纳站上163.3美元/枚,涨幅达2.03%

    索拉纳solana最新价格消息,SOL索拉纳实时价格上涨2.03%至$163.3,交易量$21.84亿从k线图的分析中得知,目前是震荡趋势。相比02:00小幅上涨,相比03:00小幅下跌,比19:00有所回升。价格和交易量同时上升是市场买盘强劲的标志,显示出买家愿意在更高的价格上进行大量交易,表明市场情绪乐观,看涨情绪浓厚。在这种情况下,价格有望继续上涨,因市场动能强劲,买盘持续增加。建议投资者关

  • 8 Aethir推出5000万美元社区奖励计划,激励生态积极参与者

    Aethir将重新分配用于与io.net代币互换计划的ATH代币。Aethir 和 io.net 代币互换的最新情况经过长时间的讨论,Aethir宣布,与 io.net的5000万美元代币互换计划短期内将被搁置。这是两个基金会的共同决定(下文将介绍详细情况)。有鉴于此,Aethir 基金会很高兴地向大家宣布 Aethir社区奖励计划,该计划决定将最初用于交换计划的价值 5000 万美元的 ATH

  • 9 灰度以太坊迷你信托的费用为0.25%

    灰度披露其以太坊迷你信托的费用为 0.25%。 而此前披露的灰度现货以太坊 ETF 费用为 2.5%。

  • 10 Sanctum:LFG上空投分配查询再次上线,新增1000名符合资格用户

    BlockBeats 消息,7 月 17 日,Solana 生态流动性质押协议 Sanctum 在社交媒体上发文表示,LFG 网站上的空投分配检查器已再次上线。由于官方自身统计的错误,非 Cupcakes 持有者的分配可能会略有减少,最多 3%。此外,Sanctum 还新增了 1000 名符合空投资格的用户。