CVEReports
CVEReports

Automated vulnerability intelligence platform. Comprehensive reports for high-severity CVEs generated by AI.

Product

  • Home
  • Sitemap
  • RSS Feed

Company

  • About
  • Contact
  • Privacy Policy
  • Terms of Service

© 2026 CVEReports. All rights reserved.

Made with love by Amit Schendel & Alon Barad



CVE-2026-44499

CVE-2026-44499: Permanent Block Discovery Halt in Zebra via Gossip Queue Saturation

Amit Schendel
Amit Schendel
Senior Security Researcher

May 8, 2026·6 min read·39 visits

Executive Summary (TL;DR)

Unauthenticated attackers can permanently halt block discovery in Zebra nodes prior to v4.4.0 by saturating the P2P gossip queue and providing unpenalized empty responses to synchronization requests.

CVE-2026-44499 is a composite Denial of Service (DoS) vulnerability affecting Zebra, the Rust implementation of a Zcash full node. By exploiting architectural flaws in the peer-to-peer (P2P) communication stack, an unauthenticated attacker can saturate internal message queues and poison the chain discovery process, permanently isolating the target node from the network.

Vulnerability Overview

CVE-2026-44499 is a composite Denial of Service (DoS) vulnerability affecting the block discovery pipeline of Zebra, a Zcash full node implementation written in Rust. The flaw exists in versions prior to 4.4.0. It leverages three distinct architectural weaknesses in the peer-to-peer (P2P) stack to isolate a target node from the legitimate Zcash network.

The vulnerability allows an unauthenticated remote attacker to completely and permanently halt a node's ability to discover or download new blocks. This results in a high availability impact, as block synchronization is the primary function of a blockchain full node. The issue requires no user interaction and can be triggered via a single persistent TCP connection.

The core of the vulnerability lies in the improper handling of network resource exhaustion and the lack of a robust penalization mechanism for unhelpful network peers. This maps to CWE-770 (Allocation of Resources Without Limits or Throttling) and CWE-400 (Uncontrolled Resource Consumption).

Root Cause Analysis

The vulnerability emerges from the convergence of three primary vectors: gossip queue saturation, syncer poisoning, and permanent connection persistence. Zebra's gossip subsystem processes inv (inventory) announcements for new blocks. Prior to version 4.4.0, this subsystem lacked per-connection rate limiting for incoming messages.

An attacker exploiting the lack of rate limits could flood the node with thousands of fabricated block hashes in under a millisecond. This flood immediately pushes the internal gossip download queue to its maximum capacity. Zebra silently ignored the FullQueue error returned by the underlying buffer, discarding legitimate block announcements from honest peers without any recovery mechanism or peer penalization.

Concurrently, the Zebra Syncer component proactively discovers the blockchain via FindBlocks and FindHeaders requests. The Syncer treated empty responses from peers as valid protocol-level events. An attacker responding to these queries with empty inventory lists or NotFound statuses successfully occupied a sync slot indefinitely.

Because the attacker technically adhered to the wire protocol specifications by returning valid but empty responses, Zebra never terminated the connection. The absence of a misbehavior scoring system for these specific interactions ensured the attacker remained permanently connected. This created a perpetual block deficit that the node could not self-heal.

Code Analysis and Resource Exhaustion Amplification

The remediation logic introduced in Zebra 4.4.0 highlights the missing state tracking in earlier versions. The patch implements a FindResponseStallTracker within the PeerSet component. This tracker explicitly classifies connection quality based on response utility rather than mere protocol compliance.

// Patched logic introduced in zebra-network/src/peer_set/set.rs
fn classify_find_response<E>(result: &Result<Response, E>) -> Option<StallOutcome> {
    match result {
        Ok(Response::BlockHashes(hashes)) if hashes.is_empty() => Some(StallOutcome::Stall),
        Ok(Response::BlockHeaders(headers)) if headers.is_empty() => Some(StallOutcome::Stall),
        Err(_) => Some(StallOutcome::Stall),
        _ => Some(StallOutcome::Clear),
    }
}

