OpenTelemetry-Go is the Go implementation of OpenTelemetry. Prior to version 0.21.0, the go.opentelemetry.io/otel/sdk/log BatchingProcessor can enter a tight CPU loop when attacker-driven log emission fills its asynchronous export buffer while the exporter is backpressured. NewBatchingProcessor wraps the exporter with newBufferExporter(exporter, 1), and the poll loop calls queue.TryDequeue and bufferExporter.EnqueueExport before immediately signaling pollTrigger whenever the queue remains at or above batchSize. Because a failed nonblocking EnqueueExport leaves the queue length unchanged, the processor repeatedly retries without waiting for its ticker, exhausting CPU and degrading or denying service in the embedding process. This issue is fixed in version 0.21.0.
The product does not properly control the allocation and maintenance of a limited resource.
| Name | Vendor | Start Version | End Version |
|---|---|---|---|
| Red Hat Hardened Images | RedHat | opentelemetry-collector-main-0.161.0-0.1.hum1 | * |
| Red Hat Hardened Images | RedHat | opentelemetry-collector-contrib-main-0.161.0-0.1.hum1 | * |
| Red Hat Hardened Images | RedHat | opentelemetry-collector-k8s-main-0.161.0-0.1.hum1 | * |
| Red Hat Hardened Images | RedHat | caddy-main-2.11.4-0.4.hum1 | * |
| Red Hat Hardened Images | RedHat | distribution-main-3.1.1-0.2.hum1 | * |
| Red Hat Hardened Images | RedHat | helm3-main-3.22.0-0.2.hum1 | * |
| Red Hat Hardened Images | RedHat | helm4-main-4.3.0-0.2.hum1 | * |
| Red Hat Hardened Images | RedHat | grafana13-2-main-13.2.1-0.5.hum1 | * |
| Red Hat Hardened Images | RedHat | grafana12-4-main-12.4.10-0.6.hum1 | * |
| Red Hat Hardened Images | RedHat | opentofu1-12-main-1.12.6-0.3.hum1 | * |
| Red Hat Hardened Images | RedHat | jaeger-main-2.20.0-0.9.hum1 | * |
| Red Hat Hardened Images | RedHat | grafana13-1-main-13.1.6-0.2.hum1 | * |
Mitigation of resource exhaustion attacks requires that the target system either:
The first of these solutions is an issue in itself though, since it may allow attackers to prevent the use of the system by a particular valid user. If the attacker impersonates the valid user, they may be able to prevent the user from accessing the server in question.
The second solution is simply difficult to effectively institute – and even when properly done, it does not provide a full solution. It simply makes the attack require more resources on the part of the attacker.