Skip to main content

OpenTelemetry Java CVE-2026-118259

| EUVDEUVD-2026-112368 MEDIUM
Inefficient Regular Expression Complexity (ReDoS) (CWE-1333)
2026-10-28 security-advisories@github.com GHSA-ccrj-gw8r-854m
5.3
CVSS 3.1 · Vendor: github
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Send HTTP request with crafted tracestate header
  2. Exploit
    Header reaches W3CTraceContextPropagator.extract()
  3. Execution
    Regex backtracks quadratically on whitespace run
  4. Impact
    Parsing thread CPU pinned, repeat to exhaust capacity

Vulnerability Assessment

Weakness
CWE
ASVS 5.0
V2 - Validation and Business Logic Regex complexity 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

Exploitation requires that attacker-controlled 'tracestate' request headers actually reach W3CTraceContextPropagator.extract() in an application running opentelemetry-api <=1.66.0 with W3C trace-context extraction of incoming requests enabled (the common OpenTelemetry propagation default). No authentication or user interaction is needed (PR:N/UI:N). The crafted header must contain a long run of spaces or tabs without a following comma to trigger quadratic regex backtracking. Limiting factors that reduce realistic impact: ingress/proxy header-size limits cap the per-request parsing cost (so attackers rely on repeated requests), and severity is amplified only when extraction runs on a shared request or event-loop thread that can starve other connections; deployments that strip or bound tracestate headers upstream, or that never extract remote trace context, are not exposed.

Impact

This is a medium-severity denial-of-service (CWE-1333, ReDoS) in OpenTelemetry Java's W3C trace-context propagator, and the signals are internally consistent rather than conflicting. The provided CVSS 3.1 vector (AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L, 5.3) correctly reflects a network-reachable, unauthenticated, low-complexity issue whose only impact is limited availability loss (C:N/I:N/A:L) - there is no confidentiality or integrity exposure and no scope change. The GHSA advisory and the fix commit confirm the mechanism: regex delimiter splitting (Pattern '[ \t]*,[ \t]*') backtracks quadratically on tracestate headers with long runs of spaces/tabs lacking a following comma. No EPSS score is present in the input and the CVE is NOT on CISA KEV, so there is no evidence of active exploitation - treat this as no public exploit identified at time of analysis, though the fix commit itself ships a reproducing @Timeout test that fills 100,000 whitespace characters and demonstrates the quadratic parsing cost, so the trigger condition is publicly documented. The vuln.today decision label is 'this_month', i.e. a genuine but non-emergency priority. Crucially, both the description and GHSA state real-world impact is bounded by ingress header-size limits, proxy configuration, and threading - header-size caps reduce but do not eliminate the per-request cost - so for most deployments this is a patch-this-cycle hardening item rather than a drop-everything emergency, with elevated concern only where tracestate extraction runs on a shared event-loop thread.

Exploit ScenarioDerived

An unauthenticated attacker sends HTTP requests to an instrumented service with a crafted tracestate header such as 'foo=bar' followed by a long run of spaces or tabs with no trailing comma. When W3CTraceContextPropagator.extract() parses the header, the delimiter regex backtracks quadratically and pins the parsing thread's CPU; repeating this across many requests - especially where extraction runs on a shared event-loop thread - degrades or denies service to other connections. No weaponized public exploit is identified, but the fix commit includes a timing test that demonstrates the quadratic behavior with 100,000 whitespace characters.

This Month Plan within 30 days. Why: MEDIUM severity (CVSS 4.0-6.9).
Patch available

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

Alert me

AnalysisAIv1 – Oct 28, 2026

Quadratic CPU consumption in OpenTelemetry Java's W3C tracestate parsing lets remote attackers stall request and event-loop threads by sending crafted trace headers. The vulnerable code is in W3CTraceContextPropagator.extract(), which splits the tracestate header with a regex that backtracks severely on long runs of spaces or tabs that are not followed by a comma; applications on opentelemetry-api 1.66.0 or earlier with W3C trace-context extraction of incoming requests enabled (the common propagation default) are affected. No authentication or user interaction is required (CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L, 5.3), but ingress header-size limits, proxy configuration and threading cap the per-request cost, so practical impact is degraded availability driven by repeated requests rather than a single-shot outage. The parser was rewritten in 1.67.0; no public exploit code was identified at time of analysis.

RemediationAI

