ZeroHour

CVE-2026-50276

large

Unauthenticated DoS via Baggage Header Parsing in Datadog dd-trace-rb

CVSS 3.1
7.5 high
EPSS
Published
()
Modified
AI analysis

Datadog's dd-trace-rb Ruby tracing library fails to enforce the configured item and byte limits (DD_TRACE_BAGGAGE_MAX_ITEMS, default 64, and DD_TRACE_BAGGAGE_MAX_BYTES, default 8192) when parsing incoming W3C baggage HTTP headers, even though those limits are applied during injection. A remote, unauthenticated attacker can send a single HTTP request carrying a baggage header with many comma-separated key-value pairs or one very large value, causing the extraction path to allocate unbounded CPU and memory on every request. Successful exploitation exhausts resources and causes denial of service of the Ruby HTTP service; there is no impact on confidentiality or integrity. Any application running dd-trace-rb prior to 2.32.0 with baggage propagation enabled (the default for most affected tracers) is at risk. The issue is fixed in version 2.32.0, and there is no known public proof of concept or observed exploitation to date.

What to do: Upgrade dd-trace-rb to version 2.32.0 or later as soon as possible. If immediate upgrade is not feasible, disable W3C baggage extraction by setting DD_TRACE_PROPAGATION_STYLE (or the equivalent propagation configuration) to exclude baggage (e.g., tracecontext only), or strip/drop baggage headers at the edge (load balancer, reverse proxy, or WAF). Monitor Ruby application processes for abnormal memory and CPU growth per request, which would indicate header-based resource exhaustion attempts.

Affected
Datadog dd-trace-rball versions prior to 2.32.0
Estimated exposure
largetens of thousands of Ruby services (est. 10k–100k deployments); internet-exposed count unknown — Datadog serves tens of thousands of customer organizations and dd-trace-rb is among the most-downloaded Ruby APM gems (tens of millions of cumulative RubyGems downloads), implying tens of thousands of live Ruby services, though no public…

Order-of-magnitude estimate by the model from install counts, market share and public scan data it knows; verify before quoting.

Description

dd-trace-rb is Datadog's client library for Ruby. Prior to 2.32.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 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 2.32.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 news

No ingested article mentions this CVE yet.