HIGH 7.5

CVE-2026-59892: OpenTelemetry Jaeger Propagator Denial-of-Service via Malformed Headers

A vulnerability exists in OpenTelemetry's Jaeger propagator for JavaScript that allows an attacker to crash a Node.js application by sending specially crafted HTTP headers. When the propagator attempts to decode malformed percent-encoded values in trace context headers, it fails to catch the resulting error, causing the entire process to terminate. This is a denial-of-service issue that requires no authentication and can be triggered remotely by any network-connected client.

Source data · NVD / CISA · public domain

CVSS
3.1 · 7.5 HIGH · CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
Weaknesses (CWE)
CWE-248
Affected products
0 configuration(s)
Published / Modified
2026-07-08 / 2026-07-10

NVD description (verbatim)

OpenTelemetry JavaScript is the OpenTelemetry JavaScript client. Prior to 2.9.0, @opentelemetry/propagator-jaeger decodes incoming uber-trace-id and uberctx-* HTTP header values with decodeURIComponent() without handling decode errors, allowing an unauthenticated remote attacker to send a malformed percent-encoded value that throws an uncaught URIError and terminates a Node.js process using JaegerPropagator as the active propagator. This issue is fixed in version 2.9.0.

4 reference(s) · View on NVD →

SEC.co analysis · AI-assisted, reviewed against source

Technical summary

CVE-2026-59892 is a denial-of-service vulnerability in @opentelemetry/propagator-jaeger versions prior to 2.9.0. The JaegerPropagator parses incoming HTTP headers (uber-trace-id and uberctx-*) by calling decodeURIComponent() on untrusted values without wrapping the call in error handling. When a malformed percent-encoded string is provided—for example, an incomplete escape sequence—decodeURIComponent() throws a URIError exception that propagates uncaught, terminating the Node.js process. The vulnerability is classified as CWE-248 (Uncaught Exception).

Business impact

Applications using JaegerPropagator become susceptible to process crashes triggered by external HTTP requests. In production environments, this enables attackers to cause repeated service unavailability without authentication or credentials. Microservices architectures relying on OpenTelemetry tracing with Jaeger propagation are particularly exposed, as incoming trace headers from any source (reverse proxies, API gateways, client applications) become an attack surface. The impact scales with traffic volume and network exposure.

Affected systems

@opentelemetry/propagator-jaeger versions prior to 2.9.0 are affected. The vulnerability is triggered in any Node.js application that imports and activates JaegerPropagator as the active trace context propagator. No specific application versions are universally affected; vulnerability depends on the OpenTelemetry package version in use. Applications must be verified individually against their dependency tree.

Exploitability

Exploitability is high and requires minimal effort. An attacker needs only to send a single HTTP request with a malformed header value (such as uber-trace-id: %ZZ or similar invalid encoding) to a vulnerable endpoint. No authentication, special privileges, or user interaction is required. The attack is reliable—every crafted request to a service using an affected version may trigger a crash. Remote network access is the only prerequisite.

Remediation

Upgrade @opentelemetry/propagator-jaeger to version 2.9.0 or later, which includes error handling around decodeURIComponent() calls. This fix ensures that malformed headers are gracefully handled rather than terminating the process. Verify the update is applied across all Node.js services in your infrastructure that use this package. Testing should confirm that trace context propagation continues to function correctly after the upgrade.

Patch guidance

Update the @opentelemetry/propagator-jaeger package to 2.9.0 or later using your package manager (npm update @opentelemetry/propagator-jaeger or yarn upgrade @opentelemetry/propagator-jaeger). Review your lock file to confirm the version change. Redeploy affected Node.js services. No breaking changes are documented in the fix, so a straightforward version bump should resolve the vulnerability. Verify against the official OpenTelemetry release notes to confirm version 2.9.0 availability in your package registry.

Detection guidance

Monitor Node.js process restarts and logs for URIError exceptions related to decodeURIComponent() or trace header parsing. Inspect incoming HTTP traffic for malformed percent-encoded values in headers beginning with uber-trace-id or uberctx-. In production, correlate process crash events with unusual or suspicious external HTTP traffic patterns. Developers can reproduce the issue in test environments by manually crafting requests with invalid percent-encoding (e.g., curl -H 'uber-trace-id: %ZZ' http://target) and observing whether the process terminates.

Why prioritize this

This vulnerability merits high priority remediation despite not being in CISA's Known Exploited Vulnerabilities catalog. The CVSS score of 7.5 (HIGH) reflects the ease of exploitation and direct availability impact. The attack surface is broad—any inbound HTTP request can trigger it—and the damage is immediate and noticeable (service outage). Organizations running production microservices on Node.js with OpenTelemetry tracing should patch urgently to prevent operational disruption.

Risk score, explained

The CVSS 3.1 score of 7.5 reflects an attack vector of Network (AV:N), low attack complexity (AC:L), no privilege requirement (PR:N), no user interaction (UI:N), unchanged scope (S:U), and high availability impact (A:H) with no confidentiality or integrity impact (C:N/I:N). This accurately captures the ease of triggering a denial-of-service condition from any network-connected attacker against a publicly exposed service.

Frequently asked questions

Is this vulnerability exploitable if our services are behind a firewall or load balancer?

Yes. While a firewall may restrict who can reach your service, if the service is Internet-facing or accessible from any untrusted network segment (including internal networks), it remains vulnerable. Load balancers and reverse proxies will forward HTTP headers as-is, so an attacker with network access to the application layer can still craft malicious headers.

Do we need to stop using OpenTelemetry or Jaeger tracing entirely?

No. The vulnerability is specific to how trace headers are parsed in versions prior to 2.9.0. Upgrading to the patched version resolves the issue while maintaining full tracing functionality. OpenTelemetry and Jaeger are safe once updated.

What happens if we disable JaegerPropagator and use a different propagator?

Switching to an alternative propagator (such as W3C Trace Context) would eliminate exposure to this specific vulnerability. However, this may change your distributed tracing setup and require reconfiguration. Upgrading the package is typically the simpler and preferred path.

How can we verify that our services are running the patched version?

Check your package-lock.json or yarn.lock file for @opentelemetry/propagator-jaeger and confirm the version is 2.9.0 or higher. At runtime, you can inspect your Node.js process modules or use npm ls @opentelemetry/propagator-jaeger to confirm the installed version.

This analysis is based on publicly available vulnerability data as of the publication date. Organizations must verify patch availability and applicability within their specific environment and dependency configurations. No exploit code or weaponized proof-of-concept is provided; testing should be conducted only in controlled environments with permission from system owners. CVSS scores and severity ratings are provided as context only and should be assessed against your own risk tolerance and business criticality. Source: NVD (public-domain), retrieved 2026-08-17. Analysis generated by SEC.co (claude-haiku-4-5).