重入攻击
合约在外部调用完成前状态未更新,被恶意合约反复回调提款的经典漏洞,2016 年 The DAO 事件直接催生了以太坊分叉。现代审计对重入有成熟检查模式,但组合式 DeFi 仍不时出现新变种。教训:状态先改、转账后做(checks-effects-interactions)。
重入攻击利用「外部调用期间状态未更新」的时序漏洞:合约 A 给用户转账,转账触发用户合约的回调,回调里再次调用 A 的提款函数——此时余额还没清零,于是再提一次,循环到掏空。2016 年 The DAO 事件让以太坊硬分叉,是史上最著名的重入案。
现状
- 经典漏洞已被模式化防御(检查-生效-交互顺序、重入锁)根治于新代码
- 但跨合约的组合重入(读状态时的不一致)仍在新项目里复发
完整机制拆解与案例看重入攻击详解。