Loading...
Skip to main content

CVE-2026-52829

HIGH

Zebra Address Book Aborted by IPv4-Mapped Mempool Misbehavior Update

Published July 2, 2026Updated July 2, 2026Source: osv

Summary

### Am I affected You are affected if: 1. You run `zebrad` up to and including `v4.4.1`. 2. Your node listens on the default `[::]` address on a Linux host (the standard deployment configuration — `net.ipv6.bindv6only=0` is the default on all common Linux distributions). 3. Your node is synced near the chain tip (the expected production state for any node participating in the network). ### Summary An address normalization mismatch between the handshake path and the mempool misbehavior path causes a deterministic assertion panic when a peer connects via IPv4 to a dual-stack IPv6 listener and then triggers a mempool misbehavior penalty. The handshake path canonicalizes IPv4-mapped IPv6 addresses to plain IPv4 when storing the peer in the address book via `MetaAddr::new_connected`. The mempool misbehavior path forwards the raw transient socket address (IPv4-mapped IPv6 form) when sending `MetaAddrChange::UpdateMisbehavior` to the address book. The address book looks up the canonical IPv4 entry but then asserts that the previous entry's address matches the change's address. The mismatch between the canonical IPv4 address and the raw IPv4-mapped IPv6 address triggers the assertion, and `panic = "abort"` terminates the process. ### Details On Linux with `net.ipv6.bindv6only=0`, an IPv4 connection accepted by a `[::]` listener is represented internally as an IPv4-mapped IPv6 socket address (e.g., `::ffff:127.0.0.1:8233`). Zebra's `canonical_peer_addr` helper converts these to plain IPv4 (e.g., `127.0.0.1:8233`). The handshake path uses `MetaAddr::new_connected`, which canonicalizes the address before storing in the address book. However, inbound inventory registration uses `connected_addr.get_transient_addr()`, preserving the raw IPv4-mapped form. When the mempool later downloads an invalid transaction from this peer and generates a misbehavior penalty, the raw transient address is forwarded through the misbehavior channel to `MetaAddrChange::UpdateMisbehavior`, which does not canonicalize. After the 30-second misbehavior batch flush, `AddressBook::update` retrieves the canonical IPv4 entry but `MetaAddrChange::apply_to_meta_addr` asserts that `previous.addr == self.addr()`, which fails because one is IPv4 and the other is IPv4-mapped IPv6. The attacker needs only to complete a P2P handshake over IPv4 to a dual-stack listener and advertise an invalid mempool transaction (such as a coinbase transaction). The assertion fires after the 30-second misbehavior batch flush. ### Patches Patched in Zebra 4.5.0. The fix canonicalizes the address in the misbehavior update path via a new `MetaAddr::new_misbehavior` constructor that applies `canonical_peer_addr` before creating the `UpdateMisbehavior` change. ### Workarounds Configuring `listen_addr` to an IPv4-only address (e.g., `0.0.0.0:8233`) avoids the IPv4-mapped IPv6 representation and prevents this specific assertion. Alternatively, setting `net.ipv6.bindv6only=1` on Linux prevents dual-stack acceptance. ### Impact A remote unauthenticated peer can deterministically crash any synced Zebra node running the default Linux dual-stack configuration with a single invalid mempool transaction advertisement, followed by a 30-second wait. The attack requires no mining capability, no RPC access, no funds, and no special privileges. The crash can be repeated after each restart, causing persistent downtime. Linux dual-stack sockets and mempool activation are the default production state, not special preconditions. ### Credit Reported by `@Haxatron`.

Remediation

Upgrade to the fixed version using your package manager.

Cargo
Update zebrad to 4.5.0 or later
cargo update -p zebrad --precise 4.5.0
Cargo
Update zebra-network to 7.0.0 or later
cargo update -p zebra-network --precise 7.0.0

After upgrading, run your dependency scanner again to confirm the vulnerability is resolved.

Affected Packages (2)

PackageEcosystemAffectedFixed In
zebrad
crates.io
All versions4.5.0
zebra-network
crates.io
All versions7.0.0

Vulnerability Classification

Common Weakness Enumeration (CWE) identifiers for this vulnerability type.

CVSS Score Breakdown

What the CVSS (Common Vulnerability Scoring System) 7.5 score means for each attack dimension.

Attack Vector
Network
Attack Complexity
Low
Privileges Required
None
User Interaction
None
Scope
Unchanged
Confidentiality
None
Integrity
None
Availability
High

CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H

Frequently Asked Questions

What is CVE-2026-52829?
Zebra Address Book Aborted by IPv4-Mapped Mempool Misbehavior Update This vulnerability has been assigned a severity rating of HIGH (CVSS score: 7.5/10).
How do I check if my project is affected by CVE-2026-52829?
CVE-2026-52829 affects zebrad and zebra-network. Use GeekWala's free vulnerability scanner to check your dependencies against CVE-2026-52829 and 200,000+ other known vulnerabilities.

Severity & Exploitability

CVSS Score
7.5

High exploitability or significant impact. Prioritize remediation within days.

Also Known As

GHSA-63wg-wjjj-7cp8

Related CVEs

  • CVE-2026-41584
    CRITICAL

    Zebra has rk Identity Point Panic in Transaction Verification

  • CVE-2026-41583
    CRITICAL

    Zebra Vulnerable to Consensus Divergence in Transparent Sighash Hash-Type Handling

  • GHSA-cwfq-rfcr-8hmp
    CRITICAL

    Zebra's Transparent SIGHASH_SINGLE Handling Diverges from zcashd for Corresponding Outputs

  • CVE-2026-34377
    HIGH

    Zebra has a Consensus Failure due to Improper Verification of V5 Transactions

  • CVE-2026-52736
    HIGH

    Zebra has block suppression via NU5 same-header body poisoning of sent-hash cache

  • CVE-2026-41585
    MEDIUM

    Zebra Vulnerable to Denial of Service via Interrupted JSON-RPC Requests from Authenticated Clients

  • CVE-2026-52733
    MEDIUM

    zebrad has persistent on-disk corruption of Sapling/Orchard subtree roots after chain fork via pop_tip

  • CVE-2026-44500
    MEDIUM

    Zebra Vulnerable to Allocation Amplification in Inbound Network Deserializers

Check if you're affected

Scan your dependencies to see if this vulnerability affects your projects.

Scan Your Dependencies