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

CVE-2026-104432

CVE-2026-104432 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.30%
👁️
0.30% probability
7.6× above the median CVE
Tier: ELEVATED
30-day exploitation window · FIRST.org · updated daily
🥷 MITRE: T1190
👁️
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.3
AV: N Attack Vector Network
AC: L Attack Complexity Low
PR: N Privileges Required None
UI: N User Interaction None
S: U Scope Unchanged
C: N Confidentiality None
I: N Integrity None
A: L Availability Low
5.3
THREAT LEVEL
■ tracking this CVE ✓ independent patch confirmation ⧗ same-origin mirror (GHSA) ⚠ active exploitation verification policy →

Executive Summary

CVE-2026-104432 is an improper exceptional-condition check in the Zcash "Zebra" node implementation (versions before 6.3.0), specifically within the ChainSync::obtain_tips routine. A peer responding to a FindBlocks request with only a single next-block hash causes the node to compute a zero-length sync sample, which is then incorrectly treated as a valid close-to-tip indication. As a result, the HTTP /ready endpoint returns 200 OK even though the node is not synchronized to the chain tip. The flaw has a CVSS v3.1 base score of 5.3 (AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L) and is assigned CWE-754 (Improper Check for Unusual or Exceptional Conditions).

⚡ 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 a consensus-compatible Zcash node written in Rust. Its chain synchronization logic issues FindBlocks requests to peers in order to discover block hashes the node does not yet have, and obtain_tips is part of the code path that evaluates peer tip responses to determine how far the node is from the network tip.

The vulnerability is an improper exceptional-condition check (CWE-754). According to the NVD description, when a peer returns only the next block hash in response to a FindBlocks request, obtain_tips fails to correctly handle this truncated response. Instead of recognizing that only one hash was returned and that this is insufficient to establish tip proximity, the code discards the response as a "valid one-hash FindBlocks response" and proceeds to construct a zero-length sync sample. A zero-length sample is then interpreted as an indicator that the node is close to the tip.

The observable consequence is that the /ready health endpoint returns 200 OK while the node remains behind the network tip. This is a state-reporting integrity failure rather than a memory-safety or code-execution flaw: the node continues to run, but its self-reported readiness does not reflect its actual synchronization state. No patch evidence is available from tracked sources (patch confidence 0/4), and no CVE identifier is present in CISA KEV.

The root cause class — treating a degenerate/empty data set as a valid success condition instead of an exceptional case — is a common logic error in synchronization and health-check code. The specific trigger is network-facing: any connected peer can influence the node's own tip assessment by controlling the shape of its FindBlocks response.

Exploitation Scenarios

Preconditions: The Zebra node must be running a version before 6.3.0, must have at least one connected peer or accept inbound peer connections, and must expose the /ready endpoint (typically to a monitoring system, load balancer, or orchestrator). The attacker must be able to act as, or influence, a peer that responds to FindBlocks requests.

  1. Reconnaissance / target identification: The attacker identifies Zebra nodes by fingerprinting the P2P service and, where exposed, the HTTP /ready endpoint. Nodes that return 200 OK from /ready are normally treated by operators as fully synced; this assumption is what the flaw subverts.

  2. Triggering the flaw: The attacker (or a misbehaving/malicious peer) responds to the node's FindBlocks request with a payload containing only the next block hash. This is the exceptional condition the vulnerable obtain_tips code fails to handle correctly. Because the response is misclassified, a zero-length sync sample is produced rather than an indication that more data is required.

  3. Effect on node state: The zero-length sample is interpreted as "close to tip." No payload execution or memory corruption is involved — this is a logic/state-manipulation attack. The node's /ready endpoint subsequently returns 200 OK while the node is in fact behind the tip.

  4. Post-exploitation impact: The attacker can keep a node in a falsely "ready" state. In deployments where /ready gates traffic routing, service registration, or operational alerting, the node may be treated as healthy and authoritative when it is not, causing stale or divergent chain views to be served to downstream consumers. This is a limited-availability/integrity-of-signal impact (CVSS A:L; no confidentiality or integrity impact in the CVSS vector).

Note: No public PoC is available; the attack chain above is inferred from the vulnerability class described in NVD and does not rely on any specific undocumented function or endpoint beyond those named in the description (ChainSync::obtain_tips, FindBlocks, /ready).

Impact Assessment

The CVSS v3.1 vector is CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L (base 5.3, Medium):

  • Attack Vector: Network — the trigger arrives via peer responses.
  • Attack Complexity: Low — no special conditions beyond controlling a peer response.
  • Privileges Required: None.
  • User Interaction: None.
  • Scope: Unchanged — impact is confined to the affected node's own state reporting.
  • Confidentiality: None. Integrity: None. Availability: Low.

