CVE-2026-77384

libp2p: Circuit relay v2 server reservation refresh leaks abort listeners and allows remote resource exhaustion

Published Aug 24, 2026 CVSS 3.1 · 7.5 High EPSS < 1% KEV · Not listed
Description
libp2p is a JavaScript implementation of the libp2p networking stack. Prior to version 4.2.9, the reservation refresh path in reservation-store.ts reuses the same retimeableSignal but unconditionally registers another abort listener on every refresh. As a result, a remote peer can repeatedly send valid RESERVE requests for the same reservation, causing unbounded listener and closure growth in @libp2p/circuit-relay-v2 relay servers and leading to denial of service. This issue is fixed in version 4.2.9.

Analysis

AI-generated

Technical impact

A flaw in the reservation refresh routine of libp2p’s Circuit relay v2 server causes each refresh to add another abort listener to a shared signal. A remote peer can repeatedly send valid RESERVE requests for the same reservation, resulting in unbounded growth of listener objects and eventual exhaustion of server resources. The vulnerability manifests as a classic uncontrolled resource consumption weakness (CWE-400) and an unreleased resource condition (CWE-772). Once triggered, the relay server can become unable to accept new connections or process legitimate traffic, effectively denying service to all relying clients.

Affected Systems

Any deployment of the libp2p JavaScript stack that includes the circuit‑relay‑v2 component and was running a version earlier than 4.2.9. The issue is specific to the js‑libp2p library, particularly the reservation‑store module in reservation‑store.ts.

Risk and Exploitability

The CVSS score for this weakness is 7.5, indicating a high severity rating. The EPSS value is unavailable, and the vulnerability is not listed in CISA’s KEV catalog, so there is no current evidence of widespread exploitation. However, because the flaw can be triggered remotely by any peer that can send RESERVE traffic, it constitutes a plausible attack vector that can lead to cascading denial of service for the entire relay network.

Remediation

No solution or workaround provided in the CVE record.

OpenCVE Recommended Actions

  • Upgrade libp2p to version 4.2.9 or later to apply the upstream fix
  • Restrict incoming RESERVE requests by filtering or rate‑limiting untrusted peers to reduce the potential for rapid listener buildup
  • Monitor the relay server for abnormal memory usage or increased abort listener counts and configure automatic restarts or scaling as a contingency for accidental oversubscription

Generated by OpenCVE AI on August 24, 2026 at 22:48 UTC.

Tracking

Sign in to view the affected projects.

Advisories

No advisories available
History
Type Values Removed Values Added
Metrics ssvc

{'options': {'Automatable': 'yes', 'Exploitation': 'poc', 'Technical Impact': 'partial'}, 'version': '2.0.3'}

Type Values Removed Values Added
Description libp2p is a JavaScript implementation of the libp2p networking stack. Prior to version 4.2.9, the reservation refresh path in reservation-store.ts reuses the same retimeableSignal but unconditionally registers another abort listener on every refresh. As a result, a remote peer can repeatedly send valid RESERVE requests for the same reservation, causing unbounded listener and closure growth in @libp2p/circuit-relay-v2 relay servers and leading to denial of service. This issue is fixed in version 4.2.9.
Title libp2p: Circuit relay v2 server reservation refresh leaks abort listeners and allows remote resource exhaustion
Weaknesses CWE-400
CWE-772
References
Metrics cvssV3_1

{'score': 7.5, 'vector': 'CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H'}

Subscriptions

No data.

Weaknesses
  • CWE-400

    Uncontrolled Resource Consumption

  • CWE-772

    Missing Release of Resource after Effective Lifetime

Sources

Status
PUBLISHED
Assigner
GitHub_M
Published
Updated
Aug 25, 2026, 7:04 PM
Reserved
Aug 20, 2026, 7:36 PM
Status
Deferred
Published
Aug 24, 2026, 10:17 PM
Modified
Oct 12, 2026, 3:10 PM