CVE-2026-40881
Out-of-Memory in Zebra Node via addr Message Deserialization
Publication date: 2026-04-21
Last updated on: 2026-04-27
Assigner: GitHub, Inc.
Description
Description
CVSS Scores
EPSS Scores
| Probability: | |
| Percentile: |
Meta Information
Affected Vendors & Products
| Vendor | Product | Version / Range |
|---|---|---|
| zfnd | zebra-network | to 5.0.1 (exc) |
| zfnd | zebrad | to 4.3.1 (exc) |
Helpful Resources
Exploitability
| CWE ID | Description |
|---|---|
| CWE-770 | The product allocates a reusable resource or group of resources on behalf of an actor without imposing any intended restrictions on the size or number of resources that can be allocated. |
Attack-Flow Graph
AI Powered Q&A
How does this vulnerability affect compliance with common standards and regulations (like GDPR, HIPAA)?:
This vulnerability causes a denial of service (DoS) by exhausting memory resources, leading to Zebra node crashes. It does not impact confidentiality or integrity of data.
Since the vulnerability does not affect data confidentiality or integrity, it does not directly compromise compliance with standards like GDPR or HIPAA, which primarily focus on protecting personal data privacy and security.
However, the availability impact caused by this DoS could indirectly affect service reliability requirements under some regulations.
Can you explain this vulnerability to me?
CVE-2026-40881 is a moderate severity denial of service vulnerability in the Zebra cryptocurrency node software, which is written in Rust. The issue occurs during the deserialization of addr or addrv2 messages that contain vectors of network addresses.
Zebra calculates the maximum allowed vector size based on the 2 MiB message size limit, resulting in a maximum allocation of over 233,000 entries. However, the Zcash protocol specification limits these messages to a maximum of 1,000 addresses.
Zebra only checks the 1,000-entry limit after fully deserializing and allocating memory for the larger vector, which allows an attacker to send messages with excessively large vectors. This causes the node to allocate excessive memory and potentially crash due to out-of-memory aborts.
The vulnerability affects Zebra versions prior to 4.3.1 and was fixed by enforcing the 1,000-entry limit before deserialization to prevent excessive memory allocation.
How can this vulnerability impact me? :
This vulnerability can be exploited by an attacker to cause a denial of service (DoS) on Zebra nodes by sending specially crafted addr or addrv2 messages with excessively large vectors of addresses.
The impact is that the Zebra node software may crash due to out-of-memory aborts caused by resource exhaustion from allocating memory for these large vectors.
There is no impact on confidentiality or integrity, but availability of the node is affected, potentially disrupting network operations.
How can this vulnerability be detected on my network or system? Can you suggest some commands?
This vulnerability involves Zebra nodes deserializing addr or addrv2 messages with excessively large vectors of addresses, leading to out-of-memory crashes. Detection would involve monitoring for unusually large addr or addrv2 messages or repeated connection attempts sending such messages.
Since the vulnerability is triggered by addr/addrv2 messages containing more than 1,000 addresses but up to over 233,000 entries allocated before rejection, network monitoring tools could be used to inspect message sizes and counts of addresses in these messages.
Specific commands are not provided in the resources, but general approaches include:
- Using packet capture tools (e.g., tcpdump, Wireshark) to filter and analyze addr/addrv2 messages for abnormal sizes.
- Monitoring Zebra node logs for out-of-memory aborts or crashes related to addr/addrv2 message processing.
- Implementing network intrusion detection rules to alert on addr/addrv2 messages exceeding the protocol limit of 1,000 addresses.
What immediate steps should I take to mitigate this vulnerability?
The primary and recommended mitigation is to upgrade Zebra node software to versions that include the fix:
- Upgrade zebrad to version 4.3.1 or later.
- Upgrade zebra-network to version 5.0.1 or later.
These versions enforce the protocol limit of 1,000 addresses before deserialization, preventing excessive memory allocation and out-of-memory crashes.
No other workarounds or mitigations are available, so immediate upgrade is strongly advised.