☠️
EXFILTRATING
DATA...
01010111 10110010 00101001 11000110 01101100 10011011 00010001 11100101 01000010 10101111
[ <-- BACK_TO_SEARCH ]
[ VENDOR STATS ]
CVSS: 5.9 CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:H 🐛 CWE-459
👁️
Common Weakness Enumeration - Identifies the specific category of software weakness or flaw.

CVE-2026-104427

CVE-2026-104427 Vulnerability in Zebra
📅 PUBLISHED: 2026-10-02 00:00 UTC 🔄 UPDATED: 2026-10-03 23:54 UTC
[ PATCH UNDER REVIEW ↓ ] Remains UNDER REVIEW until an independent source confirms the fix
[ DEFENSE PATCH ↓ ]
💣 PoC: None
👁️
Proof of Concept - Indicates if functional exploit code is publicly available, drastically increasing the risk of immediate attacks.
🎯 EPSS: 0.31%
👁️
0.31% probability
7.7× above the median CVE
Tier: ELEVATED
30-day exploitation window · FIRST.org · updated daily
🥷 MITRE: T1499
👁️
MITRE ATT&CK Tactic - Describes the strategy hackers use to execute this attack.
VULNERABLE: version not auto-detected — verify your deployed version locally
CVSS VECTOR BREAKDOWN 5.9
AV: N Attack Vector Network
AC: H Attack Complexity High
PR: N Privileges Required None
UI: N User Interaction None
S: U Scope Unchanged
C: N Confidentiality None
I: N Integrity None
A: H Availability High
5.9
THREAT LEVEL
■ tracking this CVE ✓ independent patch confirmation ⧗ same-origin mirror (GHSA) ⚠ active exploitation verification policy →

Executive Summary

CVE-2026-104427 is an incomplete cleanup vulnerability (CWE-459) in the state write task of the Zebra cryptocurrency node software, present in versions before 6.1.0. A remote, unauthenticated peer can poison the parent_error_map state by delivering a coinbase-malleated block that shares a canonical block's hash before that block propagates, causing the next canonical block to be rejected and stalling node synchronization for roughly 2,000 blocks. Successful exploitation produces a sustained denial of service against node availability (CVSS 5.9, AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:H), degrading consensus participation and network reliability without requiring credentials.

⚡ AUTOMATE YOUR CVE INTELLIGENCE

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.

›Patch confidence — UNVERIFIED to CONFIRMED, cross-referenced NVD + RHSA + Debian
›Exploit & PoC — poc_status, poc_url, has_exploit. Not in NVD.
›Shodan dorks — ready-made queries to find exposed vulnerable systems
›Detection rules — YARA · Wazuh · Elastic (all plans) · Sigma (Pro)
›pending_fields — know exactly which of 7 fields NVD hasn't processed yet
›Free backfill — data incomplete when you paid? Re-check within 30 days = 0 credits
PAYG €0.08/lookup Standard €19/mo (was €29) · 5k credits Pro €65/mo (was €99) · 20k credits FOUNDING PRICE · LOCKED FOR LIFE · ENDS 31 DEC 2026
[ FROM €19/MO ]
Free sandbox key available
No signup required

Technical Analysis

Zebra is an independent Rust implementation of a Zcash-compatible node. The vulnerability resides in the "state write task," the component responsible for committing blocks and their derived state to the node's consensus database. The flaw is classified as CWE-459: Incomplete Cleanup, meaning state that should be freed, overwritten, or invalidated after a processing event is instead retained — here in a mapping structure named parent_error_map.

The attack leverages a property of coinbase transactions: the coinbase input is variable, so an attacker can construct a block whose coinbase is modified ("coinbase-malleated") while preserving the block's canonical hash identity as seen by the node. Per the NVD description, the attacker delivers this malleated block "sharing a canonical block's hash before it propagates." Because the node encounters the attacker-supplied variant first, the state write task records an error entry against that block's parent in parent_error_map. When the genuine canonical block (or its successor) is later processed, the stale/poisoned error state causes the next canonical block to be rejected.

