Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessJoin gossipsub mesh unauthenticated
-
DeliveryCraft message with victim RSA peer ID in from
-
ExploitSign with attacker key, attacker pubkey in msg.key
-
ExecutionKey-to-author binding check skipped
-
PersistMessage accepted and propagated as victim
-
ImpactDownstream 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. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – 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
Affected Packages
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
AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:N
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.
Primary rating from Vendor (GitHub_M).
CVSS VectorVendor: GitHub_M
Lifecycle Timeline
2DescriptionCVE.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
@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.
Apply vendor patch.
Threat Intelligence Overview
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.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.
Denial-of-service in libp2p-rendezvous ≤0.17.1 (Rust) allows a malicious rendezvous server to crash any connecting clien
Address-book poisoning in the @libp2p/peer-store component of js-libp2p (8.0.0 up to, but not including, 12.0.24) allows
go-libp2p is the Go implementation of the libp2p Networking Stack. Rated high severity (CVSS 7.5), this vulnerability is
Uncontrolled resource consumption in py-libp2p's yamux stream multiplexer allows any remote peer that completes a standa
Rust Yamux prior to version 0.13.10 is vulnerable to denial of service when processing specially crafted inbound stream
Remote unauthenticated denial of service in rust-libp2p Gossipsub affects versions prior to 0.49.5 and allows any peer t
Unauthenticated remote denial of service in @libp2p/webrtc (the js-libp2p WebRTC transport) before 6.0.28 lets a single
Unauthenticated denial of service in @libp2p/floodsub before 11.0.26 (packaged with js-libp2p < 11.0.26) lets a remote p
Unbounded abort listener accumulation in js-libp2p's circuit-relay-v2 relay server allows any remote peer to exhaust mem
libp2p is a networking stack and library modularized out of The IPFS Project, and bundled separately for other tools to
go-libp2p is the offical libp2p implementation in the Go programming language. Rated high severity (CVSS 7.5), this vuln
js-libp2p is the official javascript Implementation of libp2p networking stack. Rated high severity (CVSS 7.5), this vul
EUVD-2026-81685
GHSA-c3gv-825q-fvmp
NVD
CVE.org
EPSS
Exploit-DB