智能合约 Reentrancy Attack

重入攻击

合约在外部调用完成前状态未更新,被恶意合约反复回调提款的经典漏洞,2016 年 The DAO 事件直接催生了以太坊分叉。现代审计对重入有成熟检查模式,但组合式 DeFi 仍不时出现新变种。教训:状态先改、转账后做(checks-effects-interactions)。

重入攻击利用「外部调用期间状态未更新」的时序漏洞:合约 A 给用户转账,转账触发用户合约的回调,回调里再次调用 A 的提款函数——此时余额还没清零,于是再提一次,循环到掏空。2016 年 The DAO 事件让以太坊硬分叉,是史上最著名的重入案。

现状

  • 经典漏洞已被模式化防御(检查-生效-交互顺序、重入锁)根治于新代码
  • 但跨合约的组合重入(读状态时的不一致)仍在新项目里复发

完整机制拆解与案例看重入攻击详解