The cleanup defect is the crux: parent_error_map is not correctly cleared or reconciled after the transient error condition, so the erroneous rejection persists rather than self-healing. The observable effect is that the node stalls in synchronization for approximately 2,000 blocks — roughly the window over which the poisoned state remains dominant before the node can re-advance.

Attack surface: the peer-to-peer block propagation path. No authentication, no user interaction, and no prior access are required (PR:N/UI:N). The high attack complexity (AC:H) reflects the timing requirement — the attacker must land the malleated block before the canonical block propagates to the target — and the need to craft a coinbase-malleated block whose hash collides with canonical identity as processed by the affected node.

Impact is integrity-neutral (I:N) and confidentiality-neutral (C:N); only availability is affected (A:H). Note that no public PoC, Nuclei template, or exploit code is available, and the description does not disclose specific function, type, or field names beyond parent_error_map and the "state write task."

Exploitation Scenarios

No public PoC or exploit code is available. The following chain is inferred strictly from the vulnerability class and the NVD description.

  1. Reconnaissance / target identification. The attacker connects to the Zebra node as a peer and monitors block propagation. The attacker identifies an upcoming canonical block whose coinbase can be malleated without changing the hash identity the target node relies upon for canonical matching. No credentials are needed — the P2P surface is reachable and unauthenticated (AV:N/PR:N).

  2. Trigger of the flaw class. The attacker constructs a coinbase-malleated block that shares a canonical block's hash and delivers it ahead of the canonical propagation. This is a race: the attacker must land the poisoned variant first (AC:H). Upon ingestion, the state write task records an error for the affected parent in parent_error_map.

  3. Execution method. No code execution is required — the "payload" is a crafted block. The vulnerability-class mechanism is state poisoning via incomplete cleanup: the erroneous entry in parent_error_map is not reconciled when the canonical block arrives. When the next canonical block is processed, the node evaluates it against the poisoned parent state and rejects it.

  4. Post-exploitation impact. Block rejection cascades: the node stalls for roughly 2,000 blocks, unable to keep pace with the chain tip. The attacker achieves a sustained availability degradation of the target node (A:H) using only the unauthenticated P2P path. No lateral movement or data exfiltration is implied by the description.

Impact Assessment

  • Availability (A:H, High). A node stalled for ~2,000 blocks is effectively desynchronized from the network tip for a material period, unable to relay, validate, or serve current state. This is the dominant and only direct impact.
  • Confidentiality (C:N), Integrity (I:N). The flaw does not disclose data or allow unauthorized modification of canonical state; the poisoned state produces rejection, not acceptance of forged blocks.
  • Scope (S:U) and Privileges (PR:N). The impact is confined to the node's synchronization behavior, and no prior access is required.
  • Complexity (AC:H). Exploitation depends on winning a propagation race, which limits mass, automated exploitation and explains the moderate 5.9 base score despite a high availability impact.
  • Blast radius. Any Zebra node below 6.1.0 reachable as a P2P peer is potentially exposed. Operators running Zebra nodes for validation, relaying, or infrastructure services (exchanges, pools, explorers) bear the greatest operational risk. Because the attack requires no authentication, an attacker with network reachability to the node's peer port is sufficient to attempt it.

Detection Guidance

Detection focuses on anomalous block-propagation patterns, peer-source consistency, and the node-side signature of rejected canonical blocks / stalled sync. Given the data available, rules below key on generic P2P block traffic and the logging behavior described (rejected canonical successors, parent_error_map errors, prolonged sync stall).

Sigma Rule

title: Zebra Node Sync Stall / parent_error_map Error Indications
id: 8f3c1a2e-1044-27c0-9b6f-0000cve104427
status: experimental
description: Detects log indications of CVE-2026-104427 where a poisoned parent_error_map causes canonical block rejection and sync stall.
references:
  - https://nvd.nist.gov/vuln/detail/CVE-2026-104427
author: SOC Detection Engineering
logsource:
  product: zebra
  service: node
