市值: $2.6304T -1.38%
成交额(24h): $85.1349B -1.73%
恐惧与贪婪指数:

67 - 贪婪

  • 市值: $2.6304T -1.38%
  • 成交额(24h): $85.1349B -1.73%
  • 恐惧与贪婪指数:
  • 市值: $2.6304T -1.38%
加密货币
话题
百科
资讯
加密话题
视频
热门加密百科

选择语种

选择语种

选择货币

加密货币
话题
百科
资讯
加密话题
视频

什么是重入攻击以及它如何利用智能合约漏洞?

Re-entrancy attacks exploit poorly ordered state changes in smart contracts, allowing hackers to recursively withdraw funds before balances update.

2025/11/12 19:59

了解智能合约中的重入攻击

1. 重入攻击是一个严重的安全漏洞,针对区块链平台上的智能合约,特别是基于以太坊的智能合约。当恶意合约在初始执行完成之前反复回调受害者合约时,就会发生此漏洞。攻击者利用状态更改和外部调用执行的顺序。

2. 在典型场景中,存在漏洞的合约会在更新其内部余额或状态之前将资金发送到外部地址。由攻击者控制的接收合约包含一个回退函数,该函数会自动触发对受害者的提款或转账函数的另一次调用。由于状态尚未更新,系统仍认为资金可用,允许重复提款。

3. 该缺陷最臭名昭著的例子之一是 2016 年 DAO 黑客攻击,价值超过 6000 万美元的以太币通过重入漏洞被耗尽。去中心化自治组织的智能合约允许在没有适当保护措施的情况下进行递归调用,从而导致巨大的财务损失,并最终导致以太坊区块链出现有争议的硬分叉。

4. 这些攻击之所以猖獗,是因为外部函数调用可以调用不受信任的合约中的代码。如果调用合约不遵循“检查-效果-交互”模式(其中状态更改发生在任何外部交互之前),那么利用的窗口就会打开。这一设计原则现在被认为在安全智能合约开发中至关重要。

5. 现代开发框架和审计工具已经发展到可以在编译或测试阶段检测此类漏洞。 Slither 和 MythX 等静态分析工具可以通过映射控制流和标记不安全的外部调用来识别容易重入的函数。

常见的剥削媒介

1. 主要向量涉及利用对未知地址进行外部调用的付费函数。当这些函数在发送以太币之前未能更新余额或标志时,它们会为递归条目创建一个空缺。攻击者使用专门设计用于重新进入目标函数的恶意回退逻辑来编写合约。

2.另一种方法是使用去中心化金融(DeFi)协议的闪电贷来放大损害。攻击者在没有抵押的情况下借用大量代币,使用它们来操纵合约条件,并在单个交易中执行重入循环。由于一切都是原子发生的,所以贷款被偿还,利润仍然存在。

3. 某些变体针对同一合约内的多个功能。例如,如果两个单独的函数访问共享状态但不使用互斥锁或重入防护,则攻击者可以在执行过程中在它们之间跳转。这种跨功能重入绕过了仅针对单个入口点的简单保护。

4. 库和代理模式引入了额外的复杂性。如果可升级合约委托调用不安全或无法跨实现正确初始化重入防护,则即使更新后遗留漏洞也可能仍然存在。这使得彻底的回归测试变得至关重要。

5. 预言机和外部数据源也可以被间接操纵,以触发特定市场条件下的重入行为。虽然不是直接向量,但它们与资金分配逻辑的集成在与不良的状态管理相结合时会增加攻击面。

针对重入的防御策略

1. 实现检查-效果-交互模式可确保所有状态修改发生在任何外部调用之前。这消除了攻击者所依赖的竞争条件。开发人员必须在处理资产转移的每个功能中优先考虑逻辑流程规则。

2. 使用可重入保护修饰符,例如 OpenZeppelin 的ReentrancyGuard ,引入了一种锁定机制,可防止函数在已执行时重新进入。这些锁通常基于布尔标志,这些标志在敏感操作开始时设置并在敏感操作结束时清除。

3. 限制外部调用期间转发的gas可以阻止恶意后备函数进行进一步的交互。通过将 Gas 限制为 2300 个单位(该数量仅足以进行基本日志记录),调用合约可防止复杂的重入逻辑成功运行。

