Skip to main content

core-rs-albatross EUVDEUVD-2026-31195

| CVE-2026-40094 MEDIUM
Improper Check for Unusual or Exceptional Conditions (CWE-754)
2026-05-20 GitHub_M
4.3
CVSS 3.1 · Vendor: GitHub_M
View

Attack ChainAIDerived

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

  1. Access
    Join libp2p discovery network
  2. Delivery
    Broadcast signed PeerContact with empty addresses list
  3. Exploit
    Malicious contact accepted into PeerContactBook
  4. Execution
    Wait for victim to query RPC/web client address book
  5. Persist
    .expect() panics on empty address iterator
  6. Impact
    Node or RPC task crashes

Vulnerability Assessment

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

The attacker must be a participant in the libp2p peer discovery network - they need to be able to send signed PeerContact messages that the target node will accept and store. No authentication to the target node is required (PR:N in CVSS vector). The crash is not triggered by the attacker directly; it requires a subsequent call to get_address_book, which is exposed via the node's RPC interface or web client (UI:R in CVSS vector). This means exploitation depends on: (1) the target node running core-rs-albatross < 1.4.0; (2) the attacker's ability to insert a peer contact into the discovery layer; and (3) a legitimate user or automated process invoking the address book RPC endpoint after the malicious contact is stored. Exploitation is limited by the need for the second-phase trigger - an operator or client must call get_address_book for the panic to fire. Nodes whose RPC endpoints are not regularly queried, or are firewalled from external callers, reduce the window for the crash to be triggered.

Impact

The CVSS 3.1 score of 4.3 (Medium) reflects a network-accessible (AV:N), low-complexity (AC:L), unauthenticated (PR:N) trigger requiring user interaction (UI:R), with no confidentiality or integrity impact and only partial availability impact (A:L). The UI:R element is meaningful: exploitation is two-phase - the attacker injects the malicious contact passively, but the panic only fires when a legitimate user or process calls get_address_book, such as a node operator querying RPC or a connected web client. This decouples the attacker from the crash timing and may make detection harder. No EPSS data was provided, so probabilistic exploitation likelihood cannot be quantified. The vulnerability is not in the CISA KEV catalog, and no public exploit code has been identified. In practice, the availability impact may exceed the A:L CVSS rating if the panic terminates the entire node process rather than just the RPC task - Rust panic behavior is configurable. Overall: genuine operational risk for node operators, but not an emergency given the absence of active exploitation evidence.

Exploit ScenarioDerived

An attacker operating a Nimiq node joins the libp2p peer discovery network and crafts a signed PeerContact message containing a valid peer identity but an empty addresses field, then broadcasts it to target nodes; since no protocol validation rejects empty address lists, the contact is accepted and stored in the target's PeerContactBook. Later, when a node operator or automated monitoring script queries the node's RPC interface or web client - a routine operational action - the get_address_book call internally invokes .expect() on the empty address list, triggering a Rust panic that crashes the RPC task or the node process entirely.

This Month Plan within 30 days. Why: MEDIUM severity (CVSS 4.0-6.9).
Patch available 0.0% exploitation probability (EPSS)

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

Alert me

AnalysisAIv1 – May 20, 2026

Panic-triggered denial of service in Nimiq's core-rs-albatross (versions prior to 1.4.0) allows a network-level attacker to crash the node's RPC task by injecting a signed PeerContact with an empty addresses list into the libp2p peer discovery layer. The crash is deferred: the malicious contact is accepted and stored silently, but any subsequent call to get_address_book - from an RPC client or web client - triggers an unconditional Rust panic via .expect() on an empty iterator. No public exploit code has been identified at time of analysis, and the vulnerability is not listed in the CISA KEV catalog, though the low attack complexity and network-accessible vector make casual exploitation plausible against any exposed node operator workflow.

RemediationAI

The primary fix is upgrading core-rs-albatross to version 1.4.0, released at https://github.com/nimiq/core-rs-albatross/releases/tag/v1.4.0. The upstream patch is confirmed via PR #3715 (https://github.com/nimiq/core-rs-albatross/pull/3715), which replaces the panicking .expect() call with a .filter_map() that silently drops peer contacts carrying empty address lists. If an immediate upgrade is not feasible, operators can reduce exposure by restricting access to the RPC and web client endpoints that invoke get_address_book - blocking external callers prevents the panic trigger, though the malicious contacts will still accumulate in memory. A further compensating control is network-level egress/ingress filtering to limit which peers can participate in libp2p discovery, reducing the attacker's ability to insert malicious PeerContact entries; however, this degrades peer diversity and may affect blockchain synchronization. Neither workaround eliminates the root cause - upgrading to v1.4.0 is the definitive remediation.

Affected VersionsENISA

core-rs-albatross < 1.4.0

Affected Packages

euvd core_rs_albatross fix: 1.4.0

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 1 package in euvd

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

Technical ContextAI · show details

The affected component is the libp2p-based peer discovery subsystem within Nimiq's Rust blockchain implementation, identified by CPE cpe:2.3:a:nimiq:core-rs-albatross:*:*:*:*:*:*:*:*. Peer discovery operates via signed PeerContact messages, which can legally carry an empty addresses field - no protocol-level validation enforces at least one address. The root cause maps to CWE-754 (Improper Check for Unusual or Exceptional Conditions): the PeerContactBook::known_peers function called addresses.first().expect('every peer should have at least one address') without guarding against an empty list. In Rust, .expect() on a None value triggers an unrecoverable panic, which depending on the panic runtime setting either terminates the thread/task or the entire process. The fix in PR #3715 replaced .map() with .filter_map() using the ? operator, silently skipping contacts whose address list is empty rather than panicking.

Know when Core Rs Albatross gets its next vulnerability

  • 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_M) PRIMARY 4.3 MEDIUM
AV:N/AC:L/PR:N/UI:R/S:U/C:N/I:N/A:L

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

CVSS VectorVendor: GitHub_M

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

Lifecycle Timeline

1
Patch available
May 20, 2026 - 22:02 EUVD

DescriptionCVE.org

nimiq-blockchain provides persistent block storage for Nimiq's Rust implementation. In versions 1.3.0 and prior, network-libp2p discovery accepts signed PeerContact updates from untrusted peers and stores them in a peer contact book, eventually leading to address book crash. A PeerContact can legally contain an empty addresses list (no intrinsic validation enforces non-empty). Later, PeerContactBook::known_peers builds an address book by taking addresses.first().expect("every peer should have at least one address"). If the attacker has inserted a signed peer contact with addresses=[], any call to get_address_book (RPC/web client) can panic and crash the node/RPC task depending on panic settings. This issue has been fixed in version 1.4.0.

Threat Intelligence Overview

EPSS Score
0.0%
Top 91% exploitable
Data Quality
7 sources
Confidence: High
EUVD NVD CVE.org EPSS Vulnrichment 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 Yes
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
No
Human Impact· derived
Medium
Technical Impact
Partial

Priority Score

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

Attack Technique

Denial of Service attacks render applications or systems unavailable by overwhelming resources or triggering failure conditions.

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