CVE-2026-45404: OpenTelemetry-Go Unsynchronized Baggage Map Can Panic Vulnerability
MODERATECVE-2026-45404 is a MODERATE unsynchronized baggage map can panic vulnerability (CWE-362: Concurrent Execution using Shared Resource with Improper Synchronization ('Race Condition')) affecting OpenTelemetry-Go libraries in the Go ecosystem. The issue involves unsynchronized baggage map can panic under concurrent access. Remediation is available by upgrading affected packages to version 1.45.0.
CVE-2026-45404 at a Glance
How to Fix CVE-2026-45404
To remediate this vulnerability, upgrade all affected OpenTelemetry-Go dependencies to a patched release. Both direct and transitive dependencies should be checked, as frameworks or security libraries may pull in vulnerable versions transitively.
Upgrade go.opentelemetry.io/otel/bridge/opentracing to 1.45.0
Run the following command in your project directory to verify that all resolved dependencies use the patched release:
inspect dependencies for go.opentelemetry.io/otel/bridge/opentracing
How to Check if You Are Affected
To determine whether your application is affected by CVE-2026-45404, inspect your project dependencies for OpenTelemetry-Go:
inspect dependencies for go.opentelemetry.io/otel/bridge/opentracing
Analyze the terminal output to locate any version of OpenTelemetry-Go in your dependency tree. If any resolved version matches the vulnerable ranges listed in the table below (for example, versions earlier than 1.45.0), your application is affected.
Note: Verify declared build manifests and deployed runtime container environments.
Technical Details
Vulnerability Mechanism & Technical Analysis
This vulnerability is classified under CWE-362: Concurrent Execution using Shared Resource with Improper Synchronization ('Race Condition'), where the product contains a concurrent code sequence that requires temporary, exclusive access to a shared resource, but a timing window exists in which the shared resource can be modified by another code sequence operating concurrently. In OpenTelemetry-Go, software state validation or input boundaries are circumvented during processing. Review the official source advisory statement below for specific affected components, classes, and reproduction details.
Source Advisory Statement
CVE-2026-45404 Affected OpenTelemetry-Go Versions
1 component(s)| Product / Package | Ecosystem | Affected Versions | Fixed Version |
|---|---|---|---|
|
go.opentelemetry.io/otel/bridge/opentracing
|
Go |
≥ 0.11.0
< 1.45.0
|
1.45.0
|
References
Frequently Asked Questions
What is CVE-2026-45404?
Which OpenTelemetry-Go versions are affected?
What version fixes CVE-2026-45404?
Is go.opentelemetry.io/otel/bridge/opentracing affected?
What CWE is associated with CVE-2026-45404?
How can I check Go dependencies for CVE-2026-45404?
Machine-readable OSV JSON
OSV v1.5 Schema
{
"schema_version" : "1.4.0",
"id" : "GHSA-42cj-99w8-cp2p",
"modified" : "2026-08-20T17:26:14Z",
"published" : "2026-08-20T17:26:14Z",
"aliases" : [ "CVE-2026-45404" ],
"summary" : "OpenTelemetry-Go: Unsynchronized baggage map can panic under concurrent access",
"details" : "### Summary\n\n`go.opentelemetry.io/otel/bridge/opentracing` introduced an unsynchronized `extraBaggageItems` map on `bridgeSpan`. One goroutine can write this map through `Span.SetBaggageItem` while another goroutine reads and iterates it during correlation baggage propagation, which can trigger Go's fatal concurrent map access panic and crash the process. The finding is low severity because exploitation requires a specific OpenTracing bridge configuration and concurrent use of the same span.\n\nIntroduced in commit: 8cddf30\n\n### Details\n\n`bridge/opentracing/bridge.go:80-85` adds `extraBaggageItems map[string]string` to `bridgeSpan` without a mutex or other synchronization primitive. `bridge/opentracing/bridge.go:219-234` shows `SetBaggageItem` calling `updateOtelContext`, which lazily creates the map and writes `s.extraBaggageItems[restrictedKey] = value` without locking. `bridge/opentracing/bridge.go:359-377` shows `correlationGetHook` reading `bSpan.extraBaggageItems`, checking `len(items)`, and iterating `for k, v := range items` without locking. The finding evidence also identifies `api/correlation/context.go:160-165` as the path where `correlation.MapFromContext` invokes the get hook, allowing a read path to run concurrently with baggage writes.\n\nBecause Go maps are not safe for concurrent read/write access, concurrent `SetBaggageItem` and `correlation.MapFromContext` calls on the same hooked `bridgeSpan` can terminate the process with a runtime error such as `fatal error: concurrent map read and map write` or `fatal error: concurrent map iteration and map write`.\n\n### PoC\n\n[validation-artifact.zip](https://github.com/user-attachments/files/27494614/validation-artifact.zip)\n\n\nThe validation artifact contains a PoC at `validation-artifact.tar:validation_poc_concurrent_map.go` and supporting notes at `validation-artifact.tar:validation_poc_README.txt`.\n\nUse a checkout of `pellared/opentelemetry-go` at commit `8cddf30` with Go module downloads enabled. The local validation environment could not complete the run because `GOPROXY=off` blocked dependency resolution; that blocked output is saved in `validation-artifact.tar:validation_poc_run.log`.\n\nCommands:\n\n```sh\ncd /path/to/opentelemetry-go\ngit checkout 8cddf30\ntar -xOf /path/to/finding-directory/validation-artifact.tar validation_poc_concurrent_map.go > ./validation_poc_concurrent_map.go\nGOPROXY=https://proxy.golang.org,direct go run ./validation_poc_concurrent_map.go\n```\n\nThe PoC starts a `BridgeTracer`, creates a span, installs correlation hooks with `tracer.NewHookedContext(ctx)`, initializes baggage once, then runs one goroutine repeatedly calling `span.SetBaggageItem(...)` while another repeatedly calls `otelcorrelation.MapFromContext(ctx)`. A vulnerable build is expected to terminate with a Go runtime concurrent map access error, for example:\n\n```text\nfatal error: concurrent map read and map write\n```\n\nor:\n\n```text\nfatal error: concurrent map iteration and map write\n```\n\n\n### Impact\n\nThis is a race condition / improper synchronization vulnerability in a shared Go map. Applications using the OpenTelemetry OpenTracing bridge with correlation hooks can crash if the same `bridgeSpan` is accessed concurrently, with one execution path setting baggage and another propagating correlation baggage. The practical impact is denial of service for the affected application process; exposure depends on whether application request handling or internal concurrency can trigger those operations on the same span.",
"severity" : [ {
"type" : "CVSS_V4",
"score" : "CVSS:4.0/AV:L/AC:L/AT:P/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N"
} ],
"affected" : [ {
"package" : {
"ecosystem" : "Go",
"name" : "go.opentelemetry.io/otel/bridge/opentracing"
},
"ranges" : [ {
"type" : "ECOSYSTEM",
"events" : [ {
"introduced" : "0.11.0"
}, {
"fixed" : "1.45.0"
} ]
} ]
} ],
"references" : [ {
"type" : "WEB",
"url" : "https://github.com/open-telemetry/opentelemetry-go/security/advisories/GHSA-42cj-99w8-cp2p"
}, {
"type" : "WEB",
"url" : "https://github.com/open-telemetry/opentelemetry-go/pull/8693"
}, {
"type" : "WEB",
"url" : "https://github.com/open-telemetry/opentelemetry-go/commit/93a693edeed0e07ce5ebd1dfe67af42d1e2055d8"
}, {
"type" : "PACKAGE",
"url" : "https://github.com/open-telemetry/opentelemetry-go"
}, {
"type" : "WEB",
"url" : "https://github.com/open-telemetry/opentelemetry-go/releases/tag/v1.45.0"
} ],
"database_specific" : {
"cwe_ids" : [ "CWE-362", "CWE-667" ],
"severity" : "MODERATE",
"github_reviewed" : true,
"github_reviewed_at" : "2026-08-20T17:26:14Z",
"nvd_published_at" : null
}
}