CVE-2026-54285: OpenTelemetry JavaScript Baggage Parser Memory Exhaustion Vulnerability
OpenTelemetry's JavaScript implementation has a memory exhaustion vulnerability in its baggage header parsing logic. When the library processes inbound HTTP headers containing baggage data, it fails to validate the size of that data. An attacker can send abnormally large or numerous baggage entries, causing the application to allocate memory without limits, potentially degrading performance or crashing the service. The vulnerability exists only in the inbound parsing path; outbound validation was already in place. Version 2.8.0 and later address this issue.
Source data · NVD / CISA · public domain
- CVSS
- 3.1 · 5.3 MEDIUM · CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L
- Weaknesses (CWE)
- CWE-770
- Affected products
- 0 configuration(s)
- Published / Modified
- 2026-06-22 / 2026-06-23
NVD description (verbatim)
opentelemetry-js is the OpenTelemetry JavaScript Client. Prior to 2.8.0, 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. This vulnerability is fixed in 2.8.0.
1 reference(s) · View on NVD →
SEC.co analysis · AI-assisted, reviewed against source
Technical summary
The W3CBaggagePropagator.extract() method in @opentelemetry/core does not enforce size constraints during the parsing of inbound W3C Baggage headers. While the W3C Baggage specification recommends a maximum payload of 8,192 bytes and 180 entries—limits that are already enforced during the inject() (outbound) phase—the extract() (inbound) phase accepts headers of any size. This asymmetry allows memory allocation to scale linearly with malicious header size, creating a denial-of-service condition. The vulnerability is rooted in CWE-770 (Allocation of Resources Without Limits or Throttling).
Business impact
This vulnerability can degrade or disable observability infrastructure that relies on OpenTelemetry. If your application uses OpenTelemetry for distributed tracing, metrics, or logging, an attacker sending crafted baggage headers could exhaust server memory, triggering application restarts, latency spikes, or complete service unavailability. The impact is most severe in high-traffic environments or in microservices architectures where many services parse the same malicious header. Organizations relying on OpenTelemetry for production observability should treat this as a stability and availability risk.
Affected systems
This vulnerability affects applications using the OpenTelemetry JavaScript client library (@opentelemetry/core) in versions prior to 2.8.0. Any Node.js or browser-based application that imports and uses the W3C Baggage propagator to process inbound HTTP headers is at risk. Microservices that receive traffic from untrusted or internet-facing sources are particularly vulnerable, as attackers can inject malicious baggage headers in HTTP requests.
Exploitability
The vulnerability is straightforward to exploit: an attacker simply needs to send an HTTP request with an oversized or high-cardinality W3C Baggage header to a target application running a vulnerable version of OpenTelemetry. No authentication, user interaction, or complex setup is required. The attack is network-accessible and requires no special privileges. However, the practical impact depends on the attacker's ability to send sustained traffic and the victim's memory capacity. A single malicious request may cause a temporary spike; repeated requests could force service degradation or failure.
Remediation
Upgrade @opentelemetry/core to version 2.8.0 or later. This version enforces both inbound and outbound size limits on baggage headers, aligning with W3C recommendations. After patching, validate that your application correctly initializes and uses the W3C Baggage propagator. Organizations unable to upgrade immediately should consider network-level mitigations such as WAF rules to reject oversized baggage headers or rate-limiting on inbound requests.
Patch guidance
Update @opentelemetry/core to 2.8.0 or later through your dependency management tool (npm, yarn, or pnpm). Review your package.json and package-lock.json to identify if @opentelemetry/core is a direct or transitive dependency. After upgrading, run your test suite to ensure compatibility with your observability configuration. If you use a monorepo or lock file, verify that all workspaces receive the patched version. Confirm the fix by checking that baggage header parsing now respects the 8,192-byte and 180-entry limits on both inbound and outbound paths.
Detection guidance
Monitor application logs and memory usage for anomalous patterns: sudden memory spikes without corresponding traffic increases, frequent garbage collection cycles, or out-of-memory exceptions correlated with specific HTTP requests. Network inspection tools can flag HTTP headers exceeding expected baggage sizes. Enable verbose logging in OpenTelemetry if available to capture header parsing behavior. If you run distributed tracing infrastructure, look for requests with unusually large baggage payloads or cardinality. Alert on memory pressure in services that parse baggage headers, especially during low-traffic periods when spikes are more visible.
Why prioritize this
While the CVSS score of 5.3 (Medium) reflects a denial-of-service vector with no confidentiality or integrity impact, the practical priority depends on your architecture. If your services are internet-facing or receive traffic from untrusted sources, the ease of exploitation and potential for cascading failures in microservices environments warrant near-term patching. If your OpenTelemetry infrastructure is internal-only, the risk is lower but should still be remediated during a planned maintenance window.
Risk score, explained
The CVSS 3.1 score of 5.3 reflects a network-accessible vulnerability with low attack complexity, no privilege requirement, and no user interaction—factors that elevate exploitability. However, the impact is limited to availability (memory exhaustion), not confidentiality or integrity. The score does not capture the context-dependent risk: organizations with resilient auto-scaling or memory limits may see lower real-world impact than those with fixed infrastructure. The score serves as a baseline; contextualize it against your deployment topology and traffic sources.
Frequently asked questions
Does this vulnerability affect the OpenTelemetry Collector or only the JavaScript SDK?
This vulnerability is specific to @opentelemetry/core, the JavaScript SDK. The OpenTelemetry Collector and SDKs for other languages (Python, Go, Java) have separate codebases and are not directly affected. However, if you proxy requests through a JavaScript-based component that parses baggage headers, or if your Collector receives traffic from a vulnerable application, you should verify the security posture of all components in your telemetry pipeline.
If we already enforce size limits on inbound HTTP headers at the network level, are we protected?
Partial protection exists if your network layer (WAF, reverse proxy, or load balancer) rejects HTTP headers larger than 8,192 bytes. However, the OpenTelemetry fix also enforces a 180-entry limit, which a network rule might not catch. Additionally, defense-in-depth means patching the library directly is still recommended. Do not rely solely on network-level controls; upgrade the library to benefit from native enforcement.
What is the relationship between the inbound extract() and outbound inject() paths?
The extract() method parses baggage headers received from upstream services; the inject() method adds baggage to outbound requests to downstream services. The library was already limiting the size and cardinality of baggage during inject(), but a vulnerability existed in extract(). An attacker targeting a service that uses extract() could send an oversized header, and the service would attempt to parse it without limits. Version 2.8.0 now enforces size limits symmetrically on both paths.
Are there workarounds if we cannot upgrade immediately?
Temporary mitigations include disabling W3C Baggage propagation in OpenTelemetry configuration if it is not critical to your observability, reducing the maximum HTTP header size accepted by your application server, or implementing a reverse proxy rule to strip or truncate baggage headers. These are not ideal long-term solutions and should be paired with a plan to upgrade. Evaluate whether you can prioritize this patch in your next release cycle.
This analysis is provided for informational purposes and reflects the vulnerability details as of the published date. CVSS scores and severity ratings are subject to interpretation based on your specific environment and risk tolerance. No exploit code or weaponized proof-of-concept is provided. Verify patch availability and compatibility with your OpenTelemetry deployment before applying updates. For vendor-specific guidance, consult the official OpenTelemetry security advisory and release notes. This information does not constitute a guarantee of security and should be combined with your organization's broader vulnerability management and incident response processes. Source: NVD (public-domain), retrieved 2026-07-28. Analysis generated by SEC.co (claude-haiku-4-5).
Weaknesses (CWE)
Related vulnerabilities
- CVE-2024-54178MEDIUMIBM Db2 Cloud Pak for Data Denial of Service via Resource Allocation Flaw
- CVE-2026-10533MEDIUMOpenShift ResourceQuota Bypass Leads to API Server DoS
- CVE-2026-10740MEDIUMs2n-quic Memory Allocation DoS – QUIC CRYPTO Frame Reassembler
- CVE-2026-1500MEDIUMGitLab Authenticated Denial of Service via Malicious File Upload
- CVE-2026-24720MEDIUMQNAP File Station 6 Resource Exhaustion Vulnerability
- CVE-2026-28237MEDIUMAMD uProf Resource Exhaustion Vulnerability – Patch Guidance
- CVE-2026-36499MEDIUMOpen vSwitch Thread Allocation DoS Vulnerability
- CVE-2026-39904MEDIUMGophish Zip Bomb Denial of Service via Malicious Email Template