Skip to main content

libp2p gossipsub EUVDEUVD-2026-81685

| CVE-2026-86038 HIGH
Insufficient Verification of Data Authenticity (CWE-345)
2026-09-17 GitHub_M GHSA-c3gv-825q-fvmp
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
    Join gossipsub mesh unauthenticated
  2. Delivery
    Craft message with victim RSA peer ID in from
  3. Exploit
    Sign with attacker key, attacker pubkey in msg.key
  4. Execution
    Key-to-author binding check skipped
  5. Persist
    Message accepted and propagated as victim
  6. Impact
    Downstream trust decisions poisoned

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A08:2025 - Software or Data Integrity Failures
ASVS 5.0
V15 - Secure Coding and Architecture Data authenticity verification
Exploitation Conditions

Exploitation requires the target deployment to run @libp2p/gossipsub 15.0.0 through before 16.0.5 under the default StrictSign message signing policy, and - critically - the impersonated victim must use an RSA peer ID that does NOT inline its public key, because the flaw is that validateToRawMessage verifies the attacker-supplied msg.key signature but skips binding that key to msg.from only in this RSA-without-inlined-key path. Ed25519/secp256k1 peer IDs (which embed the key in the multihash) are not spoofable this way, which limits the victim set. Impact only materializes for applications that make trust decisions on message.from (validators, authorization, accounting, moderation, reputation, or audit logging); deployments that ignore claimed origin are unaffected. No authentication and no user interaction are needed (PR:N/UI:N), and the attacker only needs network reachability into the gossipsub mesh.

Impact

The provided CVSS 3.1 vector (AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:N, base 7.5) is internally consistent with the description: an unauthenticated network attacker can forge message authorship with no user interaction, yielding a pure integrity impact (I:H) and no confidentiality or availability loss - so the input Tag 'Information Disclosure' is misaligned with the actual C:N/I:H impact profile. No EPSS score, CISA KEV entry, or standalone POC is present in the input, so exploitation status is 'no public exploit identified at time of analysis'; however, the fixing PR #3569 ships a unit test that concretely demonstrates the forgery (claiming a victim RSA peer ID while signing with an attacker Ed25519 key), which is effectively a working proof-of-concept of the flaw's mechanics even if not packaged as a weapon. Real-world risk is moderate and highly context-dependent: the flaw only matters for applications that trust message.from for validation, authorization, accounting, moderation, reputation, or audit logging AND where the impersonated peer uses an RSA peer ID that does not inline its public key. Absent KEV/EPSS signals this is a spoofing/authenticity-verification weakness to patch on a normal cadence rather than an emergency, but the network-reachable, unauthenticated, low-complexity nature warrants prompt upgrade for any deployment building trust decisions on gossipsub message origin.

Exploit ScenarioDerived

An attacker joins a gossipsub mesh and publishes a StrictSign message placing a victim's RSA peer ID in msg.from, signing with the attacker's own private key and supplying the attacker's public key in msg.key; because validateToRawMessage never binds that key back to the claimed RSA author, the message is accepted and propagated as authored by the victim. Downstream applications that authorize, moderate, or audit based on message.from then process attacker-controlled content under the victim's identity. The fixing PR #3569 includes a test that reproduces the forgery, effectively serving as a proof-of-concept.

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

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

Alert me

AnalysisAIv1 – Sep 17, 2026

Forged message authorship in @libp2p/gossipsub 15.0.0 through 16.0.4 lets an unauthenticated, remote attacker sign a gossipsub message with their own key while declaring a victim's RSA peer ID as the author (msg.from), so the message is accepted and propagated as if it came from the victim. The spoofing path is confined to RSA peer IDs that do not inline a public key, since Ed25519 and secp256k1 identities embed the key in the peer ID and cannot be impersonated this way. Impact is integrity-only: applications that make trust, authorization, accounting, moderation, reputation, or audit-log decisions on msg.from can act on attacker-controlled data under a false origin, while deployments that ignore claimed authorship are unaffected. No public exploit code or CISA KEV entry was identified at time of analysis, and the vendor fixed the issue in gossipsub 16.0.5 under CVSS 3.1 base 7.5.

RemediationAI

Vendor-released patch: upgrade @libp2p/gossipsub to 16.0.5 or later, which includes the key-to-author binding check introduced by PR #3569 / commit cec2b1f349d130065e561349a0336a239528267f; see advisory GHSA-c3gv-825q-fvmp and the release tag gossipsub-v16.0.5, and verify dependent js-libp2p versions pull the patched gossipsub subpackage. Where an immediate upgrade is not possible, the primary compensating control is to stop treating msg.from as a trusted identity in validators, authorization, accounting, moderation, reputation scoring, or audit logging, since pre-patch there is no configuration in StrictSign that restores that binding; note the trade-off that downstream code must instead carry its own application-layer signature over the payload bound to the expected author identity, which adds per-message overhead and requires coordinated protocol changes. A second option is to migrate peer identities away from RSA to Ed25519 or secp256k1, whose public keys are inlined in the peer ID multihash and are therefore rejected by the flawed comparison even on unpatched code; the trade-off is identity rotation, re-establishing peer records and transport keys, and incompatibility with peers pinned to RSA IDs. Restricting topic publish rights to a closed set of authenticated peers reduces exposure but narrows the open mesh and does not by itself restore origin authenticity.

