什么是重入攻击?DeFi 黑客最爱的经典漏洞
2016 年,以太坊史上最著名的黑客事件「The DAO 被盗」,导致以太坊分叉出 ETC。罪魁祸首就是——重入攻击(Reentrancy)。
它至今仍是 DeFi 被黑的常见手法。理解它,能帮你看懂「为什么这个合约不安全」。
今天我们用生活化的比喻,讲清重入攻击的原理与防御。

一、什么是重入攻击?
——趁「记账」前反复取钱
重入攻击利用合约的一个逻辑缺陷:在「转账给用户」之后才「更新余额」,攻击者趁这个空档反复调用提款。
打个比方:ATM 先吐钱、后扣账。你在它扣账前疯狂按取款,就能把卡里没有的钱全取空。
攻击的关键条件
- 先转账后记账:状态更新顺序错误
- 外部调用:转账会触发攻击者合约的回调
- 可递归:回调里再次调用提款函数
二、The DAO 事件回顾
影响深远
- 漏洞:The DAO 提款函数先打款、后更新余额
- 攻击:黑客用恶意合约递归提款
- 损失:约 360 万 ETH 被抽走
- 后果:以太坊硬分叉,链一分为二(ETH/ETC)
| 维度 | 影响 |
|---|---|
| 技术 | 重入成经典教学案例 |
| 社区 | 分叉引发「代码即法律」大辩论 |
| 生态 | 催生更严格的安全规范 |
三、如何防御?
- 先记账后转账:Checks-Effects-Interactions 模式
- 重入锁:nonReentrant 修饰符,禁止函数递归进入
- 限制外部调用:减少不受信任的回调
- 用成熟库:OpenZeppelin 等已内置防护
四、普通用户能做什么?
- 看审计:优先选经审计、防重入的项目
- 避新合约:未经检验的新协议先观望
- 分散资金:不把全部资产押在单一合约
- 关注安全动态:跟踪慢雾等安全机构预警

总结
重入攻击是 DeFi 世界的「经典教材」,简单却曾造成天价损失。
先记账、后转账 + 重入锁,是防御的核心思路。
作为用户,认准「已审计、防重入」的项目,是保护资金的实用底线。
本文关键词:重入攻击、Reentrancy、智能合约漏洞、The DAO、DeFi安全
原创文章,作者:币圈新手指南,如若转载,请注明出处:https://www.mateip.com/archives/4166.html