Skip to main content

Nimiq network-libp2p CVE-2026-44505

MEDIUM
Improper Handling of Exceptional Conditions (CWE-755)
2026-06-10 security-advisories@github.com
5.3
CVSS 3.1 · Vendor: github
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Establish peer connection to target node
  2. Delivery
    Wait for or induce target to issue DHT get-record query
  3. Exploit
    Return FoundRecord with invalid/forged record signature
  4. Execution
    Trigger dht_verifier.verify() failure in handle_dht_get
  5. Persist
    oneshot channel left unsent, bookkeeping not cleaned up
  6. Impact
    Network::dht_get future hangs indefinitely

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A10:2025 - Mishandling of Exceptional Conditions
ASVS 5.0
V16 - Security Logging and Error Handling Exception handling procedures
Exploitation Conditions

The kad feature must be compiled into the network-libp2p crate (non-default feature flag). The victim node must be actively executing a Network::dht_get call at the time the malicious peer returns a FoundRecord. The attacker must be an established peer in the victim's Kademlia routing table or able to respond to the specific query ID. Exploitation is unauthenticated (CVSS PR:N) and requires no user interaction (UI:N), but depends on the timing of an in-flight DHT query. A node not performing any DHT lookups at the time of the malformed response is not affected. The hang affects only the individual future awaiting that query, not the entire network stack; other operations continue unless callers share executor resources with the stalled future.

Impact

CVSS 5.3 Medium with vector AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L indicates network-exploitable, low-complexity availability impact requiring no authentication or user interaction. The NVD tag of 'Information Disclosure' conflicts with the actual CVSS impact vector (C:N/I:N/A:L) and the description, which describes only a hanging future - no data exfiltration path is described or evidenced in the PR diff. This tag discrepancy should be treated as mislabeled metadata; security teams should rely on the CVSS vector and description. No EPSS score was provided in the input data. The issue is not in CISA KEV, and no public exploit code exists. The real-world impact is a targeted availability degradation against Nimiq nodes performing DHT lookups, not a broad exploitation scenario. A malicious peer can selectively stall a victim node's DHT operations but cannot gain code execution, exfiltrate data, or affect blockchain consensus directly. Risk priority is low for patched deployments; unpatched nodes actively querying DHT are the realistic exposure surface.

Exploit ScenarioDerived

An attacker operates a malicious Nimiq peer that connects to a target node and waits for the target to initiate a DHT get-record query. When the target queries for a record the malicious peer claims to have, the peer returns a FoundRecord response containing a record with an invalid or forged signature. The target's dht_verifier.verify() call fails, the error path exits without completing the oneshot, and the awaiting Network::dht_get future hangs indefinitely, potentially blocking any application logic depending on the DHT lookup result. No public POC code is known at time of analysis, but the regression test added in PR #3716 (dht_get_with_verifier_failure_returns_error) demonstrates the exact triggering condition.

This Month Plan within 30 days. Why: MEDIUM severity (CVSS 4.0-6.9).
No patch listed yet 0.0% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – Jun 10, 2026

Indefinite future hang (denial of service) in Nimiq core-rs-albatross's network-libp2p component allows any remote peer to cause DHT get-record callers to block forever by returning a record that fails signature or structural verification. The root cause is improper error handling in handle_dht_get (swarm.rs): on verifier failure or subsequent inconsistent-state transitions, the oneshot channel used by Network::dht_get is never completed and per-query bookkeeping is never cleaned up, leaving the awaiting caller suspended without a timeout. No public exploit has been identified at time of analysis, and this is not listed in CISA KEV. The issue is patched in version 1.4.0.

RemediationAI

Upgrade to nimiq/core-rs-albatross version 1.4.0, which introduces the abort_dht_get cleanup helper, adds a REQUEST_TIMEOUT to output_rx.await in Network::dht_get, and adds three new error variants (DhtGetInconsistentState, DhtGetVerificationFailed, DhtGetTimeout) to ensure all error paths properly signal the oneshot and release bookkeeping. The fix is confirmed in the tagged GitHub release at https://github.com/nimiq/core-rs-albatross/releases/tag/v1.4.0 and the upstream PR at https://github.com/nimiq/core-rs-albatross/pull/3716. If immediate upgrade is not feasible, a partial compensating control is to wrap all callsites of Network::dht_get with an application-level timeout (e.g., tokio::time::timeout), which prevents indefinite hangs at the cost of legitimate DHT queries also timing out under slow-peer conditions. Disabling the kad feature entirely would eliminate the attack surface but also removes all DHT-based peer discovery and record storage functionality.

