Get ahead
VMware offers training and certification to turbo-charge your progress.
Learn moreAn application using Micrometer Tracing with W3C baggage propagation in the Brave bridge is vulnerable to denial of service (DoS) due to unbounded object allocation when extracting incoming baggage headers.
Specifically, an application is vulnerable when all the following are true:
io.micrometer:micrometer-tracing-bridge-brave.BraveBaggageManager) is configured to handle baggage fields.baggage headers which it normally should not, see: https://www.w3.org/TR/trace-context/#security-considerations.The last two points are very important: normally this should not affect applications because they should not receive untrusted and unlimited input for baggage.
baggage headers.When extracting baggage from the W3C baggage header, incoming entries are parsed without enforcing limits on the number of entries or header size as mandated by the W3C Baggage specification. An attacker can send requests or messages with artificially inflated baggage headers containing many key-value pairs, causing unconditional BaggageField allocations per entry. This leads to garbage collection pressure, high CPU usage, and potential application crash via OutOfMemoryError.
Micrometer Tracing:
| Fix version | Availability |
|---|---|
| 1.7.0.1 | Enterprise Support Only |
| 1.7.1 | OSS |
| 1.6.6.1 | Enterprise Support Only |
| 1.6.7 | OSS |
| 1.5.13 | Enterprise Support Only |
| 1.4.14 | Enterprise Support Only |
If upgrading is not immediately possible, restrict or strip incoming baggage headers (such as at an API gateway, ingress proxy, or load balancer) to enforce size limits and filter untrusted baggage fields before they are processed by the application.
Preventing tracing information to reach the application from untrusted sources is a good idea even if you use a non-vulnerable version, see: https://www.w3.org/TR/trace-context/#security-considerations.
To report a security vulnerability for a project within the Spring portfolio, see the Security Policy