GitHub Advisoryadvisory · crates.io
GHSA-v5hw-cv9c-rpg7 libp2p-rendezvous: Unbounded rendezvous DISCOVER cookies enable remote memory exhaustion
HIGH
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