The function above demonstrates the shift in handling P2P responses. Empty BlockHashes or BlockHeaders responses are now explicitly mapped to a StallOutcome::Stall state. If a peer accumulates three consecutive stalls, the connection is forcefully terminated, preventing the syncer poisoning vector.

In addition to the logic flaw, CVE-2026-44499 was compounded by memory allocation vulnerabilities documented under GHSA-438q-jx8f-cccv. The Equihash solution field and variable-length coinbase scripts relied on CompactSize prefixes provided by network peers. The node allocated memory based on this untrusted prefix before validating the underlying data size against consensus limits.

The deserializer was subsequently hardened. Functions like read_headers now enforce a strict 160-entry protocol limit before parsing. Memory allocation for Equihash solutions and coinbase data is now deferred until the declared size is validated against strict consensus bounds.

Exploitation Methodology

Exploitation of CVE-2026-44499 requires a single malicious peer connecting to the target Zebra node over the standard Zcash P2P port. The attack requires no authentication or specific network positioning beyond the ability to establish a TCP connection with the target.

The sequence begins with the attacker initiating a flood of inv announcements to saturate the target's gossip queue. The attacker immediately responds to all subsequent FindBlocks and FindHeaders queries from the target with empty lists.

This behavior satisfies the protocol handshake without delivering any useful blockchain state. The attacker maintains the open TCP connection, continuously serving empty payloads whenever polled. The target node enters a permanently stalled state, incapable of receiving new block information from the attacker or the wider network.

Impact Assessment

The successful exploitation of this vulnerability results in a total denial of service for the block discovery mechanism. The affected Zebra node becomes permanently isolated from the Zcash network state. It will not append new blocks to its local ledger, meaning any downstream services relying on the node for transaction verification or balance queries will receive stale data.

The CVSS v4.0 score of 8.7 reflects the high availability impact (VA:H). Because block synchronization is the fundamental operational requirement of a full node, halting this process functionally disables the node's primary utility.

The concurrent allocation amplification vectors also pose a significant risk of Out-Of-Memory (OOM) crashes. By supplying manipulated CompactSize prefixes in block headers or coinbase data, an attacker forces the node to attempt multi-gigabyte memory allocations. This combination of logical stalling and resource exhaustion creates a highly effective denial-of-service condition.

Remediation and Defensive Implementation

The Zcash Foundation addressed these vulnerabilities comprehensively in Zebra version 4.4.0. Upgrading to this version is the only permanent mitigation. The patch introduces fundamental changes to the network protocol handler and deserialization logic.

The most critical architectural change is the implementation of the FindResponseStallTracker. Connections are actively monitored for response quality. Peers that provide three consecutive empty or failed responses to synchronization queries are systematically disconnected. This prevents malicious peers from acting as persistent black holes.

Network resource management was also hardened. The implementation introduces MAX_INBOUND_CONCURRENCY_PER_IP, enforcing a strict limit of one concurrent block download task per IP address. Additional queries from the same source IP are rejected with a TooManyFromPeer status until the initial request completes. Deserialization functions now enforce maximum size limits on arrays and scripts prior to any memory allocation.

Official Patches

Zcash FoundationZebra v4.4.0 Official Release Notes

Fix Analysis (2)

Technical Appendix

CVSS Score
8.7/ 10
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N

Affected Systems

Zebra < 4.4.0

Affected Versions Detail

Product
Affected Versions
Fixed Version
Zebra
Zcash Foundation
< 4.4.04.4.0
AttributeDetail
CVSS Score8.7
CWE IDCWE-770
Attack VectorNetwork
Exploit StatusNone
KEV StatusNot Listed
AuthenticationNone Required

MITRE ATT&CK Mapping

T1499.002Endpoint Denial of Service: Service Exhaustion
Impact
T1499.003Endpoint Denial of Service: Application Exhaustion
Impact
CWE-770
Allocation of Resources Without Limits or Throttling

