市值: $2.812T -5.85%
成交额(24h): $186.0816B 66.46%
恐惧与贪婪指数:

38 - 恐惧

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

选择语种

选择语种

选择货币

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

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

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),我们将及时删除。

相关百科

加密货币和区块链技术的未来是什么?

加密货币和区块链技术的未来是什么?

2026-01-11 21:19:34

去中心化金融的演变1. DeFi 协议已经从简单的借贷扩展到包括结构性产品、保险机制和衍生品交易。 2. 智能合约审计变得更加严格,多公司验证流程现已成为主要协议发布的标准。 3. 跨链互操作解决方案现在支持 40 多个不同的区块链网络,无需中心化桥梁即可实现资产转移。 4. 收益聚合策略已经发展到...

中本聪是谁? (Bitcoin 的创造者)

中本聪是谁? (Bitcoin 的创造者)

2026-01-12 07:00:05

笔名的由来1. Satoshi Nakamoto 是开发 Bitcoin、撰写其原始白皮书并设计和部署其第一个实现的个人或团体使用的名称。 2. 该名称首次出现于 2008 年,当时一份名为“Bitcoin:点对点电子现金系统”的白皮书被发布到密码学邮件列表中。 3. 尚未确认可验证的身份,所有已知...

什么是加密货币空投以及如何获得?

什么是加密货币空投以及如何获得?

2026-01-22 14:39:35

了解加密货币空投1. 加密空投是向多个钱包地址分配免费代币或代币,通常由区块链项目发起,以提高知名度、奖励早期支持者或分散代币所有权。 2. 这些分配可能不需要任何前期成本,尽管有些分配需要最低限度的参与,例如持有特定的加密货币、关注社交媒体帐户或加入社区渠道。 3. 空投通常与协议升级、主网启动或...

什么是 DeFi 中的无常损失以及如何避免它?

什么是 DeFi 中的无常损失以及如何避免它?

2026-01-13 11:59:34

了解无常损失1. 当存入自动做市商(AMM)流动性池的代币价值与外部持有的代币价值出现偏差时,就会发生无常损失。 2. 出现这种现象的原因是大多数AMM采用恒定乘积公式,池内代币价格的比例必须与外部市场价格保持一致。 3. 当一对资产中的一种资产相对于另一种资产大幅升值时,套利者通过购买较便宜的资产...

如何桥接不同区块链之间的加密资产?

如何桥接不同区块链之间的加密资产?

2026-01-14 18:19:42

跨链桥机制1. 原子交换实现了两个区块链之间直接的点对点资产交换,无需中介,依靠哈希时间锁定合约来保证公平性和最终性。 2. 可信桥通过中心化或半中心化托管人进行操作,这些托管人持有用户存款并在目标链上铸造包装代币。 3. 去信任桥使用智能合约和加密证明(例如轻客户端或零知识验证)来验证状态转换,而...

什么是白皮书以及如何阅读白皮书?

什么是白皮书以及如何阅读白皮书?

2026-01-12 07:19:48

了解白皮书结构1. 加密货币领域的白皮书充当基础技术和概念文件,概述了区块链项目的目的、架构和机制。 2. 通常以摘要或执行摘要开始,介绍项目旨在解决的问题和建议的解决方案。 3. 引言部分定义了核心术语,在现有技术或经济限制范围内建立了背景,并引用了先前的工作或类似系统。 4. 技术规范如下,详细...

加密货币和区块链技术的未来是什么?

加密货币和区块链技术的未来是什么?

2026-01-11 21:19:34

去中心化金融的演变1. DeFi 协议已经从简单的借贷扩展到包括结构性产品、保险机制和衍生品交易。 2. 智能合约审计变得更加严格,多公司验证流程现已成为主要协议发布的标准。 3. 跨链互操作解决方案现在支持 40 多个不同的区块链网络,无需中心化桥梁即可实现资产转移。 4. 收益聚合策略已经发展到...

中本聪是谁? (Bitcoin 的创造者)

中本聪是谁? (Bitcoin 的创造者)

2026-01-12 07:00:05

笔名的由来1. Satoshi Nakamoto 是开发 Bitcoin、撰写其原始白皮书并设计和部署其第一个实现的个人或团体使用的名称。 2. 该名称首次出现于 2008 年,当时一份名为“Bitcoin:点对点电子现金系统”的白皮书被发布到密码学邮件列表中。 3. 尚未确认可验证的身份,所有已知...

什么是加密货币空投以及如何获得?

什么是加密货币空投以及如何获得?

2026-01-22 14:39:35

了解加密货币空投1. 加密空投是向多个钱包地址分配免费代币或代币,通常由区块链项目发起,以提高知名度、奖励早期支持者或分散代币所有权。 2. 这些分配可能不需要任何前期成本,尽管有些分配需要最低限度的参与,例如持有特定的加密货币、关注社交媒体帐户或加入社区渠道。 3. 空投通常与协议升级、主网启动或...

什么是 DeFi 中的无常损失以及如何避免它?

什么是 DeFi 中的无常损失以及如何避免它?

2026-01-13 11:59:34

了解无常损失1. 当存入自动做市商(AMM)流动性池的代币价值与外部持有的代币价值出现偏差时,就会发生无常损失。 2. 出现这种现象的原因是大多数AMM采用恒定乘积公式,池内代币价格的比例必须与外部市场价格保持一致。 3. 当一对资产中的一种资产相对于另一种资产大幅升值时,套利者通过购买较便宜的资产...

如何桥接不同区块链之间的加密资产?

如何桥接不同区块链之间的加密资产?

2026-01-14 18:19:42

跨链桥机制1. 原子交换实现了两个区块链之间直接的点对点资产交换,无需中介,依靠哈希时间锁定合约来保证公平性和最终性。 2. 可信桥通过中心化或半中心化托管人进行操作,这些托管人持有用户存款并在目标链上铸造包装代币。 3. 去信任桥使用智能合约和加密证明(例如轻客户端或零知识验证)来验证状态转换,而...

什么是白皮书以及如何阅读白皮书?

什么是白皮书以及如何阅读白皮书?

2026-01-12 07:19:48

了解白皮书结构1. 加密货币领域的白皮书充当基础技术和概念文件,概述了区块链项目的目的、架构和机制。 2. 通常以摘要或执行摘要开始,介绍项目旨在解决的问题和建议的解决方案。 3. 引言部分定义了核心术语,在现有技术或经济限制范围内建立了背景,并引用了先前的工作或类似系统。 4. 技术规范如下,详细...

查看所有文章

User not found or password invalid

Your input is correct