Affected VersionsENISA

js-libp2p 15.0.0, < 16.0.5

Affected Packages

npm @libp2p/gossipsub fix: 16.0.5
euvd js_libp2p_15_0_0 fix: 16.0.5

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 2 packages in npm, 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, and gossipsub is its pub/sub message routing protocol, published for JavaScript as @libp2p/gossipsub. Under the default StrictSign message signing policy, packages/gossipsub/src/utils/buildRawMessage.ts builds and validates the signed RPC envelope; validateToRawMessage is responsible for confirming that the signature over the payload matches the identity claimed in msg.from. The root cause is CWE-345 (Insufficient Verification of Data Authenticity): the check verified the signature against the attacker-supplied msg.key but only compared that key to the claimed author when the author's peer ID carried an inlined public key (fromPeerId.publicKey !== undefined). RSA peer IDs in libp2p normally use an identity multihash that does not inline the public key, so that guard was skipped and the attacker's key was never bound to msg.from. The upstream fix (PR #3569, commit cec2b1f349d130065e561349a0336a239528267f) replaces the conditional comparison with a mandatory derivation check, if (!fromPeerId.equals(publicKey.toMultihash().bytes)), and stores key: publicKey rather than trusting msg.key; the accompanying unit test constructs a forged envelope where an Ed25519 attacker key signs while the victim RSA peer ID is placed in from, and expects ValidateError.InvalidPeerId. The affected technology surface is the gossipsub signing/validation layer rather than the transport or muxer, and the flaw does not break confidentiality or availability (C:N/A:N) - only the authenticity of the claimed origin.

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:H/A:N
vuln.today AI 7.5 HIGH

Unauthenticated network attacker forges message authorship with no interaction (AV:N/AC:L/PR:N/UI:N); pure origin-integrity impact (I:H), no confidentiality or availability loss; victim-RSA condition affects reach, not attacker complexity.

3.1 AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:N
4.0 AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:H/VA:N/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
High
Availability
None

Lifecycle Timeline

2
Patch available
Sep 17, 2026 - 16:02 EUVD
CVE Published
Sep 17, 2026 - 15:16 cve.org
HIGH 7.5

DescriptionCVE.org

libp2p is a JavaScript implementation of the libp2p networking stack. From 15.0.0 until 16.0.5, @libp2p/gossipsub uses the default StrictSign policy in packages/gossipsub/src/utils/buildRawMessage.ts, where validateToRawMessage verifies a signature with attacker-controlled msg.key but skips binding that key to msg.from when the claimed author is an RSA peer ID that does not inline a public key. An unauthenticated attacker can place a victim RSA peer ID in msg.from, sign the message with the attacker's private key, and supply the attacker's public key in msg.key, causing the message to be accepted and propagated as authored by the victim. Applications that trust message.from for validators, authorization, accounting, moderation, reputation, or audit logging can process attacker-controlled data under false origin attribution. The issue is fixed in version 16.0.5.

Technical POC Analysis

CWE-345 (Insufficient Verification of Data Authenticity), with a secondary CWE-347 (Improper Verification of Cryptographic Signature).

Full technical POC analysis - root cause, step-by-step exploitation and patch breakdown - is part of the Pro and Business plans.

Executive ViewAI

Why It Matters

@libp2p/gossipsub versions 15.0.0 through 16.0.4 allow attackers to forge message authorship by impersonating RSA peer IDs, compromising the integrity of peer-to-peer communications. Organizations that rely on gossipsub for trust, authorization, or audit decisions face risks of unauthorized actions and corrupted data under a false origin, which can erode system integrity and stakeholder confidence. No public exploit identified at time of analysis.

Business Impact: High
Compensating Controls

Apply vendor patch.

Threat Intelligence Overview

EPSS Score
0.2%
Top 94% exploitable
Prevalence
Medium
core JS libp2p pubsub used in IPFS/web3 stacks, common but not universal
Threat Intel
1
1 source
Exploit
POC
Public exploit code exists
Data Quality
5 sources
Confidence: Medium

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 Yes
EPSS 0.2%
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· derived
Scheduled
Exploitation· derived
Poc
System Exposure· derived
Open
Automatable· derived
Yes
Human Impact
High

Priority Score

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

Attack Technique

Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.

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-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-2026-77384 HIGH
7.5 Aug 24

Unbounded abort listener accumulation in js-libp2p's circuit-relay-v2 relay server allows any remote peer to exhaust mem

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