detection:
  selection_error:
    message|contains:
      - 'parent_error_map'
      - 'stalled'
      - 'sync stall'
      - 'rejected block'
  selection_reject:
    message|contains|all:
      - 'reject'
      - 'canonical'
  timeframe: 30m
  condition: selection_error or (selection_reject | count() > 5)
falsepositives:
  - Legitimate chain reorganizations
  - Normal transient peer errors
level: high

YARA Rule

rule CVE_2026_104427_Zebra_ParentErrorMap
{
    meta:
        description = "Detects references to the poisoned parent_error_map state handling associated with CVE-2026-104427"
        reference = "https://nvd.nist.gov/vuln/detail/CVE-2026-104427"
        cve = "CVE-2026-104427"
        date = "2026-01-01"
    strings:
        $a = "parent_error_map" ascii wide
        $b = "state write task" ascii wide
        $c = "incomplete cleanup" ascii wide
    condition:
        any of them
}

Suricata IDS Rule

alert tcp any any -> any any (msg:"CVE-2026-104427 Zebra Possible Sync-Stall Peer Poisoning Attempt"; flow:established,to_server; dsize:>200; threshold: type both, track by_src, count 20, seconds 60; classtype:attempted-dos; reference:cve,2026-104427; sid:10442701; rev:1;)

Elastic Detection

sequence by process.entity_id with maxspan=30m
  [ process where process.name == "zebrad" and message : "parent_error_map" ]
  [ process where process.name == "zebrad" and message : "stall" ]

Splunk SPL Query

index=main sourcetype=zebra:node ("parent_error_map" OR "sync stall" OR "stalled")
| stats count by host, message
| where count > 5
| sort - count

Wazuh OSSEC Rule

<group name="zebra,CVE-2026-104427,">
  <rule id="104427" level="12">
    <decoded_as>json</decoded_as>
    <field name="message">parent_error_map</field>
    <description>CVE-2026-104427: Possible Zebra parent_error_map poisoning / sync stall detected</description>
    <mitre>
      <id>T1499</id>
    </mitre>
  </rule>
</group>

Mitigation & Patch Guidance

Patch confidence: 0/4 (UNPATCHED — no patch evidence from any tracked source).

  1. Immediate mitigations.

    • Upgrade Zebra to 6.1.0 or later where the fix per the NVD description is available; this is the only described remediation.
    • If upgrade is not immediately possible, restrict the node's P2P peer port to trusted, authenticated peers using firewall or network ACLs to reduce unauthenticated reachability (PR:N attack surface).
    • Monitor node logs for parent_error_map errors and prolonged sync stalls; treat recurring stalls as potential active attempts.
    • Maintain a known-good peer set and consider temporarily reducing peer diversity to reduce race-window exposure.
  2. Patch/upgrade steps.

    • Track the Zebra project's 6.1.0 release for the state-write-task cleanup fix.
    • Validate the upgrade in a staging node, confirming sync stability past a full checkpoint cycle (~2,000 blocks) before rolling out to production.
    • Restart affected nodes against the fixed build and confirm parent_error_map errors cease.
  3. Long-term hardening.

    • Enforce peer authentication / connection allow-listing on the P2P listener.
    • Add alerting on abnormal canonical block rejection rates and sync-tip lag.
    • Review state-cleanup logic patterns (CWE-459) across the node codebase to prevent similar stale-state poisoning.
    • Subscribe to Zebra security advisories for future incomplete-cleanup fixes.

References

👁️ SHODAN DORKS (THREAT HUNTING)

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.

product:"Zebra"
title:"Zebra"
◈ SOURCE Analysis & enrichment: valtersit.com/cve/CVE-2026-104427/ · CVE data: NVD/MITRE (public domain) · © 2026 ValtersIT Hub
>_ SYSTEM_CORE: INTEL_ACTIVE
90% TEAM-CURATED // 10% AUTOMATED INGESTION.
ALL PATCH REFERENCES AND VERSION DATA SOURCED FROM NVD + OSV OFFICIAL REGISTRIES.