CVE-2026-50270
largeUnauthenticated DoS via Unbounded Baggage Header Parsing in Datadog dd-trace-java
Datadog's Java APM client dd-trace-java, in versions prior to 1.62.0, fails to enforce the configured baggage limits (DD_TRACE_BAGGAGE_MAX_ITEMS, default 64, and DD_TRACE_BAGGAGE_MAX_BYTES, default 8192) when extracting W3C baggage headers, even though those limits are applied during injection. A remote, unauthenticated attacker can exploit this by sending an HTTP request carrying a baggage header containing a very large number of comma-separated key-value pairs or a single oversized value, causing the tracer to allocate map entries while parsing the attacker-controlled header on every request. The result is unbounded CPU and memory consumption in any HTTP service where baggage propagation is enabled (the default for most affected tracers), leading to denial of service with no confidentiality or integrity impact (CVSS 3.1: 7.5, CWE-770). All users running dd-trace-java before 1.62.0 with baggage propagation enabled are affected. The issue is fixed in version 1.62.0; it is not listed in CISA's KEV and no public proof of concept or observed exploitation is known.
What to do: Upgrade dd-trace-java (and the bundled dd-java-agent) to version 1.62.0 or later, which enforces the baggage item and byte limits during extraction. If immediate upgrade is not possible, disable baggage propagation by removing 'baggage' from the propagation style (e.g., set DD_TRACE_PROPAGATION_STYLE to tracecontext,B3 without baggage) or enforce ingress controls (WAF or load balancer rules capping the size and item count of the baggage header). Monitor traced Java services for unexplained CPU and memory spikes correlated with inbound requests.
| Datadog dd-trace-java | all versions prior to 1.62.0 |
Order-of-magnitude estimate by the model from install counts, market share and public scan data it knows; verify before quoting.
dd-trace-java is a Datadog APM client for Java. Prior to 1.62.0, W3C baggage extraction does not enforce DD_TRACE_BAGGAGE_MAX_ITEMS, which defaults to 64, or DD_TRACE_BAGGAGE_MAX_BYTES, which defaults to 8192, although those limits apply during baggage injection. A remote unauthenticated attacker can send a baggage HTTP header containing many comma-separated key-value pairs or a single very large value. The extraction path allocates map entries while parsing the attacker-controlled header on every request, causing unbounded CPU and memory consumption in an HTTP service where the baggage propagation style is enabled, which is the default for most affected tracers. This can cause denial of service. This issue is fixed in version 1.62.0.
- Weakness
- CWE-770
- Vector
- CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
In the news0 stories
No ingested article mentions this CVE yet.