CVE-2026-104420
Executive Summary
CVE-2026-104420 is a protection mechanism failure in Zebra (a Zcash-family node implementation) before version 6.3.0. Unauthenticated network peers can evade misbehavior scoring by supplying invalid gossiped blocks because the inbound cleanup step incorrectly downcasts RouterError to VerifyBlockError and discards the accumulated score. This permits attackers to repeatedly force block download and Equihash verification work without being banned, producing a resource-exhaustion denial-of-service (availability impact only, CVSS 5.3). Any node operator running Zebra < 6.3.0 that accepts inbound peer connections is affected.
This record — and 170,000+ others — are available via the ValtersIT API. One endpoint replaces five: NVD + GitHub CVE + CISA KEV + EPSS + Nuclei + Exploit-DB, unified.
No signup required
Technical Analysis
Zebra implements a peer misbehavior scoring system: peers that send invalid data accrue negative scores and are disqualified or banned once a threshold is crossed. Under normal operation, when a gossiped block fails validation, the node is expected to record a VerifyBlockError against the sending peer so that repeated abuse eventually leads to disconnection/banning.
The flaw is a type-confusion / improper-cast defect (CWE-704) located in the inbound cleanup path. When a block verification step fails, the error surfaced is not a VerifyBlockError but the broader RouterError. The cleanup code performs a downcast assuming VerifyBlockError, which fails for RouterError. Because the downcast does not succeed, the code discards the misbehavior score instead of applying it. The result: an attacker can send invalid gossiped blocks repeatedly, and each failed verification is not charged against the peer's score.
The attack surface is the peer-to-peer gossip interface — no authentication is required (AV:N/PR:N). Each rejected block still forces the victim node to perform the expensive work of downloading the block and running Equihash proof-of-work verification before rejection. Because the peer is never banned, the attacker can loop this indefinitely. The vulnerability is bounded in severity (integrity/confidentiality unaffected, S:U, A:L) because it does not corrupt state or leak data — it degrades availability through wasted CPU/bandwidth. The specific exploitation primitive is "score-evasion via error-type confusion in inbound block cleanup."
Exploitation Scenarios
No public PoC is available; the chain below is inferred strictly at the vulnerability-class level from the NVD description.
- Reconnaissance / target identification: The attacker enumerates reachable Zebra P2P listeners (typically the node's peer port) using network scanning. Target confirmation can be inferred from Zcash/Zebra P2P protocol handshake behavior.
- Triggering the flaw: The attacker connects as an unauthenticated peer and begins gossiping blocks that are structurally acceptable but fail verification (e.g., malformed or otherwise invalid blocks per the description).
- Evasion mechanism (vuln class): Because the failed verification surfaces a
RouterErrorthat the inbound cleanup step mis-downcasts toVerifyBlockError, the corresponding misbehavior score is discarded. The attacker's peer identity is therefore never penalized or banned. - Payload/execution method (vuln class): The "payload" is the stream of invalid gossiped blocks themselves — no code execution is involved. The attacker simply repeats the gossip of invalid blocks.
- Post-exploitation impact: Repeatedly forcing block download plus Equihash verification consumes victim CPU and bandwidth. Sustained abuse denies service to legitimate peer traffic (availability degradation), with no confidentiality or integrity impact.
Impact Assessment
- Confidentiality: None (C:N).
- Integrity: None (I:N).
- Availability: Low (A:L) — measurable resource degradation/denial-of-service against node verification capacity.
- Scope: Unchanged (S:U); impact confined to the targeted node.
- Attack vector: Network (AV:N), no privileges or user interaction (PR:N/UI:N), low complexity (AC:L). CVSS 5.3 (Medium).
- Blast radius: Any Zebra < 6.3.0 node accepting inbound peers. Downstream: degraded P2P propagation, delayed block relay, increased sync times, potential node instability under sustained load. Mining pools, exchanges, and infrastructure relying on Zebra nodes may see reduced availability.
Detection Guidance
Sigma Rule
title: Zebra Misbehavior Score Evasion via Invalid Gossiped Blocks (CVE-2026-104420)
id: 8f2c1a44-7b6e-4c2e-9a1d-3b2f5e6c9d10
status: experimental
description: Detects repeated invalid gossiped block verification failures from a single unauthenticated peer without corresponding misbehavior score increases in Zebra < 6.3.0.
references:
- https://nvd.nist.gov/vuln/detail/CVE-2026-104420
author: valtersit.com
date: 2026/01/01
logsource:
product: zebra
service: node
detection:
selection:
message|contains:
- 'VerifyBlockError'
- 'RouterError'
- 'inbound cleanup'
condition: selection
falsepositives:
- Legitimate transient verification errors
level: medium
YARA Rule
rule CVE_2026_104420_Zebra_Score_Evasion
{
meta:
author = "valtersit.com"
description = "Detects Zebra versions prior to 6.3.0 susceptible to RouterError downcast misbehavior-score evasion"
reference = "https://nvd.nist.gov/vuln/detail/CVE-2026-104420"
date = "2026-01-01"
strings:
$a = "VerifyBlockError"
$b = "RouterError"
$c = "misbehavior"
condition:
uint16(0) == 0x7f45 and $a and $b and $c
}
Suricata IDS Rule
alert tcp $EXTERNAL_NET any -> $HOME_NET 18233 (msg:"CVE-2026-104420 Zebra Invalid Gossiped Block Score Evasion Attempt"; flow:established,to_server; dsize:>200; threshold:type both, track by_src, count 50, seconds 60; classtype:attempted-dos; sid:2026104420; rev:1;)
Elastic Detection
sequence by source.ip with maxspan=60s
[network where destination.port == 18233 and network.transport == "tcp"] with runs=50
Splunk SPL Query
index=network (dest_port=18233 OR app=zebra)
| stats count by src_ip, dest_ip, action
| where action="block" OR match(_raw, "VerifyBlockError|RouterError")
| where count > 50
Wazuh OSSEC Rule
<group name="zebra,cve-2026-104420,">
<rule id="104420" level="8">
<decoded_as>json</decoded_as>
<field name="message">VerifyBlockError|RouterError</field>
<description>CVE-2026-104420: Possible Zebra misbehavior score evasion via invalid gossiped blocks</description>
<mitre>
<id>T1499</id>
</mitre>
</rule>
</group>
Mitigation & Patch Guidance
Patch confidence: 0/4 (UNPATCHED — no patch evidence from any tracked source).
- Immediate mitigations:
- Restrict inbound peer connections to trusted, allowlisted peers via firewall rules where operationally feasible.
- Apply rate-limiting on inbound block gossip from any single peer.
- Monitor verification-failure rates per peer and manually ban sources showing sustained invalid-block floods.
- Patch / upgrade steps:
- Upgrade Zebra to version 6.3.0 or later, which fixes the incorrect downcast in the inbound cleanup path so misbehavior scores are correctly applied to
RouterErrorcases. No vendor fix is currently confirmed by tracked sources — validate against the official Zebra release before deploying.
- Upgrade Zebra to version 6.3.0 or later, which fixes the incorrect downcast in the inbound cleanup path so misbehavior scores are correctly applied to
- Long-term hardening:
- Track Zebra security advisories and peer-scoring changes on every release.
- Deploy per-peer resource quotas and connection caps on P2P listeners.
- Alert on anomalies in verification-failure vs. ban ratios to catch score-evasion regressions early.
References
- NVD: https://nvd.nist.gov/vuln/detail/CVE-2026-104420
- MITRE CWE-704 (Incorrect Type Conversion or Cast): https://cwe.mitre.org/data/definitions/704.html
- MITRE ATT&CK T1499 (Endpoint Denial of Service): https://attack.mitre.org/techniques/T1499/
- Zebra project release notes / advisories (verify version 6.3.0 fix): https://github.com/ZcashFoundation/zebra
- No CISA KEV entry at time of writing; no exploit-in-the-wild or threat actor campaign evidence available.
What is this? Security researchers use these exact search queries on Shodan.io (a search engine for internet-connected devices) to find vulnerable systems globally. You can copy these dorks to see if your organization's IP space is exposed.