CVE-2026-40881ZEBRA是一个完全用Rust编写的Zcash节点软件。在修复前的zebrad和zebra-network版本中,处理网络地址消息存在逻辑缺陷。攻击者可以利用该漏洞,发送包含过量地址数据的恶意消息包,绕过初步限制导致节点分配过量内存,最终引发内存耗尽崩溃,造成拒绝服务。
该漏洞源于ZEBRA在反序列化`addr`或`addrv2`网络消息时的资源管理逻辑缺陷。虽然Zcash协议规范明确规定地址向量限制为1000个条目,但ZEBRA的实现基于2 MiB的消息大小限制进行解析,允许反序列化超过233,000个地址。关键问题在于程序先分配内存存储这些地址,随后才检查数量限制。这种“先分配后检查”的机制使得攻击者可以通过建立多个网络连接并发送特制的超大地址消息来利用该漏洞。由于内存已经被分配,即使后续检查抛出异常,短时间内的大量内存消耗仍会导致系统资源枯竭,迫使ZEBRA节点进程崩溃或被操作系统的OOM Killer中止,从而实现对Zcash节点的拒绝服务攻击。