4. 使用自动化工具和手动审核流程进行定期审核有助于发现开发过程中遗漏的边缘情况。同行评审和正式验证方法增加了保证层,特别是对于管理数百万资产的高价值 DeFi 应用程序。

5. 采用经过良好测试的库而不是编写自定义的低级函数可以降低引入细微错误的风险。值得信赖的开源组件会受到社区的持续审查,这使得它们比容易受到监督的定制解决方案更可靠。

常见问题解答

回退函数在重入攻击中起什么作用?当合约在没有指定特定函数的情况下收到以太币时,回退函数会自动触发。在攻击中,该函数包含恶意代码,该代码会立即回调受害者合约的提款方法,从而在状态更新发生之前启用递归。

非以太坊区块链中可以发生重入吗?是的,任何支持具有外部调用和可变状态的智能合约的区块链都可能容易受到攻击。当开发人员在没有针对新环境调整安全措施的情况下移植合约时,币安智能链、Polygon 和 Avalanche 等网络也遇到了类似的漏洞。

除了标准形式之外,是否还有其他类型的重入?是的,变体包括跨功能重入(其中一个功能通过另一个功能输入)和批处理漏洞(其中一组收件人在循环中支付而无需中间状态检查)。每一个都需要量身定制的缓解策略。

闪电贷如何实现重入攻击?闪电贷允许攻击者在单笔交易中临时借入大笔资金。他们利用这些资金来影响合约行为(例如触发支付条件),并在偿还贷款之前执行重入循环,将被盗资产保留在失败的交易范围之外。

免责声明:info@kdj.com

所提供的信息并非交易建议。根据本文提供的信息进行的任何投资,kdj.com不承担任何责任。加密货币具有高波动性,强烈建议您深入研究后,谨慎投资!

如您认为本网站上使用的内容侵犯了您的版权,请立即联系我们(info@kdj.com),我们将及时删除。

相关百科

什么是 DAI?它与 USDT 有何不同?

什么是 DAI?它与 USDT 有何不同?

2026-09-08 17:00:22

