僵尸智能合约:链上遗留代码的生存与风险
僵尸智能合约是指项目团队已弃用或停止维护,但仍可在链上运行、持有资金、接受调用或执行逻辑的合约代码。公开的弃用通知或关闭前端界面并不会禁用合约本身。字节码仍在其地址上保持活跃,只要调用者提供有效输入,交互就会持续进行。
在DeFi领域,这导致大量被遗弃的合约长期留存,它们在链上保留着经济价值和可调用的入口点。攻击者会探测这些端点,而机器人或不知情的用户可能会与遗留地址交互。由于以太坊合约默认不可变,只有通过显式的升级设计才能改变其行为,因此风险持续存在。
如果升级路径或管理员权限被移除或放弃,团队可能无法暂停、修补或停用遗留合约。这一限制源于以太坊的不可变模型以及代理/UUPS/钻石模式对管理员角色的依赖。
僵尸智能合约如何持续存在于链上
以太坊智能合约一旦部署便无法更改。任何改变行为的能力都必须通过代理、UUPS或钻石等模式显式设计,这些模式将调用委托给可升级的逻辑。这些模式依赖于管理员密钥或治理角色。如果这些角色配置错误、被泄露或放弃,即使团队已公开弃用合约,也可能失去修复或完全停用合约的能力。弃用产品或关闭网站不会影响链上的字节码。地址仍然可调用,任何残留的状态或价值都会持续存在。攻击者可以直接通过交易进行交互,而仍指向遗留地址的集成方可能无意中将用户引导至已弃用的逻辑。僵尸合约现象在学术和实证研究中已被观察多年。
弃用如何转化为攻击面
弃用后的风险并非理论上的。它源于事件分析中发现的几种实际机制:
实时入口点:即使项目宣布弃用,函数仍然可调用,使有用操作对攻击者开放。残留价值:不可变合约可能仍持有资金或流动性提供者头寸,使其成为针对性利用或状态操纵的蜜罐。关于管理员/链下参与者的错误假设:如果合约期望操作员、中继器或排序器以特定方式运行,一旦团队缩减运营或移除密钥,这些假设可能失效。架构边界:链下证明与链上结算边界之间的不匹配可能在不破坏密码学的情况下被利用。行业总结指出,2025-2026年间跨链发生了多起针对弃用或遗留合约的资金盗取事件,这被定性为操作和生命周期风险,而非单一漏洞类别。
案例:Aztec Connect的弃用合约RollupProcessorV3
2026年6月,Aztec Connect使用的已弃用合约RollupProcessorV3被窃取约210-230万美元。分析指出,这是对弃用路径上的结算边界绕过,而非新的密码学突破。关键在于,该合约在弃用后仍在其地址上保持活跃且可调用。结论是操作性的:弃用产品并不会停用其链上合约。除非禁用入口点或迁移资金,残留的价值和可调用逻辑会招致针对性利用。
协议停用时谁面临风险
持有残留余额的终端用户:留在金库、池或托管式合约中的资金可能被锁定或暴露于新的攻击路径。集成方和聚合器:仍引用遗留地址的路由器或前端可能继续向已弃用逻辑发送交易。协议团队和DAO:如果管理员角色已被放弃以表明去中心化,团队可能无法在出现新风险时暂停或修补遗留代码。审计人员和监控者:工具通常关注活跃部署,对持有价值但已弃用的地址存在盲区。
团队可遵循的停用操作手册
预防僵尸合约的最佳方式是进行生命周期规划。行业指南强调规划迁移、使用多签管理以及实施安全模式。实用的操作手册如下:
全面盘点。列出所有已部署地址、升级代理、管理员角色、守护者、授权参与者和依赖服务。发布停用计划。沟通明确的时间表和具体涉及的地址。为用户提供提款窗口和重复提醒。在代码支持的情况下启用仅提款或暂停模式。优先选择允许退出但阻止新存款、借贷或复杂操作的可控状态。清理由协议控制的残留资金。迁移国库资金并解除管理员拥有合约中的LP头寸。撤销授权和角色。按阶段、有记录地移除操作员密钥、禁用中继器并收紧访问控制列表。完成升级路径。如果使用代理且升级仍可行,将实现指向最小化逻辑,仅允许提款而阻止状态变更入口点。强化管理。将任何剩余权限转移至治理良好的多签钱包,并配备明确的签署人和已发布策略。停用链下依赖。关闭守护者和自动化,归档前端界面,并记录遗留地址已弃用且不再受支持。监控并保障尾部风险。在停用后的一段时间内保持警报、赏金或保险覆盖,以捕获针对旧地址的意外调用或资金流入。完成闭环。发布停用后报告,包含最终状态和浏览器链接,以便用户和集成方在链上验证结果。
需注意的局限与误解
不可变性是双刃剑。如果管理员密钥被放弃或从未存在升级路径,团队后期无法添加暂停或提款模式。弃用不是终止开关。公告或关闭UI并不能使合约安全或失效。审计会过时。曾经通过审查的代码,当链下参与者消失、经济条件变化或假设不再成立时,可能变得有风险。并非所有代理都相同。设计不当的升级路径可能留下意外的可调用路径或存储冲突,使停用复杂化。残留资金会吸引注意。即使已弃用地址中的小额余额,也可能引发针对性攻击。
实践中你会在哪里遇到僵尸合约
读者最可能在以下情况遇到僵尸合约:按照教程或聚合器指引,使用了已迁移协议的旧地址。在区块浏览器上看到同一池、金库或路由器的多个版本,且不清楚哪个是当前版本。在前端下线后直接通过合约地址交互,不知功能已被弃用但未禁用。在协议宣布停用后持有资产,虽有提款窗口但链上并无措施阻止后续风险交互。在接触遗留地址前,请检查代理模式和当前实现,确认管理员角色或暂停状态,阅读最新公告,并验证您的操作与协议最新迁移路径一致。
常见问题
如何判断合约是已废弃还是仍活跃?查看近期链上活动、治理或开发者公告,以及项目是否将该地址列为当前地址。检查合约是否在代理后面,以及实现是否最近更新。如果管理员角色已放弃且无升级路径,维护选项将受限。
放弃管理员密钥会使协议更安全吗?这可以降低某些治理风险,但也消除了暂停、修补或停用有缺陷或已弃用合约的能力。这种权衡源于以太坊的不可变和可升级模型。
如果合约已弃用,继续使用安全吗?不安全。弃用通知和关闭UI不会禁用链上代码。合约仍可调用并可持有资金。
僵尸合约只是以太坊的问题吗?不是。这种模式可能出现在任何具有不可变或半不可变智能合约的链上。2025-2026年间,跨链已观察到多起针对弃用或遗留合约的资金盗取事件。
集成方在依赖项被弃用时应如何做?重新指向新地址,移除或阻止指向已弃用逻辑的路径,并进行针对性集成审查。考虑添加断路器、更严格的许可名单和弃用警告,以防止用户意外与僵尸端点交互。
ETH

交易所
交易所排行榜
24小时成交排行榜
人气排行榜
交易所比特币余额
交易所资产透明度证明
去中心化交易所
资金费率
资金费率热力图
爆仓数据
清算最大痛点
多空比
大户多空比
币安/欧易/火币大户多空比
Bitfinex杠杆多空比
ETF追踪
索拉纳ETF
瑞波币ETF
香港ETF
比特币持币公司
加密资产反转
以太坊储备
HyperLiquid钱包分析
Hyperliquid鲸鱼监控
大额转账
链上异动
比特币回报率
稳定币市值
期权分析
新闻
文章
财经日历
专题
钱包
合约计算器
账号安全
资讯收藏
自选币种
我的关注