Allocation of Resources Without Limits or Throttling

Vulnerability Timeline

Initial security fixes deployed in Zebra 4.3.1 (preliminary hardening).
2026-04-17
Release of Zebra 4.4.0 containing the full fix for the composite DoS.
2026-05-01
CVE-2026-44499 published to NVD.
2026-05-08

References & Sources

  • [1]GitHub Security Advisory: GHSA-h9hm-m2xj-4rq9
  • [2]CVE.org Record for CVE-2026-44499

Attack Flow Diagram

Press enter or space to select a node. You can then use the arrow keys to move the node around. Press delete to remove it and escape to cancel.
Press enter or space to select an edge. You can then press delete to remove it or escape to cancel.

More Reports

•1 day ago•CVE-2026-58197
8.8

CVE-2026-58197: Host Escape and Lateral Movement via Insecure Container Network Defaults in ToolHive

A high-severity access control vulnerability in ToolHive CLI before v0.30.1 and ToolHive Studio before v0.38.0 allows local containerized MCP servers to bypass network isolation. This enables malicious workloads to establish TCP/IP connections to administrative and control plane endpoints exposed on the host loopback interface.

Amit Schendel
Amit Schendel
8 views•8 min read
•1 day ago•CVE-2026-63405
5.9

CVE-2026-63405: Insufficient Verification of Data Authenticity in AnyCable Pusher REST API

AnyCable is a real-time communication server. Prior to version 1.6.15, its Pusher-compatible REST API suffered from an authentication bypass vulnerability because it failed to verify that the request body matched the signature-validated body_md5 parameter. This allows attackers to perform replay attacks with modified body contents.

Amit Schendel
Amit Schendel
9 views•5 min read
•1 day ago•CVE-2026-64847
6.8

CVE-2026-64847: Indefinite Denial of Service via Undrained Stderr in AnyIO Process Pool Workers

A denial-of-service vulnerability exists in AnyIO prior to version 4.14.2. Standard error streams of process-pool workers are connected to an operating system pipe that is never drained by the parent process. This allows a worker to fill the pipe buffer and deadlock indefinitely.

Amit Schendel
Amit Schendel
8 views•6 min read
•2 days ago•CVE-2026-63349
7.0

CVE-2026-63349: Privilege Dropping Bypass and Denial of Service in AnyIO Subprocess Module

CVE-2026-63349 is a critical privilege-dropping bypass vulnerability in the AnyIO asynchronous framework (versions 4.14.0 and 4.14.1) on POSIX platforms. Due to a variable assignment typo, supplementary groups specified by the developer are not correctly propagated to the execution backend, resulting in subprocesses retaining the parent process's elevated supplementary group permissions.

Alon Barad
Alon Barad
14 views•5 min read
•2 days ago•CVE-2026-63406
5.9

CVE-2026-63406: Information Disclosure via Insecure Telemetry and Hardcoded Credentials in AnyCable-Go

CVE-2026-63406 is an information disclosure vulnerability in AnyCable-go prior to version 1.6.15. The built-in telemetry client is enabled by default with a hardcoded public authentication token ('secret'). This client digests highly sensitive configuration parameters and command-line arguments, including JWT secrets and RPC secrets, into a stable SHA-256 fingerprint. This fingerprint is sent over public networks, exposing those administrative secrets to offline dictionary and brute-force attacks if intercepted.

Alon Barad
Alon Barad
7 views•5 min read
•2 days ago•CVE-2026-84992
6.1

CVE-2026-84992: Cross-Site Scripting (XSS) via Fenced Code Block Parsing in md-editor-v3

CVE-2026-84992 is a Cross-Site Scripting (XSS) vulnerability affecting md-editor-v3 before version 6.5.4. It occurs because the fenced-code block language parser directly interpolates unescaped language metadata into unquoted HTML attributes inside the custom rendering callback. This bypasses the built-in XSSPlugin which runs during the parsing phase, before rendering.

Amit Schendel
Amit Schendel
9 views•6 min read