市场波动模式1. 自2021年以来,Bitcoin超过68%的交易日在24小时窗口内价格波动超过15%。 2. 在流动性较低的时期,尤其是在 02:00 至 06:00 UTC 期间,以太坊表现出比 Bitcoin 更高的日内波动性。 3. 稳定币脱钩事件(例如 2023 年 3 月的 USDC 事...

为什么稳定币会失去 1 美元的挂钩?

为什么稳定币会失去 1 美元的挂钩?

2026-09-08 02:00:03

储备构成和透明度差距1. 许多稳定币声称完全由现金或短期美国国债支持,但储备披露往往缺乏实时验证机制。 2. 第三方证明可能仅每季度进行一次,从而留下较长的窗口,使不匹配的资产负债结构仍未被发现。 3. 一些发行人持有的商业票据或逆回购协议存在未反映在公共资产负债表中的交易对手风险。 4. 链下银行...

什么是加密货币中的自我托管以及为什么它很重要?

什么是加密货币中的自我托管以及为什么它很重要?

2026-09-10 04:19:32

定义和核心机制1. 自我保管是指个人保留对其私钥的完全控制权,而不将该权力委托给任何第三方服务的做法。 2. 自我托管钱包的服务器上不持有资产;相反,它提供了一个使用本地存储的加密密钥与区块链网络交互的接口。 3. 用户的设备(无论是智能手机、台式机还是硬件模块)托管种子短语和私钥,并且在正常操作期...

什么是闪电网络? Bitcoin 交易如何变得更快?

什么是闪电网络? Bitcoin 交易如何变得更快?

2026-09-08 07:00:16

闪电网络核心架构1. 闪电网络作为直接构建在 Bitcoin 区块链之上的第二层协议运行,完全依赖 Bitcoin 的加密安全模型,无需引入新的共识规则。 2. 使用2-of-2多重签名地址在参与者之间构建双向支付通道,双方必须共同签名才能将资金移出通道。 3. 每个通道都通过链上融资交易进行初始化...

什么是加密预言机?区块链如何获取真实世界的数据?

什么是加密预言机?区块链如何获取真实世界的数据?

2026-09-08 19:20:07

定义和核心功能1. 加密预言机是一种可信的第三方服务,充当区块链网络和外部数据源之间的桥梁。 2. 它获取、验证链下信息,并将其传递给部署在链上的智能合约,例如价格、体育比分、天气状况或 API 响应。 3. 如果没有预言机,智能合约将与现实世界的事件隔离,无法执行依赖于外部触发器的逻辑。 4. 预...

Bitcoin 与莱特币:主要区别是什么?

Bitcoin 与莱特币:主要区别是什么?

2026-09-08 20:20:11

起源和基础架构1. Bitcoin 于 2009 年出现,作为首个去中心化加密货币,建立在使用 SHA-256 哈希算法的工作量证明共识机制之上。 2. 莱特币于 2011 年作为 Bitcoin 开源代码库的直接分支推出,但用 Scrypt 取代了 SHA-256,有意提高了早期 ASIC 主导地...

什么是 DAI?它与 USDT 有何不同?

什么是 DAI?它与 USDT 有何不同?

2026-09-08 17:00:22

市场波动模式1. 自2021年以来,Bitcoin超过68%的交易日在24小时窗口内价格波动超过15%。 2. 在流动性较低的时期,尤其是在 02:00 至 06:00 UTC 期间,以太坊表现出比 Bitcoin 更高的日内波动性。 3. 稳定币脱钩事件(例如 2023 年 3 月的 USDC 事...

为什么稳定币会失去 1 美元的挂钩?

为什么稳定币会失去 1 美元的挂钩?

2026-09-08 02:00:03

储备构成和透明度差距1. 许多稳定币声称完全由现金或短期美国国债支持,但储备披露往往缺乏实时验证机制。 2. 第三方证明可能仅每季度进行一次,从而留下较长的窗口,使不匹配的资产负债结构仍未被发现。 3. 一些发行人持有的商业票据或逆回购协议存在未反映在公共资产负债表中的交易对手风险。 4. 链下银行...

什么是加密货币中的自我托管以及为什么它很重要?

什么是加密货币中的自我托管以及为什么它很重要?

2026-09-10 04:19:32

定义和核心机制1. 自我保管是指个人保留对其私钥的完全控制权,而不将该权力委托给任何第三方服务的做法。 2. 自我托管钱包的服务器上不持有资产;相反,它提供了一个使用本地存储的加密密钥与区块链网络交互的接口。 3. 用户的设备(无论是智能手机、台式机还是硬件模块)托管种子短语和私钥,并且在正常操作期...

什么是闪电网络? Bitcoin 交易如何变得更快?

什么是闪电网络? Bitcoin 交易如何变得更快?

2026-09-08 07:00:16

闪电网络核心架构1. 闪电网络作为直接构建在 Bitcoin 区块链之上的第二层协议运行,完全依赖 Bitcoin 的加密安全模型,无需引入新的共识规则。 2. 使用2-of-2多重签名地址在参与者之间构建双向支付通道,双方必须共同签名才能将资金移出通道。 3. 每个通道都通过链上融资交易进行初始化...

什么是加密预言机?区块链如何获取真实世界的数据?

什么是加密预言机?区块链如何获取真实世界的数据?

2026-09-08 19:20:07

定义和核心功能1. 加密预言机是一种可信的第三方服务,充当区块链网络和外部数据源之间的桥梁。 2. 它获取、验证链下信息,并将其传递给部署在链上的智能合约,例如价格、体育比分、天气状况或 API 响应。 3. 如果没有预言机,智能合约将与现实世界的事件隔离,无法执行依赖于外部触发器的逻辑。 4. 预...

Bitcoin 与莱特币:主要区别是什么?

Bitcoin 与莱特币:主要区别是什么?

2026-09-08 20:20:11

起源和基础架构1. Bitcoin 于 2009 年出现,作为首个去中心化加密货币,建立在使用 SHA-256 哈希算法的工作量证明共识机制之上。 2. 莱特币于 2011 年作为 Bitcoin 开源代码库的直接分支推出,但用 Scrypt 取代了 SHA-256,有意提高了早期 ASIC 主导地...

查看所有文章

User not found or password invalid

Your input is correct