市值: $2.6836T 2.96%
成交额(24h): $86.4075B 26.77%
恐惧与贪婪指数:

42 - 中立

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

选择语种

选择语种

选择货币

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

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

Reentrancy attacks exploit Ethereum’s external call mechanism, allowing malicious contracts to recursively drain funds before state updates—famously enabling The DAO hack.

2025/12/24 02:20

了解重入攻击

1. 当恶意合约在初始执行完成之前重复回调另一个合约的易受攻击的函数时,就会发生重入攻击。

2. 此漏洞利用以太坊智能合约中的外部调用机制,在状态更改最终确定之前将控制权转移到外部地址。

3. 攻击者部署一个包含回退或接收函数的合约,该函数会触发目标提款或转账逻辑的递归调用。

4. 由于以太坊以单线程、同步的方式执行调用,并且默认情况下不强制执行原子状态更新,因此在回调窗口期间余额或标志可能保持不变。

5. 因此,在没有适当检查的情况下,资金可能会从同一余额中多次被耗尽,从而违反了系统预期的经济不变性。

著名的历史例子:DAO 黑客事件

1. 2016 年 6 月,名为 The DAO 的去中心化自治组织被盗走约360 万枚 ETH ,当时价值超过 5000 万美元。

2. 该漏洞存在于分割函数中,该函数允许用户在提案通过后撤回其份额,但在转移资金后更新了贡献者的余额。

3. 攻击者部署了一个带有后备函数的合约,该函数在余额更新发生之前递归调用 split 函数。

4. 每次递归调用都会读取原始余额值,从而可以从相同的分配金额中重复提取。

5. 该事件引发了以太坊区块链的硬分叉,导致以太坊和以太坊经典成为两条独立的链。

实现可重入的技术条件

1. 对不受信任地址的外部调用必须先于关键状态修改,例如余额更新或访问标志切换。

2. 合约必须依赖反映所有权或权利的可变存储变量,而不强制执行重入防护。

3. 缺乏互斥模式(例如使用锁定的布尔值或重入修饰符)会使嵌套调用上下文中的入口点不受保护。

4. 由于缺乏gas补贴限制和自动恢复行为,使用call()等低级调用而不是transfer()或send()等更安全的替代方法会增加风险。

5. 从过时或未经审核的库继承的合约可能会无意中暴露具有继承的可重入表面的函数。

今天部署的缓解策略

1. 检查-效果-交互模式要求验证条件、更新内部状态,然后才执行外部调用。

2. 重入防护(例如 OpenZeppelin 的ReentrancyGuard )使用锁定的布尔值来防止活动执行期间函数重入。

3. 使用transfer()或send()代替原始call()会强制执行2300-gas 限制,使得后备函数无法执行复杂的逻辑,包括进一步的可重入调用。

4. Slither 和 MythX 等静态分析工具可检测开发和 CI 管道期间潜在的重入向量。

5. Certora 和 KEVM 等正式验证框架在任意调用序列(包括嵌套外部调用)下验证契约不变量。

常见问题解答

Q1.重入攻击会发生在以太坊以外的区块链上吗? A1。是的。如果合约复制相同的有缺陷的交互模式,任何与 EVM 兼容的链(包括 BNB Chain、Polygon 和 Arbitrum)都同样容易受到影响。具有类似外部调用语义的非 EVM 链,例如 Solana 在某些条件下的跨程序调用,也面临类似的风险。

Q2。使用 require() 语句足以防止重入吗? A2。不需要。Require 语句验证先决条件,但不会阻止重新输入。它们在状态改变之前运行,并且一旦发生外部调用就无法限制后续回调。

Q3。基于代理的可升级合约是否会引入额外的可重入表面? A3。是的。如果实现合约缺乏重入保护,并且代理在不拦截或验证调用深度的情况下转发调用,则可升级模式可以继承或放大现有漏洞。

Q4。即使没有恶意合约,闪电贷也能触发重入吗? A4。是的。闪电贷攻击通常将价格预言机操纵与重入结合起来,以耗尽流动性池或贷款协议,如针对 dYdX、Harvest Finance 和 BurgerSwap 的攻击——所有这些都依赖于关键路径内不受保护的外部调用。

免责声明: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 事...

USDT、USDC 和 DAI:这些稳定币有何不同?

USDT、USDC 和 DAI:这些稳定币有何不同?

2026-09-20 05:59:44

Bitcoin 减半机制1. Bitcoin 的协议强制执行固定的发行时间表,其中大约每 210,000 个区块,区块奖励就会减少一半。 2. 该事件大约每四年发生一次,直接减少了新进入流通的 BTC 数量。 3.截至2020年减半,矿工每区块获得6.25 BTC;下一次减少将达到 3.125 BT...

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

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

2026-09-08 02:00:03

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

什么是加密稳定币 Depeg?

什么是加密稳定币 Depeg?

2026-09-24 16:39:41

脱钩的定义和机制1. 当稳定币的市场价格显着偏离其预期锚定价值(对于与美元挂钩的代币来说,最常见的是 1.00 美元)时,就会发生加密稳定币脱钩。 2. 这种偏差不是短暂的波动,而是持续的信心丧失,体现在订单簿失衡、流动性撤回和级联赎回上。 3. 脱钩源于结构性缺陷,包括储备不足或不透明、算法再平衡...

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

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

2026-09-10 04:19:32

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

托管钱包与非托管钱包:有什么区别?

托管钱包与非托管钱包:有什么区别?

2026-09-17 03:19:46

托管钱包定义1. 托管钱包是一种由第三方服务提供商持有和管理用户私钥的数字资产存储解决方案。 2. 用户通过电子邮件、密码和双因素身份验证等登录凭据访问资金,而不是直接加密控制。 3. 简化帐户恢复——忘记密码或失去设备访问权限的用户可以通过平台管理的身份验证协议重新获得访问权限。 4. 这些钱包通...

什么是 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 事...

USDT、USDC 和 DAI:这些稳定币有何不同?

USDT、USDC 和 DAI:这些稳定币有何不同?

2026-09-20 05:59:44

Bitcoin 减半机制1. Bitcoin 的协议强制执行固定的发行时间表,其中大约每 210,000 个区块,区块奖励就会减少一半。 2. 该事件大约每四年发生一次,直接减少了新进入流通的 BTC 数量。 3.截至2020年减半,矿工每区块获得6.25 BTC;下一次减少将达到 3.125 BT...

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

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

2026-09-08 02:00:03

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

什么是加密稳定币 Depeg?

什么是加密稳定币 Depeg?

2026-09-24 16:39:41

脱钩的定义和机制1. 当稳定币的市场价格显着偏离其预期锚定价值(对于与美元挂钩的代币来说,最常见的是 1.00 美元)时,就会发生加密稳定币脱钩。 2. 这种偏差不是短暂的波动,而是持续的信心丧失,体现在订单簿失衡、流动性撤回和级联赎回上。 3. 脱钩源于结构性缺陷,包括储备不足或不透明、算法再平衡...

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

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

2026-09-10 04:19:32

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

托管钱包与非托管钱包:有什么区别?

托管钱包与非托管钱包:有什么区别?

2026-09-17 03:19:46

托管钱包定义1. 托管钱包是一种由第三方服务提供商持有和管理用户私钥的数字资产存储解决方案。 2. 用户通过电子邮件、密码和双因素身份验证等登录凭据访问资金,而不是直接加密控制。 3. 简化帐户恢复——忘记密码或失去设备访问权限的用户可以通过平台管理的身份验证协议重新获得访问权限。 4. 这些钱包通...

查看所有文章

User not found or password invalid

Your input is correct