{"id":"GHSA-rcgg-9c38-7xpx","summary":"OpenTelemetry Java SDK has Unbounded Memory Allocation in W3C Baggage Propagation","details":"## Overview\n\nA vulnerability affects the baggage propagation implementation in\n`opentelemetry-api` and `opentelemetry-extension-trace-propagators`. Parsing oversized baggage\ncauses unbounded memory allocation and CPU consumption. Because baggage is automatically\nre-injected into every outgoing request, the effect can fan out to downstream services that\nnever received the original malicious request.\n\n## Technical Details\n\n- `W3CBaggagePropagator` did not enforce any limit on the total size or entry count of the\n  `baggage` header. The parser iterated character-by-character through the entire value\n  regardless of length.\n- `JaegerPropagator` and `OtTracePropagator` had the same gap in their respective baggage\n  extraction paths.\n- The W3C Baggage specification recommends a maximum of 8,192 bytes and 180 entries; none of\n  these limits were enforced.\n\n## Impact\n\nThe practical availability impact for most deployments is limited. Every major Java HTTP server\nenforces its own header size limit (Tomcat, Jetty, Netty, Vert.x, and gRPC-Java all default to\n8 KiB), constraining what an external attacker can deliver before the application is reached.\nThe risk is higher when transport-layer limits are absent — e.g., a compromised internal service\ncommunicating over a non-HTTP or custom transport.\n\n## Remediation\n\nUpdate to version 1.62.0 or later ([#8380](https://github.com/open-telemetry/opentelemetry-java/pull/8380)).\nThe fix enforces limits consistent with the W3C Baggage specification at the propagator level:\n\n- Maximum total baggage size: 8,192 bytes across all `baggage` header values\n- Maximum number of entries: 64\n\nHeaders that would exceed either limit are dropped at the point the limit is reached;\nalready-extracted valid entries are retained.\n\n## Workarounds\n\nEnsure HTTP header size limits are configured at the server or gateway level. Most Java HTTP\nservers enforce an 8 KiB header limit by default, which mitigates external attack vectors\nindependently of this fix.\n\n## References\n\n- [W3C Baggage Specification §Limits](https://www.w3.org/TR/baggage/#limits)","aliases":["CVE-2026-45292"],"modified":"2026-06-09T02:15:07.418297286Z","published":"2026-05-14T16:36:04Z","database_specific":{"github_reviewed_at":"2026-05-14T16:36:04Z","nvd_published_at":"2026-05-28T17:16:32Z","cwe_ids":["CWE-770"],"severity":"MODERATE","github_reviewed":true},"references":[{"type":"WEB","url":"https://github.com/open-telemetry/opentelemetry-java/security/advisories/GHSA-rcgg-9c38-7xpx"},{"type":"ADVISORY","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-45292"},{"type":"WEB","url":"https://github.com/open-telemetry/opentelemetry-java/pull/8380"},{"type":"WEB","url":"https://github.com/open-telemetry/opentelemetry-java/commit/03837d3c1763bc35464aea1078671e2ef2336a5f"},{"type":"PACKAGE","url":"https://github.com/open-telemetry/opentelemetry-java"},{"type":"WEB","url":"https://github.com/open-telemetry/opentelemetry-java/releases/tag/v1.62.0"}],"affected":[{"package":{"name":"io.opentelemetry:opentelemetry-api","ecosystem":"Maven","purl":"pkg:maven/io.opentelemetry/opentelemetry-api"},"ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"1.62.0"}]}],"versions":["0.10.0","0.11.0","0.12.0","0.13.0","0.13.1","0.14.0","0.14.1","0.15.0","0.16.0","0.17.0","0.17.1","0.2.0","0.2.1","0.2.4","0.3.0","0.4.0","0.4.1","0.5.0","0.6.0","0.7.0","0.7.1","0.8.0","0.9.0","0.9.1","1.0.0","1.0.1","1.1.0","1.10.0","1.10.0-rc.1","1.10.0-rc.2","1.10.1","1.11.0","1.12.0","1.13.0","1.14.0","1.15.0","1.16.0","1.17.0","1.18.0","1.19.0","1.2.0","1.20.0","1.20.1","1.21.0","1.22.0","1.23.0","1.23.1","1.24.0","1.25.0","1.26.0","1.27.0","1.28.0","1.29.0","1.3.0","1.30.0","1.30.1","1.31.0","1.32.0","1.33.0","1.34.0","1.34.1","1.35.0","1.36.0","1.37.0","1.38.0","1.39.0","1.4.0","1.4.1","1.40.0","1.41.0","1.42.0","1.42.1","1.43.0","1.44.0","1.44.1","1.45.0","1.46.0","1.47.0","1.48.0","1.49.0","1.5.0","1.50.0","1.51.0","1.52.0","1.53.0","1.54.0","1.54.1","1.55.0","1.56.0","1.57.0","1.58.0","1.59.0","1.6.0","1.60.0","1.60.1","1.61.0","1.7.0","1.7.1","1.9.0","1.9.1"],"database_specific":{"last_known_affected_version_range":"\u003c= 1.61.0","source":"https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2026/05/GHSA-rcgg-9c38-7xpx/GHSA-rcgg-9c38-7xpx.json"}},{"package":{"name":"io.opentelemetry:opentelemetry-extension-trace-propagators","ecosystem":"Maven","purl":"pkg:maven/io.opentelemetry/opentelemetry-extension-trace-propagators"},"ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"1.62.0"}]}],"versions":["0.10.0","0.11.0","0.12.0","0.13.0","0.13.1","0.14.0","0.14.1","0.15.0","0.16.0","0.17.0","0.17.1","0.6.0","0.7.0","0.7.1","0.8.0","0.9.1","1.0.0","1.0.1","1.1.0","1.10.0","1.10.0-rc.1","1.10.0-rc.2","1.10.1","1.11.0","1.12.0","1.13.0","1.14.0","1.15.0","1.16.0","1.17.0","1.18.0","1.19.0","1.2.0","1.20.0","1.20.1","1.21.0","1.22.0","1.23.0","1.23.1","1.24.0","1.25.0","1.26.0","1.27.0","1.28.0","1.29.0","1.3.0","1.30.0","1.30.1","1.31.0","1.32.0","1.33.0","1.34.0","1.34.1","1.35.0","1.36.0","1.37.0","1.38.0","1.39.0","1.4.0","1.4.1","1.40.0","1.41.0","1.42.0","1.42.1","1.43.0","1.44.0","1.44.1","1.45.0","1.46.0","1.47.0","1.48.0","1.49.0","1.5.0","1.50.0","1.51.0","1.52.0","1.53.0","1.54.0","1.54.1","1.55.0","1.56.0","1.57.0","1.58.0","1.59.0","1.6.0","1.60.0","1.60.1","1.61.0","1.7.0","1.7.1","1.9.0","1.9.1"],"database_specific":{"last_known_affected_version_range":"\u003c= 1.61.0","source":"https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2026/05/GHSA-rcgg-9c38-7xpx/GHSA-rcgg-9c38-7xpx.json"}}],"schema_version":"1.9.0","severity":[{"type":"CVSS_V3","score":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L"}]}