Skip to main content

js-libp2p EUVDEUVD-2026-65154

| CVE-2026-77384 HIGH
Uncontrolled Resource Consumption (CWE-400)
2026-08-24 GitHub_M
7.5
CVSS 3.1 · Vendor: GitHub_M
View

Attack ChainAIDerived

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

  1. Access
    Establish peering with relay server
  2. Delivery
    Send repeated valid RESERVE messages for same slot
  3. Exploit
    Accumulate abort listeners per refresh
  4. Execution
    Exhaust relay process heap memory
  5. Impact
    Relay server crashes or becomes unresponsive

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A06:2025 - Insecure Design
ASVS 5.0
V2 - Validation and Business Logic Resource consumption limits
MITRE ATT&CK

1 technique across 1 tactic: Impact

The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up.

Exploitation Conditions

The target must be running a js-libp2p node configured as a circuit-relay-v2 relay server - nodes acting solely as clients or ordinary peers are not affected. The CVSS vector (PR:N, UI:N, AV:N, AC:L) confirms exploitation requires no authentication, no user interaction, and no special network position beyond TCP/QUIC reachability to the relay server. The RESERVE messages themselves must be valid (well-formed protocol messages from a recognized peer), meaning the attacker must participate in the libp2p network as a legitimate peer identity; however, generating a peer identity is trivial and unauthenticated in practice. What limits exploitation: only relay server deployments are vulnerable, not all js-libp2p nodes; the attack is a resource exhaustion DoS without remote code execution or data exfiltration; and the growth rate is bounded by network throughput to the target.

Impact

The CVSS 3.1 vector (AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H) accurately captures the threat profile: network-reachable with no authentication, low complexity, and high availability impact. The attack is trivially automatable - an adversary only needs to repeatedly send valid protocol-conforming RESERVE messages, requiring no exploit of a memory safety bug or race condition. No EPSS data was provided in the input, and this CVE does not appear in the CISA KEV catalog, suggesting no confirmed active exploitation at time of analysis. Despite the absence of KEV listing, the operational risk for relay operators is genuine: even a small, focused DoS campaign against a relay node serving a decentralized application's network could disrupt connectivity for many dependent peers. The impact is bounded to availability (no confidentiality or integrity loss), and the vulnerability only affects nodes configured to operate as circuit-relay-v2 relay servers, which limits the exposed population. The fix is a one-line conditional guard confirmed in the upstream commit, with a dedicated regression test, giving high confidence in the patch.

Exploit ScenarioDerived

An attacker connects to a js-libp2p relay server as a valid peer and repeatedly sends RESERVE protocol messages for the same relay slot in a tight loop. Each message is valid and processed normally by the server, which refreshes the reservation and attaches a new abort listener to the reused signal without removing the previous one. After thousands of iterations, the relay server's Node.js process memory grows unboundedly until the event loop degrades or the process is killed by the OS, denying relay service to all legitimate peers. No public proof-of-concept code has been identified, but the attack requires only standard libp2p protocol messages.

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.9).
Patch available 0.3% exploitation probability (EPSS)

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

Alert me

AnalysisAIv1 – Aug 24, 2026

Unbounded abort listener accumulation in js-libp2p's circuit-relay-v2 relay server allows any remote peer to exhaust memory and deny service by repeatedly sending valid RESERVE requests for the same reservation slot. The reservation-store.ts reservation refresh path reuses an existing retimeableSignal but unconditionally registers a new abort listener on every call, causing listeners and their closures to grow without bound. No authentication is required to trigger this, making it exploitable by any peer that can reach the relay server. No public exploit or CISA KEV listing exists at time of analysis, though the unauthenticated network vector and trivial trigger condition make it a credible operational risk for relay operators.

RemediationAI

Upgrade the @libp2p/circuit-relay-v2 package to version 4.2.9 or later, which contains the fix at commit 4bb8fbe8d3f3590e4af51a1f5f7de56fffa5804d. The release is available at https://github.com/libp2p/js-libp2p/releases/tag/circuit-relay-v2-v4.2.9 and via npm. If an immediate upgrade is not possible, operators running relay servers can limit the rate at which any single remote peer may send RESERVE messages using application-level or network-level rate limiting (e.g., a reverse proxy or connection throttle), which will constrain the speed of listener accumulation without eliminating the root cause. Additionally, periodically restarting the relay server process will reclaim accumulated listeners as a stopgap, though this introduces service interruptions. Neither workaround addresses the underlying bug and should only be used while upgrade is pending.

Affected VersionsENISA

js-libp2p 2.1.5, < 4.2.9

Affected Packages

euvd js_libp2p_2_1_5 fix: 4.2.9

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

