OpenTelemetry-Go Multi-Value Baggage Header DOS Vulnerability
A vulnerability in OpenTelemetry-Go allows attackers to amplify CPU and allocation usage by sending many `baggage:` header lines, leading to a denial-of-service condition due to excessive resource consumption.
CVE search metadata
CVE search record: CVE-2026-29181. KEV: no. Brief: OpenTelemetry-Go Multi-Value Baggage Header DOS Vulnerability. Brief link: https://feed.craftedsignal.io/briefs/2026-04-08-opentelemetry-dos/
Triage facts
Revision 2- Evidence
- Unknown
- Severity
- High
- Sources
- 2 public sources
- Freshness
- Revision 2Apr 8, 12:00 UTC
- Detection
- 2 rules
- Vulnerabilities
- 1 CVE
Revision history 1 entry · Revision 2
- Revision 2
Repaired a legacy canonical identity collision
Changed: slug
A remote denial-of-service vulnerability exists in OpenTelemetry-Go versions 1.36.0 through 1.40.0. The vulnerability stems from the extractMultiBaggage function parsing each baggage: header field-value independently and aggregating members across values. This allows an attacker to bypass the intended 8192-byte per-value parse limit by sending numerous baggage: header lines. Even when individual header values are within the limit, the aggregate parsing overhead can exhaust server resources. Exploitation involves crafting malicious HTTP requests containing a high number of baggage headers. This vulnerability poses a risk to services utilizing affected OpenTelemetry-Go versions by allowing attackers to trigger excessive CPU and memory allocation, resulting in increased latency or service unavailability. The issue was identified and reported in the OpenTelemetry-Go project, leading to the reported advisory.
Attack Chain
- The attacker crafts an HTTP request targeting a server running an application instrumented with the vulnerable OpenTelemetry-Go library (versions 1.36.0-1.40.0).
- The attacker includes multiple
baggage:headers in the HTTP request. Eachbaggage:header contains a value that is individually within the 8192-byte limit. - The HTTP request is received by the server and processed by the
net/httphandler. - The
propagation.HeaderCarrier.Values("baggage")function extracts allbaggageheader values from the request. - For each
baggageheader value, theextractMultiBaggagefunction callsbaggage.Parse, leading to independent parsing and member aggregation. - Due to the large number of
baggageheaders, the repeated parsing and member aggregation consumes excessive CPU and memory resources. - The server experiences increased latency or becomes unresponsive due to resource exhaustion.
- The application becomes unavailable, leading to a denial-of-service condition.
Impact
Successful exploitation of this vulnerability can lead to a denial-of-service condition, impacting the availability of applications using the affected OpenTelemetry-Go library versions (1.36.0 to 1.40.0). In a default net/http configuration (max header bytes 1MB), a single request with many baggage: header field-values can cause large per-request allocations and increased latency. The provided proof of concept demonstrates a significant increase in per-request allocation bytes (from 133,429 to 10,315,458) and p95 latency (from 0ms to 7ms) when using multiple baggage headers. This can severely degrade performance and potentially render the service unavailable to legitimate users.
Recommendation
- Upgrade to a patched version of the
go.opentelemetry.io/otel/baggageandgo.opentelemetry.io/otel/propagationmodules that addresses CVE-2026-29181. - Implement a mitigation strategy to limit the number of
baggageheaders processed per request. - Deploy the Sigma rule "Detect High Baggage Header Count" to identify requests with an excessive number of baggage headers.
- Monitor web server logs for requests with a high number of
baggageheaders and investigate potential abuse.
Detection coverage 2
Detect High Baggage Header Count
mediumDetects HTTP requests with a large number of baggage headers, potentially indicating a denial-of-service attempt.
Detect Large Allocations from Baggage Parsing
lowDetects processes that may be allocating excessive memory due to baggage parsing in OpenTelemetry.
Detection queries are available on the platform. Get full rules →