Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessIdentify service consuming baggage via non-HTTP transport
-
DeliveryCraft oversized baggage payload exceeding 8,192 bytes with 180+ entries
-
ExploitDeliver payload through transport carrier (e.g., AMQP message)
-
ExecutionW3CBaggagePropagator.extract() allocates unbounded entry objects
-
PersistRepeated delivery exhausts Node.js heap
-
ImpactService availability degraded
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A06:2025 - Insecure Design
ASVS 5.0
V2 - Validation and Business Logic Resource allocation 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 | For standard Node.js HTTP servers with default settings, exploitation is practically constrained: Node.js's built-in --max-http-header-size limit of 16,384 bytes caps the total inbound header payload before the propagator is reached, and the baggage header must compete with all other headers for that budget. Exploitation risk is elevated - approaching the full CVSS severity - only when one or more of the following apply: (1) the service consumes baggage over a non-HTTP transport such as AMQP, Kafka, or a custom TextMapGetter implementation that does not impose independent size limits; (2) the operator has explicitly raised --max-http-header-size above its 16 KB default; or (3) the attacker is positioned on the internal network and can inject crafted baggage after a gateway strips its own header size enforcement. No authentication is required (CVSS PR:N). No user interaction is required. The vulnerability is present in any deployment using @opentelemetry/core < 2.8.0 with W3C Baggage propagation enabled. |
| Impact | The provided CVSS 3.1 vector (AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L) scores 5.3 Medium, and this rating is well-calibrated for the standard HTTP deployment case. Node.js enforces a default --max-http-header-size of 16,384 bytes on the aggregate of all HTTP headers, which independently constrains what an external attacker can deliver before the propagator is invoked. Furthermore, the baggage header is already resident in memory when extract() is called; the additional cost is object allocation overhead for splitting into entries, not an unbounded network read. The true risk surface expands materially for non-HTTP transports (AMQP, Kafka, gRPC custom propagators) or when operators have raised --max-http-header-size, both of which remove the natural ceiling. No EPSS score was provided in the intelligence data. No KEV listing exists and no public exploit code has been identified, consistent with the moderate-impact, configuration-dependent nature of the issue. SSVC signals: exploitation status is none/PoC, automatable is yes for vulnerable non-HTTP configs, technical impact is partial - overall this is a low-to-medium priority outside of non-HTTP transport deployments. |
| Exploit ScenarioDerived | An attacker targeting a Node.js microservice that consumes baggage from an AMQP or Kafka message queue (bypassing the Node.js HTTP header size cap) crafts a message with a baggage value exceeding 8,192 bytes containing hundreds of key-value entries. When the service's instrumentation layer invokes W3CBaggagePropagator.extract() on the message carrier, the propagator allocates memory proportional to the oversized input across all entry objects with no cap, potentially exhausting heap resources under sustained message volume. No public exploit code exists at time of analysis, but the attack requires only the ability to publish messages to a queue consumed by the target service. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Jun 15, 2026
Unbounded memory allocation in @opentelemetry/core affects the W3CBaggagePropagator.extract() method, which fails to enforce W3C Baggage specification size limits (8,192 bytes, 180 entries) on the inbound parsing path - only the outbound inject() path was protected. Unauthenticated remote attackers can exploit this to cause partial availability degradation by sending oversized baggage headers, with elevated risk in non-HTTP transport contexts (messaging systems, custom TextMapGetter implementations) where Node.js's native 16 KB header cap does not apply. No public exploit code or CISA KEV listing exists; the CVSS 5.3 Medium score reflects the real-world constraint imposed by Node.js defaults on the dominant HTTP deployment pattern.
RemediationAI
Upgrade @opentelemetry/core to version 2.8.0 or later, which enforces W3C Baggage specification limits at the propagator level: maximum total baggage size of 8,192 bytes, maximum 180 entries, and maximum 4,096 bytes per entry, with truncation applied at the point a limit is reached. The advisory is at https://github.com/open-telemetry/opentelemetry-js/security/advisories/GHSA-8988-4f7v-96qf. For teams unable to patch immediately, ensure the Node.js HTTP server is running with the default --max-http-header-size of 16,384 bytes (do not raise this value); this limits external HTTP attack surface but does not protect non-HTTP transports. For services consuming baggage over non-HTTP transports (messaging queues, gRPC, custom TextMapGetter implementations), validate and cap the raw baggage string length before passing it to extract() as a compensating control - note this requires application-level changes and adds latency to the propagation path.
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
The W3C Baggage specification (https://www.w3.org/TR/baggage/#limits) defines recommended caps - 8,192 bytes total, 180 entries, 4,096 bytes per entry - to prevent resource exhaustion during context propagation. The @opentelemetry/core npm package implements the W3CBaggagePropagator interface for distributed tracing context propagation. Prior to version 2.8.0, the extract() method parsed inbound baggage headers into entry objects without enforcing these caps, causing memory allocation that scales linearly with header size. CWE-770 (Allocation of Resources Without Limits or Throttling) precisely characterizes the root cause: the parser consumed attacker-controlled input without bounding object creation. The affected CPE is pkg:npm/@opentelemetry/core versions before 2.8.0. Parallel advisories exist for opentelemetry-java (GHSA-rcgg-9c38-7xpx) and opentelemetry-go (GHSA-mh2q-q3fh-2475), indicating this is a cross-ecosystem design gap in the OpenTelemetry propagation layer.
Know when Node.js 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:N/A:L
Network-delivered, no auth required, no user interaction; availability impact is Low because Node.js HTTP defaults naturally bound most deployments.
Primary rating from Vendor (https://github.com/open-telemetry/opentelemetry-js).
CVSS VectorVendor: https://github.com/open-telemetry/opentelemetry-js
DescriptionCVE.org
Overview
W3CBaggagePropagator.extract() in @opentelemetry/core does not enforce size limits when parsing inbound baggage HTTP headers. The W3C Baggage specification recommends a maximum of 8,192 bytes and 180 entries; these limits were only enforced on the outbound (inject()) path, not on the inbound (extract()) path. Parsing oversized baggage causes memory allocation proportional to the header size without any cap.
Impact
The practical availability impact for most Node.js deployments is limited. Node.js enforces a default --max-http-header-size of 16,384 bytes on the total combined size of all HTTP headers, constraining what an external attacker can deliver before the propagator is reached. Additionally, the header is already in memory (parsed by the HTTP layer) by the time it reaches the propagator - the additional allocation is the overhead of splitting into entry objects, not an unbounded read.
The risk is higher when transport-layer limits are absent - e.g., non-HTTP transports (messaging systems, custom TextMapGetter implementations) or deployments that have raised --max-http-header-size.
Remediation
Update @opentelemetry/core to version 2.8.0 or later. The fix enforces limits consistent with the W3C Baggage specification at the propagator level:
- Maximum total baggage size: 8,192 bytes
- Maximum number of entries: 180
- Maximum per-entry size: 4,096 bytes
Headers that exceed these limits are truncated at the point the limit is reached.
Workarounds
Ensure header size limits are configured at the server or gateway level. The default Node.js HTTP header limit (16 KB) mitigates external attack vectors independently of this fix. For non-HTTP transports receiving baggage from untrusted sources, validate input size before passing it to the propagator.
References
- W3C Baggage Specification - Limits
- opentelemetry-java: GHSA-rcgg-9c38-7xpx
- opentelemetry-go: GHSA-mh2q-q3fh-2475
Credit
Reported by tonghuaroot.
Blast Radius
ecosystem impact- 2,360 npm packages depend on @opentelemetry/core (637 direct, 1,725 indirect)
Ecosystem-wide dependent count for version 2.8.0.
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
Denial of Service attacks render applications or systems unavailable by overwhelming resources or triggering failure conditions.
Remote code execution in n8n's workflow expression evaluation system allows an authenticated user with workflow creation
A vulnerability in the NuPoint Unified Messaging (NPM) component of Mitel MiCollab through 9.8 SP1 FP2 (9.8.1.201) could
FortiOS and FortiProxy contain an authentication bypass via the Node.js websocket module allowing unauthenticated remote
Denial of service against HTTP/2 server implementations allows remote unauthenticated attackers to exhaust server resour
Eval injection vulnerability in the internals.batch function in lib/batch.js in the bassmaster plugin before 1.5.2 for t
Flowise version 3.0.5 contains a remote code execution vulnerability in the CustomMCP node. The mcpServerConfig paramete
Node.js 8.5.0 before 8.6.0 allows remote attackers to access unintended files, because a change to ".." handling was inc
An issue was discovered in the node-serialize package 0.0.4 for Node.js. Rated critical severity (CVSS 9.8), this vulner
OpenSSL before 0.9.8za, 1.0.0 before 1.0.0m, and 1.0.1 before 1.0.1h does not properly restrict processing of ChangeCiph
Directory traversal vulnerability in the st module before 0.2.5 for Node.js allows remote attackers to read arbitrary fi
Multiple SQL injection vulnerabilities in the Manage Accounts page in the AccountManagement.asmx service in the Solarwin
A vulnerability in NuPoint Messenger (NPM) of Mitel MiCollab through 9.8.0.33 allows an unauthenticated attacker to cond
EUVD-2026-38321
GHSA-8988-4f7v-96qf
NVD
CVE.org
EPSS
Vulnrichment
VulDB
Exploit-DB