ZetaChain 价值 33.4 万美元的网关漏洞:链式漏洞如何跨 4 条链耗尽团队钱包

ZetaChain 于 2026 年 4 月 26 日确认了一次有针对性的攻击,造成约 333,868 美元的损失。这次攻击通过一系列故意的设计弱点来针对该协议的 GatewayEVM 合约。事件中没有外部用户资金损失。所有三个受影响的钱包都在 ZetaChain 的控制之下。此后已部署补丁,跨链交易仍处于暂停状态,等待运营商全面升级。该漏洞主要针对 ZetaChain 的 GatewayEVM 合约中的任意调用功能。攻击者使用 isArbitraryCall 标志绕过跨链消息中的正常发送者验证。这导致 ZetaClient 软件将发送者地址清零,通过 _executeArbitraryCall() 路由调用。该函数以最小的限制执行原始外部调用。该函数的唯一保护是阻止 onCall 和 onRevert 选择器的拒绝列表。像transferFrom 和approve 这样的关键ERC-20 功能没有被阻止。攻击者将目的地设置为 ERC-20 代币合约,并将 TransferFrom 作为调用数据传递。由于网关持有受害者钱包中预先存在的配额,因此它成功执行了转账。九笔消耗交易发生在四个链上——以太坊、Base、Arbitrum 和 BSC。 Base 上最大的单笔消耗是 USDC 110,291 美元。全面的 Dune Analytics 扫描确认所有五个连接的 EVM 链中不存在其他受害者。 ZetaChain 直接在 X 上解决了这一事件,表示“跨链 ZETA 转账未受影响”,并且“没有用户资金受到影响 - 所有受影响的钱包均由 ZetaChain 控制。” 4 月 27 日,ZetaChain 经历了一次有针对性的攻击,涉及蓄意准备,包括 Tornado Cash 融资和钱包地址欺骗。跨链 ZETA 转账不受影响。没有用户资金受到影响——所有受影响的钱包都是 ZetaChain 控制的。 A… — ZetaChain 🟩 (@ZetaChain) 2026 年 4 月 29 日这不是机会主义攻击。黑客在执行漏洞利用前大约三天通过 Tornado Cash 为主钱包提供资金。这一刻意的举动掩盖了行动前的资金来源。攻击者还暴力破解了与受害者真实地址非常相似的虚荣钱包地址。假地址与真实地址共享 13 个匹配的十六进制字符——四个位于前缀,九个位于后缀。生成此密钥需要估计 4.5 万亿个试用密钥,GPU 计算成本在 300 到 2,500 美元之间。该虚假地址被用来向受害者发送灰尘交易,在他们的交易历史中植入相似的地址。该技术利用了钱包接口如何截断地址以进行显示。 ZetaChain 上还部署了专门构建的 Drainer 合约来协调跨链调用。每一次排水都成功,目的地为零故障。事后分析指出了这种模式,表明“黑客在执行之前仔细地预先验证了每个目标的配额状态和代币余额”。 ZetaChain 在检测到攻击后八分钟内暂停了所有跨链交易。同一天,该团队从 ZetaHub 存款流中删除了无限配额批准。新存款现在仅批准每笔交易所需的确切金额。 zetaclient 补丁已开发出来,并在测试网上进行了测试,现在正在向主网运营商节点推出。该补丁永久禁用使此漏洞成为可能的任意调用代码路径。验证者节点运营商不需要采取行动——只有观察者节点需要升级。所有已识别的攻击者地址均通过 SEAL 911 应急响应网络进行标记。还通过 IC3.gov 向执法部门提交了一份报告。以太坊上被盗的资金被兑换成大约 139 ETH 并转移到整合钱包中。 ZetaChain 还在审查其错误赏金分类流程。事后分析承认该漏洞之前已被标记,并指出“最初的报告已被驳回,因为任意调用行为被认为是设计使然。”该协议补充说,该事件此后促使对链式攻击媒介的分类程序进行审查。建议之前有过网关交互的用户使用 Revoke.cash 等工具撤销 ERC-20 配额。