Vendor-released patch: upgrade io.opentelemetry:opentelemetry-api to 1.67.0 or later, and align any dependent SDK, instrumentation or distribution artifacts on the same version so the fixed W3CTraceContextEncoding code is actually on the classpath. The changes are visible in PR https://github.com/open-telemetry/opentelemetry-java/pull/8914 and commits https://github.com/open-telemetry/opentelemetry-java/commit/ba4dfea91647d1ef596975db5d7197681df3c0f5 and https://github.com/open-telemetry/opentelemetry-java/commit/cc4f5f22aed0d69369941cde8029e73507cf438f, with release notes at https://github.com/open-telemetry/opentelemetry-java/releases/tag/v1.67.0. If upgrading is not immediately possible, the vendor's documented workaround is to reject or remove oversized tracestate headers before trace-context extraction, for example at the ingress or proxy layer; the trade-off is that this only reduces per-request parsing cost and does not eliminate the risk under repeated requests, and stripping tracestate also truncates cross-vendor distributed trace context that downstream services would otherwise continue. Tightening ingress header-size limits lowers the per-request worst-case cost but likewise does not remove the vulnerability, and disabling W3C propagation of incoming remote context avoids the parsing path entirely at the cost of losing trace linkage for those requests.

Affected VersionsENISA

opentelemetry-java < 1.67.0

Affected Packages

maven io.opentelemetry:opentelemetry-api fix: 1.67.0
euvd opentelemetry_java fix: 1.67.0

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 2 packages in maven, euvd

Checking this CVE against your own stacks and servers is part of the Basic plan and up.

Technical ContextAI · show details

The W3C Trace Context specification defines the tracestate header as a comma-separated list of key=value list-members with optional whitespace (spaces and tabs) permitted around each delimiter, and OpenTelemetry Java implements this in its propagator layer under io.opentelemetry.api.trace.propagation.internal.W3CTraceContextEncoding. The pre-1.67.0 implementation split the header using Pattern.compile("[ \t]*" + "," + "[ \t]*"), a pattern whose leading and trailing optional-whitespace quantifiers cause the engine to explore many possible split positions when a long run of spaces or tabs is not terminated by a comma, producing quadratic parse time as header length grows. That is the canonical CWE-1333 (Inefficient Regular Expression Complexity / ReDoS) shape: the input is attacker-supplied, the regex is applied directly to it, and worst-case cost scales with the square of the input size. The fix in PR #8914 and commits ba4dfea9 and cc4f5f22 removes the regex entirely, scanning backwards with String.lastIndexOf for the literal comma and trimming with an explicit isOptionalWhitespace(char) helper, while counting members against TRACESTATE_MAX_MEMBERS so an oversized list is rejected before materialization. The accompanying regression tests feed 'foo=bar' plus a 100,000-character padding of spaces and of tabs under a five-second timeout, confirming that the pathological runs previously cost measurable CPU time and that parsing now completes normally. Exposure is limited to code paths where remote carrier headers actually reach extraction; limiting factors noted by the vendor are ingress header-size limits, proxy configuration and the threading model, since a blocked calling thread only starves other connections when extraction runs on a shared request or event-loop thread.

Know when Opentelemetry 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) PRIMARY 5.3 MEDIUM
AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L
vuln.today AI 5.3 MEDIUM

Remote unauthenticated headers trigger it with no interaction (AV:N/AC:L/PR:N/UI:N); only bounded CPU/availability loss, no confidentiality or integrity impact and no scope change (A:L, C:N/I:N, S:U).

3.1 AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L
4.0 AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:L/SC:N/SI:N/SA:N

Primary rating from Vendor (github).

CVSS VectorVendor: github

Attack Vector
Network
Attack Complexity
Low
Privileges Required
None
User Interaction
None
Scope
Unchanged
Confidentiality
None
Integrity
None
Availability
Low

Lifecycle Timeline

2
Patch available
Oct 28, 2026 - 20:04 EUVD
CVE Published
Oct 28, 2026 - 19:17 cve.org
MEDIUM 5.3

DescriptionCVE.org

opentelemetry-java is the Java implementation of the OpenTelemetry API for recording telemetry, and SDK for managing telemetry recorded by the API. Prior to 1.67.0, W3CTraceContextPropagator.extract() uses regex delimiter processing that can exhibit quadratic backtracking while parsing tracestate headers containing long runs of spaces or tabs without a following comma. An unauthenticated attacker whose headers reach extraction can repeatedly block request or event-loop threads and cause excessive CPU consumption, with practical impact bounded by ingress header-size limits, proxy configuration, and threading. This issue is fixed in version 1.67.0.

Threat Intelligence Overview

Prevalence
High
widely adopted Java observability instrumentation library in microservices
Threat Intel
1
1 source
Social Media
1
Sightings
Data Quality
3 sources
Confidence: Low

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 MEDIUM
CISA KEV No
Public POC No
EPSS N/A
Patch available Yes
Active threat No
Deciding rule
MEDIUM severity (CVSS 4.0-6.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
None
System Exposure· derived
Open
Automatable· derived
Yes
Human Impact· derived
High

Priority Score

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

Attack Technique

Denial of Service attacks render applications or systems unavailable by overwhelming resources or triggering failure conditions.

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy