天下漏洞,尽知其名
MEDIUM

CVE-2026-104428 Zebra zebra-rpc 拒绝服务漏洞

影响远程未认证攻击者可致节点崩溃循环,造成拒绝服务

AI 研判

Zcash 基金会 Zebra 节点的 zebra-rpc 组件中,getblock RPC 方法在处理侧链区块的 verbosity 2 请求时发生 panic。原因是区块的 -1 确认数哨兵值被用 .expect() 转换为 u32,导致进程中止。远程未认证攻击者可直接或经由 lightwalletd 反复调用该接口,使节点陷入崩溃循环。

影响范围

Zebra zebra-rpc

zebra-rpc 11.0.0 之前的版本,具体受影响版本范围以官方公告为准。

漏洞详情

该漏洞属于输入处理不当导致的拒绝服务。getblock 方法在 verbosity 为 2 时,对侧链区块的确认数取值为 -1,代码用 .expect() 将其转换为无符号整数 u32,转换失败即触发 panic 并终止进程。攻击者只需构造针对侧链区块的 getblock 请求即可触发,无需认证。

利用条件与风险

利用无需认证,攻击者可直接或通过 lightwalletd 反复发送请求,使节点持续崩溃,影响 Zcash 节点可用性。

修复建议

升级 zebra-rpc 至 11.0.0 或更高版本;暂无公开信息说明其他临时缓解措施,建议限制 RPC 接口访问来源。

原始情报

The getblock RPC method in zebra-rpc before 11.0.0, used by the Zcash Foundation’s Zebra node, panics on verbosity 2 for a side-chain block because the block’s -1 confirmations sentinel is converted to u32 with .expect(), aborting the process. Remote unauthenticated attackers, directly or through lightwalletd, can repeat this call to keep the node in a crash loop.