Business impact centers on operational trust: monitoring, orchestration, and health-check-driven routing rely on /ready accurately reflecting synchronization. A node falsely reporting readiness may be placed into service while behind the tip, degrading service quality and potentially serving stale chain data to dependent applications. Blast radius is per-node and per-deployment; there is no remote code execution, no key compromise, and no direct fund-loss vector described. Nodes exposed only on a private network with trusted peers have a reduced attack surface, though a single misbehaving peer is sufficient to trigger the condition.

Detection Guidance

Sigma Rule

title: Zebra Node Falsely Reporting Ready via Truncated FindBlocks Response
id: 3f7c9a1e-2b64-4e0d-9c11-7a5e6d8f0b21
status: experimental
description: Detects Zebra /ready endpoint returning 200 while node is behind tip, consistent with CVE-2026-104432
references:
  - https://nvd.nist.gov/vuln/detail/CVE-2026-104432
author: valtersit.com
date: 2026-01-01
logsource:
  category: webserver
  product: zebra
detection:
  selection:
    cs-method: 'GET'
    cs-uri-stem|endswith: '/ready'
    sc-status: 200
  filter:
    sc-bytes|gt: 0
  condition: selection
falsepositives:
  - Healthy nodes that are genuinely at tip
level: low

YARA Rule

rule CVE_2026_104432_Zebra_ChainSync_ObtainTips
{
    meta:
        description = "Detects Zebra binaries predating 6.3.0 referencing ChainSync obtain_tips logic"
        author = "valtersit.com"
        reference = "https://nvd.nist.gov/vuln/detail/CVE-2026-104432"
        date = "2026-01-01"
    strings:
        $obtain_tips = "obtain_tips" ascii
        $findblocks  = "FindBlocks" ascii
        $chainsync   = "ChainSync" ascii
        $ready       = "/ready" ascii
    condition:
        uint32(0) == 0x464c457f and
        (2 of ($obtain_tips, $findblocks, $chainsync, $ready))
}

Suricata IDS Rule

alert http any any -> any any (msg:"CVE-2026-104432 Zebra /ready falsely reports synced state"; flow:to_server,established; http.method; content:"GET"; http.uri; content:"/ready"; http.stat_code; content:"200"; threshold:type limit, track by_src, count 5, seconds 60; classtype:policy-violation; sid:2026104432; rev:1;)

Elastic Detection

sequence by host.id with maxspan=1m
  [ network where network.protocol == "http" and http.request.method == "GET" and url.path == "/ready" and http.response.status_code == 200 ]
  [ process where process.name == "zebra" and process.args : "*behind*" ]

Splunk SPL Query

index=proxy OR index=web
| search uri_path="/ready" status=200
| stats count by src_ip, host
| where count > 0
| sort - count

Wazuh OSSEC Rule

<group name="zebra,cve-2026-104432,">
  <rule id="104432" level="6">
    <decoded_as>json</decoded_as>
    <field name="url.path">/ready</field>
    <field name="http.response.status_code">200</field>
    <description>CVE-2026-104432: Zebra /ready returned 200; verify actual chain sync state</description>
  </rule>
</group>

Mitigation & Patch Guidance

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

  1. Immediate mitigations:

    • Do not rely solely on the /ready endpoint as a synchronization-authoritative signal. Augment readiness checks with an independent tip-comparison metric (e.g., local block height versus observed network height) before routing traffic or registering the node as healthy.
    • Restrict peer connectivity to trusted, vetted peers where operationally feasible, reducing exposure to adversarial or malformed FindBlocks responses.
    • Alert on nodes that report /ready = 200 while lagging in block height.
  2. Patch/upgrade steps:

    • Upgrade Zebra to version 6.3.0 or later, which per the NVD description addresses the improper exceptional-condition check in ChainSync::obtain_tips.
    • Verify the upgrade by confirming /ready accuracy against block-height telemetry after deployment.
    • No vendor fix or workaround is listed for versions below 6.3.0; treat all pre-6.3.0 nodes as affected.
  3. Long-term hardening:

    • Treat health/readiness endpoints as security-relevant signals; validate their outputs against ground-truth state rather than trusting a single status code.
    • Fuzz and unit-test peer-response handling for degenerate inputs (empty, truncated, single-element responses).
    • Monitor upstream Zebra advisories and re-evaluate when patch confidence increases.

References

No public exploit code, PoC, or Nuclei template is known for this CVE at the time of writing. No threat actor campaign or in-the-wild exploitation evidence is available. EPSS has not yet been scored by FIRST.org.

👁️ 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-104432/ · 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.