libp2p is a modular peer-to-peer networking stack; js-libp2p is its JavaScript implementation (CPE: cpe:2.3:a:libp2p:js-libp2p:*:*:*:*:*:*:*:*). The @libp2p/circuit-relay-v2 package implements the circuit relay protocol, which allows nodes to act as intermediaries relaying connections between peers that cannot directly reach each other. Relay servers maintain a ReservationStore to track which peers have reserved relay slots. The root cause is CWE-400 (Uncontrolled Resource Consumption): in the reserve() method within reservation-store.ts, when refreshing an existing reservation the code reuses the same retimeableSignal object but calls signal.addEventListener('abort', ...) unconditionally on every invocation. Because the same signal instance is reused, each refresh call attaches an additional closure to the same EventTarget without ever removing the prior one. A remote peer sending N refresh RESERVE messages accumulates N dangling listeners, consuming N times the memory and eventually degrading or crashing the relay process.

Know when Libp2P 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 7.5 HIGH
AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
vuln.today AI 7.5 HIGH

Network-reachable relay server requires no authentication; impact is purely availability via listener exhaustion, with no confidentiality or integrity loss.

3.1 AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
4.0 AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N

Primary rating from Vendor (GitHub_M).

CVSS VectorVendor: GitHub_M

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

Lifecycle Timeline

2
Patch available
Aug 24, 2026 - 22:02 EUVD
CVE Published
Aug 24, 2026 - 21:06 cve.org
HIGH 7.5

DescriptionCVE.org

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.

Executive ViewAI

Why It Matters

js-libp2p's circuit-relay-v2 relay server contains a memory exhaustion vulnerability that allows unauthenticated remote peers to cause denial of service by repeatedly sending reservation requests, overwhelming relay infrastructure. Organizations operating libp2p relay servers face potential service disruption, and operational controls are required immediately since no vendor patch is currently available.

Business Impact: High
Compensating Controls

Implement per-peer connection rate limiting and RESERVE request throttling to restrict exploitation velocity; deploy continuous monitoring of relay memory consumption and abort listener counts with automated alerting on anomalous growth; restrict relay server network access to only trusted peer networks; maintain awareness of js-libp2p security advisories for patch availability.

Threat Intelligence Overview

EPSS Score
0.3%
Top 74% exploitable
Prevalence
Low
P2P/decentralized app niche, limited enterprise relay deployments
Data Quality
6 sources
Confidence: High

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 HIGH
CISA KEV No
Public POC No
EPSS 0.3%
Patch available Yes
Active threat No
Deciding rule
HIGH severity (CVSS 7.0-8.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
Out-of-Cycle
Exploitation
Poc
System Exposure· derived
Open
Automatable
Yes
Human Impact
High
Technical Impact
Partial

Priority Score

38
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +38
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.

More in Libp2P

View all
CVE-2026-89146 HIGH POC
8.7 Sep 11

Denial-of-service in libp2p-rendezvous ≤0.17.1 (Rust) allows a malicious rendezvous server to crash any connecting clien

CVE-2026-86039 HIGH POC
8.2 Sep 17

Address-book poisoning in the @libp2p/peer-store component of js-libp2p (8.0.0 up to, but not including, 12.0.24) allows

CVE-2023-39533 HIGH POC
7.5 Aug 08

go-libp2p is the Go implementation of the libp2p Networking Stack. Rated high severity (CVSS 7.5), this vulnerability is

CVE-2026-73568 HIGH POC
7.5 Aug 13

Uncontrolled resource consumption in py-libp2p's yamux stream multiplexer allows any remote peer that completes a standa

CVE-2026-86038 HIGH POC
7.5 Sep 17

Forged message authorship in @libp2p/gossipsub 15.0.0 through 16.0.4 lets an unauthenticated, remote attacker sign a gos

CVE-2026-32314 HIGH
8.7 Mar 13

Rust Yamux prior to version 0.13.10 is vulnerable to denial of service when processing specially crafted inbound stream

CVE-2026-95859 HIGH
8.7 Oct 16

Remote unauthenticated denial of service in rust-libp2p Gossipsub affects versions prior to 0.49.5 and allows any peer t

CVE-2026-103936 HIGH
7.5 Oct 15

Unauthenticated remote denial of service in @libp2p/webrtc (the js-libp2p WebRTC transport) before 6.0.28 lets a single

CVE-2026-86040 HIGH
7.5 Sep 17

Unauthenticated denial of service in @libp2p/floodsub before 11.0.26 (packaged with js-libp2p < 11.0.26) lets a remote p

CVE-2023-40583 HIGH
7.5 Aug 25

libp2p is a networking stack and library modularized out of The IPFS Project, and bundled separately for other tools to

CVE-2022-23492 HIGH
7.5 Dec 08

go-libp2p is the offical libp2p implementation in the Go programming language. Rated high severity (CVSS 7.5), this vuln

CVE-2022-23487 HIGH
7.5 Dec 07

js-libp2p is the official javascript Implementation of libp2p networking stack. Rated high severity (CVSS 7.5), this vul

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