20260428 - ZetaChain 安全事件分析

背景

ZetaChain 是一条内置跨链托管与消息传递的 Layer 1,其 PoS 验证者通过运行多链节点、以 TSS 联合签名的方式在 ZetaChain 与其他链之间传递消息并执行交易。

20260428,ZetaChain 遭受了跨链调用攻击,由于对跨链信息缺乏校验与限制,黑客通过构造恶意的跨链信息,将目标链上曾经对 Gateway 合约授权的用户的资金进行转移。

ZetaChain → Ethereum 的跨链流程:

  1. 用户在 ZetaChain 上调用 GatewayZEVMwithdrawAndCall(带资产)或 call(纯消息),指定 Ethereum 目标地址、Gas Token(ZRC-20)与 calldata。
  2. GatewayZEVM 将请求写入 ZetaChain 的 CrossChain 模块,生成一条状态为 PendingOutbound 的跨链交易(CCTX),明确 Ethereum 端需执行的交易参数。
  3. 验证者读取 CCTX,通过 TSS 密钥分片进行 MPC 式联合签名。达到阈值后,生成标准 ECDSA 签名,并由 ZetaClient 向 Ethereum 网络广播交易。
  4. Ethereum 执行
    • 若提取资产:TSS 交易触发 ERC20Custody 释放锁定的 ERC-20,或由 TSS 地址转账原生 ETH。
    • 若合约调用:TSS 交易直接调用 Ethereum 目标合约。
  5. ZetaClient 监听 Ethereum 结果:
    • 成功 → CCTX 标记为 OutboundMined,流程结束。
    • 失败 → 生成 PendingRevert,TSS 重新签名一笔回滚交易,经 GatewayEVM 将资产/消息退回 ZetaChain,最终触发 App 的 onRevert 兜底。

这里参考了 SlowMist 推文中提到的两笔 tx,Ethereum 上发生的攻击交易好找,就是不知道 ZetaChain 上的交易是通过什么信息检索出来的,了解的读者可以指点一下小弟,十分感谢。

Trace 分析

在 ZetaChain Tx 中,攻击者调用 GatewayZEVM.call() 函数,传入以下参数:

  • receiver:设为 Ethereum 上的 USDT 地址
  • message:设为 USDT.transferFrom() 的 calldate

随后该笔跨链调用被验证者捕获,经过 TSS 的签名后,在 Ethereum 上被执行。

在 Ethereum Tx 中,执行了跨链信息,从 0x8f1a 中转移了 USDT。

代码分析

ZetaChain GatewayZEVM

由于 ZetaChain GatewayZEVM 在区块链浏览器上没有开源,所以通过 Github 的代码进行分析:https://github.com/zeta-chain/protocol-contracts-evm/blob/f8f4aef0ddc47a4de0734271db6063f459967c7f/contracts/zevm/GatewayZEVM.sol

可以看到 call() 函数没权限管理,任何人都可以调用。其次在参数校验方面,在打印 Called event 之前,进行了 validateCallAndRevertOptions 和 validateReceiver 两个校验。

validateCallAndRevertOptions 只检查了 gas limit 和 message size 两个方面。

validateReceiver 只检查了 receiver 地址为合约地址。

所以,由以上的代码可以得知,在 ZetaChain 上调用 GatewayZEVM.call() 函数所进行的参数检查是很宽松的。这也就导致了攻击者可以利用这个特点,构造恶意的跨链信息。

Ethereum GatewayEVM

跨链信息在被验证者捕获后,交由 TSS 签名,并在 Ethereum GatewayEVM 中通过 execute() 执行。权限控制:仅为 TSS_ROLE 调用。

进入到 _executeArbitraryCall() 函数,直接对跨链的目标合约与 calldata 进行调用。

基于上面的两个链上的 Gateway 合约代码,可以确认这个漏洞的影响范围是所有给 Ethereum GatewayEVM 进行过授权的用户。(按理来说其他 EVM 链也是一样的情况)攻击者可以跨链传入恶意的 message,利用 GatewayEVM 将已授权用户的资金转移。

后记

最近跨链桥多事之秋啊,前段时间 HyperBridge 才出了事情,今天又轮到 ZetaChain 了。写得比较匆忙,如果有不对的地方可以多多指教。最后,感谢你的阅读。

相关推荐
阿菜ACai15 天前
PolyMarket Ghost Fills(幽灵订单)探究
漏洞分析
ybdesire1 个月前
间接提示词注入真实样例鉴赏
网络安全·语言模型·漏洞·漏洞分析
阿菜ACai2 个月前
20260413-Hyperbridge 攻击事件:发生在默克尔山上的验证绕过
漏洞分析
Gobysec5 个月前
Goby 漏洞安全通告|GNU InetUtils Telnetd USER环境变量注入 权限绕过漏洞(CVE-2026-24061)
数据库·安全·gnu·漏洞分析·漏洞预警
QuantumRedGuestk5 个月前
DEDECMS靶场CSRF漏洞分析与安全防护
网络安全·漏洞分析·csrf·dedecms
阿菜ACai5 个月前
20260109 - TRU 协议攻击事件分析:买得够多免费送了喂!
漏洞分析
阿菜ACai5 个月前
20250702 - FPC Token 攻击事件:严格的限制,灵活的黑客
漏洞分析
阿菜ACai6 个月前
20251217 - Yearn 攻击事件2:协议授人以柄错设地址,黑客自断一臂巧控价格
漏洞分析
阿菜ACai6 个月前
20251205 - USPD 攻击事件:初始化缺失露破绽,黑客潜伏多日终得手
漏洞分析