Affected ProductsAI

All releases of nimiq/core-rs-albatross prior to version 1.4.0 are affected when the kad feature is compiled in. The vulnerable component is network-libp2p/src/swarm.rs within the core-rs-albatross repository. The GitHub Security Advisory GHSA-g39c-jcgg-qwvr and the v1.4.0 release tag at https://github.com/nimiq/core-rs-albatross/releases/tag/v1.4.0 confirm the version boundary. No CPE string was provided in the input data; affected versions can be identified via Cargo.lock referencing nimiq-network-libp2p at any version below 1.4.0.

Affects your stack

Find out whether the stacks and servers you run are on an affected version.

Checking this CVE against your own stacks and servers is part of the Basic plan and up.

Technical ContextAI · show details

Nimiq core-rs-albatross is a Rust implementation of the Nimiq Proof-of-Stake blockchain protocol using the Albatross consensus algorithm. The network-libp2p crate integrates with libp2p's Kademlia DHT (kad) for peer-to-peer record storage and retrieval. Query progress is handled in handle_dht_get (network-libp2p/src/swarm.rs), which processes kad::Event callbacks and communicates results to callers via tokio oneshot channels stored in a dht_gets map. When a FoundRecord event arrives, the code invokes dht_verifier.verify() to authenticate the record. CWE-755 (Improper Handling of Exceptional Conditions) captures the root cause: the error path returned early without sending an error to the oneshot, without removing the query from dht_get_results, and without calling query.finish() on the kad query object. Because Network::dht_get called output_rx.await with no timeout, any future awaiting the result would be permanently suspended. The fix introduces an abort_dht_get helper that unconditionally cleans up both the oneshot sender and the dht_get_results bookkeeping, and wraps output_rx.await in a REQUEST_TIMEOUT using tokio::time::timeout.

Know when the next one hits your stack

  • Watch products and get an email when something new is published
  • Check this CVE against your own stack and servers
  • Exploit and PoC references, threat intelligence from 22 sources

No credit card · 7-day full trial

Severity by source

Vendor (github) PRIMARY 5.3 MEDIUM
AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L

Primary rating from Vendor (github) · only source for this CVE.

CVSS VectorVendor: github

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

DescriptionCVE.org

Nimiq is a Rust implementation of the Nimiq Proof-of-Stake protocol based on the Albatross consensus algorithm. network-libp2p handles kad get-record query progress in handle_dht_get (network-libp2p/src/swarm.rs). Prior to version 1.4.0, when a peer returns a FoundRecord, the code verifies the record via dht_verifier.verify(&record.record). On verifier error, handle_dht_get logs and returns early without completing the oneshot used by Network::dht_get, and without cleaning up per-query bookkeeping. Later query progress can hit the "DHT inconsistent state" path and also return without cleanup. Because Network::dht_get awaits the oneshot without a timeout, the caller future can hang indefinitely. This issue has been patched in version 1.4.0.

Threat Intelligence Overview

EPSS Score
0.0%
Top 89% exploitable
Social Media
1
Sightings
Data Quality
6 sources
Confidence: High
NVD CVE.org EPSS Vulnrichment CIRCL GitHub VulDB

How this decision was reached

The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.

SignalValue
Severity MEDIUM
CISA KEV No
Public POC No
EPSS 0.0%
Patch available No
Active threat No
Deciding rule
MEDIUM severity (CVSS 4.0-6.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Scheduled
Exploitation
None
System Exposure· derived
Open
Automatable
Yes
Human Impact· derived
Medium
Technical Impact
Partial

Priority Score

26
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +26
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.

Related Vulnerabilities in Nimiq Consensus Protocol Implementation Flaws

View all 3

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy