-
bitcoin $87959.907984 USD
1.34% -
ethereum $2920.497338 USD
3.04% -
tether $0.999775 USD
0.00% -
xrp $2.237324 USD
8.12% -
bnb $860.243768 USD
0.90% -
solana $138.089498 USD
5.43% -
usd-coin $0.999807 USD
0.01% -
tron $0.272801 USD
-1.53% -
dogecoin $0.150904 USD
2.96% -
cardano $0.421635 USD
1.97% -
hyperliquid $32.152445 USD
2.23% -
bitcoin-cash $533.301069 USD
-1.94% -
chainlink $12.953417 USD
2.68% -
unus-sed-leo $9.535951 USD
0.73% -
zcash $521.483386 USD
-2.87%
什么是重入攻击?智能合约如何防御它?
Re-entrancy attacks exploit unchecked external calls in smart contracts, allowing attackers to recursively withdraw funds before state updates, as seen in the $60M DAO hack.
2025/11/13 03:40
了解智能合约中的重入攻击
1. 当恶意合约在初始执行完成之前重复回调另一个合约的易受攻击的函数时,就会发生重入攻击。此漏洞利用了状态更改和外部调用执行的顺序。
2. 最臭名昭著的例子是 2016 年 DAO 黑客攻击,攻击者通过递归地从未能在发送以太币之前更新余额的合约中提取资金,损失了超过 6000 万美元。
3. 这些攻击通常针对对不受信任的合约进行外部调用、同时将关键状态变量保持在不一致状态的函数。
4. 在递归调用过程中,攻击者的后备或接收函数再次触发相同的提款逻辑,有效绕过访问控制或余额检查。
5. 核心漏洞在于违反了检查-效果-交互模式,其中状态修改应始终在外部调用之前进行,以防止执行期间的操纵。
Solidity 中常见的脆弱模式
1. 在不首先更新内部会计的情况下将以太币或代币发送到用户控制的地址的功能是重入的主要目标。
2. 使用低级调用(例如使用本机以太币传输进行调用)的合约尤其面临风险,因为它们转发所有剩余的 Gas,从而实现复杂的回调逻辑。
3. 当调用本身触发递归条目时,依赖调用后验证的逻辑会失败,从而使这些检查在损坏完成之前无效。
4. 如果父合约没有强制实施适当的保护,即使子合约看起来是安全的,继承结构也可能会无意中暴露函数。
5. 如果委托调用机制允许通过共享存储布局进行状态损坏,则库或代理模式可能会传播漏洞。
有效的防御机制
1. 严格实现“检查-效果-交互”模式:始终验证输入、更新状态变量,然后继续进行外部调用。
2. 使用已建立的库(例如 OpenZeppelin 的 ReentrancyGuard)中的重入防护,它使用互斥锁来阻止递归条目。
3. 优先选择通过转账或发送方式转移资金,而不是调用,因为这些方法限制了gas转发并减少了攻击面。
4、采用拉拉式支付模式,由用户领取资金,而不是自动调度,消除外呼风险。
5. 在开发过程中应用严格的静态分析工具和形式验证,以在部署之前检测潜在的递归路径。
常见问题解答
是什么让后备函数在重入场景中变得危险?当回退函数包含重新调用调用合约的业务函数的逻辑时,它就会变得危险。如果原始合约在进行外部调用之前尚未更新其状态,则此递归触发器可以利用过时的余额或权限。
多个合约交互中是否可以发生重入?是的,当同一合约内的不同函数在没有适当同步的情况下访问共享状态时,跨函数重入是可能的。攻击者可能会触发一个外部调用的函数,然后在状态更新发生之前使用回退进入第二个易受攻击的函数。
非以太坊合约是否不受重入影响?不,处理 ERC-20 传输的代币合约也可以被利用。如果代币传输触发接收者挂钩(如批准+回调),并且接收合约在传输中操纵发送者的状态,则会出现类似的递归漏洞。
编译器升级如何帮助减少重入?新版本的 Solidity 包括更安全的默认值和针对已知反模式的警告。例如,明确的可见性说明符和改进的汽油津贴规则减少了意外行为。然而,编译器功能本身并不能消除需要架构规则的逻辑缺陷。
免责声明:info@kdj.com
所提供的信息并非交易建议。根据本文提供的信息进行的任何投资,kdj.com不承担任何责任。加密货币具有高波动性,强烈建议您深入研究后,谨慎投资!
如您认为本网站上使用的内容侵犯了您的版权,请立即联系我们(info@kdj.com),我们将及时删除。
- 比特币、eCash 分叉和空投动态:深入探讨加密货币的最新争议
- 2026-05-03 12:55:01
- 2026 年迈阿密共识:Web3、区块链、加密货币、NFT、Metaverse,会议,5 月 5 日 — 华尔街与数字前沿相遇的地方
- 2026-05-02 12:45:01
- 美联储维持利率稳定,地缘政治紧张局势引发比特币价格下跌
- 2026-05-01 06:45:01
- 比特币矿工为电网供电:收购俄亥俄州天然气厂开启数字黄金新时代
- 2026-05-01 00:45:01
- MegaETH的MEGA代币登陆纽约:为实时区块链设定新的性能基准
- 2026-05-01 00:55:01
- Solana 的滑坡:价格预测表明阻力损失和潜在的进一步下跌
- 2026-05-01 06:45:01
相关百科
什么是模块化区块链? (架构基础)
2026-04-16 12:39:57
什么是模块化区块链? 1. 模块化区块链是一种架构范例,有意将核心区块链功能分为不同的、可互操作的层。 2. 与执行、共识、数据可用性和结算都发生在同一条链上的单链不同,模块化设计将每个责任分配给专门的层。 3. 这种分离实现了独立优化——共识可以调整最终速度,而数据可用性层则专注于吞吐量和可验证性...
如何识别假加密货币网站? (欺诈检测)
2026-04-16 13:19:40
域名分析1. 合法的加密货币平台使用干净、令人难忘的域名——通常将品牌名称或核心服务包含在标准拉丁字符中。 2. 假冒网站经常采用视觉欺骗性替换:将“o”替换为“0”,将“l”替换为“1”,或将“I”替换为“|”模仿 binance.com 或 coinbase.com 等受信任域。 3. 可疑域名...
区块链中的预言机是什么? (外部数据)
2026-04-11 03:59:39
定义和核心功能1. 区块链中的预言机是一种可信的第三方服务,为智能合约提供外部数据。 2. 它充当链上逻辑和链下信息源(例如 API、数据库、网络源或物联网设备)之间的桥梁。 3. 如果没有预言机,智能合约将仅限于已经存储在区块链分类账中的数据。 4. 合同执行的完整性在很大程度上取决于Oracle...
如何解释交易哈希(TxID)? (付款证明)
2026-04-10 23:19:44
什么是交易哈希? 1. 交易哈希,也称为 TxID 或交易 ID,是通过将加密哈希函数应用于区块链交易的序列化数据而生成的唯一字母数字字符串。 2. 它作为每个交易的不可变指纹,确保在正常操作下没有两个不同的交易产生相同的哈希值。 3、不同链的长度和字符集有所不同:Bitcoin使用64个字符的小写...
什么是GameFi? (边玩边赚钱的基础知识)
2026-04-13 11:00:17
定义及核心架构1. GameFi代表游戏与金融的融合,完全建立在公共区块链基础设施上。 2. 它将去中心化金融原语——例如质押、流动性提供、流动性挖矿和治理投票——直接嵌入到交互式游戏机制中。 3. 每项游戏内资产都以不可替代代币(NFT)的形式呈现,赋予玩家跨平台可验证、可转让和可组合的所有权。 ...
如何使用NFT市场? (购买和销售)
2026-04-19 12:40:30
设置 Web3 钱包1. 通过官方浏览器扩展或移动应用程序安装 MetaMask 或 Trust Wallet。 2. 创建一个新钱包并离线安全存储 12 字恢复短语。 3. 使用原生链代币(以太坊为 ETH、OKX 链为 OKT、Polygon 为 MATIC)为钱包提供资金,以支付 Gas 费。...
什么是模块化区块链? (架构基础)
2026-04-16 12:39:57
什么是模块化区块链? 1. 模块化区块链是一种架构范例,有意将核心区块链功能分为不同的、可互操作的层。 2. 与执行、共识、数据可用性和结算都发生在同一条链上的单链不同,模块化设计将每个责任分配给专门的层。 3. 这种分离实现了独立优化——共识可以调整最终速度,而数据可用性层则专注于吞吐量和可验证性...
如何识别假加密货币网站? (欺诈检测)
2026-04-16 13:19:40
域名分析1. 合法的加密货币平台使用干净、令人难忘的域名——通常将品牌名称或核心服务包含在标准拉丁字符中。 2. 假冒网站经常采用视觉欺骗性替换:将“o”替换为“0”,将“l”替换为“1”,或将“I”替换为“|”模仿 binance.com 或 coinbase.com 等受信任域。 3. 可疑域名...
区块链中的预言机是什么? (外部数据)
2026-04-11 03:59:39
定义和核心功能1. 区块链中的预言机是一种可信的第三方服务,为智能合约提供外部数据。 2. 它充当链上逻辑和链下信息源(例如 API、数据库、网络源或物联网设备)之间的桥梁。 3. 如果没有预言机,智能合约将仅限于已经存储在区块链分类账中的数据。 4. 合同执行的完整性在很大程度上取决于Oracle...
如何解释交易哈希(TxID)? (付款证明)
2026-04-10 23:19:44
什么是交易哈希? 1. 交易哈希,也称为 TxID 或交易 ID,是通过将加密哈希函数应用于区块链交易的序列化数据而生成的唯一字母数字字符串。 2. 它作为每个交易的不可变指纹,确保在正常操作下没有两个不同的交易产生相同的哈希值。 3、不同链的长度和字符集有所不同:Bitcoin使用64个字符的小写...
什么是GameFi? (边玩边赚钱的基础知识)
2026-04-13 11:00:17
定义及核心架构1. GameFi代表游戏与金融的融合,完全建立在公共区块链基础设施上。 2. 它将去中心化金融原语——例如质押、流动性提供、流动性挖矿和治理投票——直接嵌入到交互式游戏机制中。 3. 每项游戏内资产都以不可替代代币(NFT)的形式呈现,赋予玩家跨平台可验证、可转让和可组合的所有权。 ...
如何使用NFT市场? (购买和销售)
2026-04-19 12:40:30
设置 Web3 钱包1. 通过官方浏览器扩展或移动应用程序安装 MetaMask 或 Trust Wallet。 2. 创建一个新钱包并离线安全存储 12 字恢复短语。 3. 使用原生链代币(以太坊为 ETH、OKX 链为 OKT、Polygon 为 MATIC)为钱包提供资金,以支付 Gas 费。...
查看所有文章














