Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessSend HTTP request with crafted tracestate header
-
ExploitHeader reaches W3CTraceContextPropagator.extract()
-
ExecutionRegex backtracks quadratically on whitespace run
-
ImpactParsing 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. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – 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
Affected Packages
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
AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L
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).
Primary rating from Vendor (github).
CVSS VectorVendor: github
Lifecycle Timeline
2DescriptionCVE.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.
Blast Radius
ecosystem impact- 864 maven packages depend on io.opentelemetry:opentelemetry-api (218 direct, 646 indirect)
Ecosystem-wide dependent count for version 1.67.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.
More in Opentelemetry
View allThe OpenTelemetry Collector offers a vendor-agnostic implementation on how to receive, process and export telemetry data
OpenTelemetry-Go Contrib is a collection of third-party packages for OpenTelemetry-Go. Rated high severity (CVSS 7.5), t
TLS certificate verification in the OpenTelemetry Python OTLP/HTTP exporter is silently disabled when the OTEL_EXPORTER_
OpenTelemetry-Go Contrib is a collection of third-party packages for OpenTelemetry-Go. Rated high severity (CVSS 7.5), t
OpenTelemetry, also known as OTel for short, is a vendor-neutral open-source Observability framework for instrumenting,
Database account usernames are silently emitted into telemetry traces by the OpenTelemetry JavaScript Contrib database i
A missing permission check in Jenkins OpenTelemetry Plugin 3.1543.v8446b_92b_cd64 and earlier allows attackers with Over
EUVD-2026-112368
GHSA-ccrj-gw8r-854m
NVD
CVE.org
Exploit-DB