事件概述:40天失血1700万美元
据MarsBit报道,过去40天内,黑客利用五个已被弃用但仍保留在链上运行状态的智能合约,累计盗走约1700万美元的资金。这些合约分别来自DxSale、TrustedVolumes、Huma Finance V1、Raydium Legacy AMM和Aztec Connect五个不同的DeFi项目。攻击者通过调用或利用旧合约中未移除的权限、未提取的流动性或残留的管理员功能,轻松将资金转走。
涉及项目与攻击手法
这五个合约的共性是:项目方在升级或迁移至新版本后,没有完全「杀死」旧合约。例如,Raydium Legacy AMM合约虽已不再使用,但其中仍锁定了部分LP代币和权限;DxSale的旧销售合约保留了管理员提取权限;TrustedVolumes的弃用合约仍持有用户存款;Huma Finance V1和Aztec Connect的旧版本合约同样存在未收回的资金入口。黑客通过链上分析工具发现这些「僵尸合约」后,直接调用权限函数或利用未撤销的approve,将资金转入自己地址。
僵尸合约的系统性风险
「僵尸合约」指那些已被项目方宣布弃用、停止维护,但智能合约代码仍部署在链上且保留有状态和资金的合约。在以太坊等智能合约平台上,一旦合约部署便无法被真正删除(除非使用SELFDESTRUCT操作码)。项目方即使不再使用,若没有正确调用selfdestruct或手动撤回所有资产,合约就会成为高风险目标。此次事件涉及的五份合约均未执行完整的退役流程,导致黑客得手。
安全建议与行业启示
对于DeFi项目方,每次合约升级或迁移时必须执行以下操作:1) 调用selfdestruct销毁旧合约(若业务允许);2) 手动提取合约中所有原生代币和ERC-20代币;3) 撤销所有外部合约的授权额度(如approve、setAuthority等);4) 移除管理员角色的权限。对于用户,应定期检查自己曾交互的旧合约是否仍有资金余额或授权,及时撤销。此次1700万美元的教训再次说明,智能合约安全不仅要关注新合约的审计,更要重视旧合约的「善后」工作。

