GitHub Advisoryadvisory · crates.io

GHSA-v5hw-cv9c-rpg7 libp2p-rendezvous: Unbounded rendezvous DISCOVER cookies enable remote memory exhaustion

HIGH Published 2026-04-04 Modified 2026-04-07 Official page ↗
Aliases
CVE-2026-35457
Ecosystem
crates.io
Packages
libp2p-rendezvous
Severity
High
CVSS vector
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:H
Weaknesses
CWE-770
Reviewed
2026-04-04

Affected packages

• crates.io libp2p-rendezvous: < 0.17.1 → fixed in 0.17.1

Description

Summary The rendezvous server stores pagination cookies without bounds. An unauthenticated peer can repeatedly issue `DISCOVER` requests and force unbounded memory growth. Details Pagination state is stored in: ```rs HashMap> ``` On `Message::Discover`: ``` remote peer → DISCOVER → handle_request → registrations.get(...) → new cookie generated → cookie inserted into Registrations::cookies ``` There is no upper bound or eviction policy, so repeated DISCOVER requests grow this map indefinitely. PoC A reproduction test and minimal harness will be provided in a private fork in a follow-up comment. Impact Remote state amplification leading to memory exhaustion. Properties: • etwork reachable • no authentication required • low attack complexity • protocol-compliant traffic Impacts rendezvous nodes exposed to untrusted peers. --- Possible Fixes 1. Global cap + eviction Bound cookie storage (`MAX_COOKIES_TRACKED`) with FIFO/expiry aware eviction. Tradeoff: attacker can churn cookies and evict legitimate pagination state. 2. Stateless cookies Encode pagination state in authenticated cookies instead of storing server-side state. Tradeoff: more complex implementation. 3. Rate limiting / per-peer quotas Limit cookie creation per peer. Tradeoff: requires peer tracking.

Related

Alias · CVE (1)

  • CVE-2026-35457 libp2p-rust is the official rust language Implementation of the libp2p networking stack. vulnerability

Weakness · CWE (1)

  • CWE-770 Allocation of Resources Without Limits or Throttling weakness

References