
Cloud Vulnerability DB
A community-led vulnerabilities database
CVE-2026-81872 is a Denial of Service vulnerability in OpenTelemetry-Go's BatchingProcessor component, classified as a CPU exhaustion busy-loop. It affects go.opentelemetry.io/otel/sdk/log versions prior to 0.21.0. The vulnerability was published on September 2, 2026 via a GitHub Security Advisory (GHSA-hjf4-fphr-2h65) and disclosed publicly on September 16, 2026. It carries a CVSS v3.1 base score of 5.3 (Medium) and a CVSS v4.0 base score of 6.3 (Medium) (GitHub Advisory, Red Hat CVE).
The root cause is a logic flaw (CWE-400: Uncontrolled Resource Consumption; CWE-834: Excessive Iteration; CWE-835: Loop with Unreachable Exit Condition) in the BatchingProcessor poll goroutine. NewBatchingProcessor wraps the exporter with newBufferExporter(exporter, 1), creating a capacity-one asynchronous export buffer. When the downstream exporter is backpressured, bufferExporter.EnqueueExport fails non-blocking (returning false), but TryDequeue leaves q.len unchanged because the write callback returned false. Since the queue length remains at or above batchSize, the poll loop immediately re-signals pollTrigger without waiting for the ticker interval, creating a tight CPU spin with no forward progress (GitHub Advisory, Fix PR #8620). The vulnerability was introduced in commit 4af9c20 and the relevant code paths are sdk/log/batch.go:116-165 and sdk/log/exporter.go:221-248.
Successful exploitation results in uncontrolled CPU consumption within the embedding Go process, degrading or completely denying service to legitimate operations. The impact is limited to availability (no confidentiality or integrity impact), scoped to the affected process rather than subsequent systems. Applications using sdk/log.BatchingProcessor that expose any network-reachable log emission path — or whose logging can be triggered indirectly by attacker-controlled requests — are at risk of CPU exhaustion causing service degradation or outage (GitHub Advisory).
A proof-of-concept exploit is publicly available in the GitHub Security Advisory as a downloadable validation-artifact.zip bundle containing runnable Go source code that demonstrates the busy-spin via CPU profiling (GitHub Advisory). The NVD SSVC assessment classifies exploitation as "poc" (proof-of-concept available) with no evidence of in-the-wild exploitation at time of disclosure. The EPSS score is 0.0, and the vulnerability is not listed in the CISA KEV catalog. No threat actor attribution has been reported. Exploitation requires no authentication and no user interaction, but does require the attacker to be able to trigger sustained high-volume log emission while the exporter is backpressured.
go.opentelemetry.io/otel/sdk/log versions prior to 0.21.0 with BatchingProcessor configured, where the application exposes a network-reachable endpoint that triggers log emission.BatchingProcessor queue at or above batchSize.EnqueueExport fails non-blocking, leaving q.len unchanged. The poll goroutine immediately re-signals pollTrigger without waiting for the ticker, entering a tight CPU spin.batchSize, sustaining the busy-loop. The hot functions (*BatchingProcessor).poll, (*queue).TryDequeue, and (*bufferExporter).EnqueueExport consume 100% of a CPU core, degrading or denying service to the embedding process (GitHub Advisory).(*BatchingProcessor).poll; CPU profiling (pprof) showing hot functions (*BatchingProcessor).poll, (*queue).TryDequeue, and (*bufferExporter).EnqueueExport in a tight loop.batchSize with no corresponding decrease in queue depth despite export attempts; elevated dropped log record counts.otel.Handle reporting repeated export failures.The fix is available in go.opentelemetry.io/otel/sdk/log version v0.21.0, which replaces the dual poll-goroutine/buffered-exporter architecture with a single worker goroutine that owns all dequeueing and exporter calls, eliminating the no-progress retry loop (Release v0.21.0, Fix Commit). Upgrading to v0.21.0 or later is the recommended remediation. If immediate patching is not possible, consider: (1) implementing rate limiting on log emission at the application or infrastructure level; (2) increasing exporter throughput capacity to reduce backpressure; or (3) temporarily disabling the BatchingProcessor and switching to SimpleProcessor if the application is under active attack.
The vulnerability was reported by pellared (a maintainer) and analyzed by MrAlias, both OpenTelemetry-Go contributors, indicating the issue was identified and addressed internally before broader exploitation (GitHub Advisory). The fix (PR #8620) received positive reception from the maintainer community, with benchmarks showing batch emission 12–51% faster and ForceFlush 97–99% faster in the redesigned implementation, suggesting the fix also delivered meaningful performance improvements beyond the security fix (Fix PR #8620). No significant broader media coverage or social media discussion has been identified at this time.
Fix availability across major Linux distributions and their releases.
devel
golang-opentelemetry-otel
jammy
golang-opentelemetry-otel
jammy (esm-apps)
golang-opentelemetry-otel
noble
golang-opentelemetry-otel
noble (esm-apps)
golang-opentelemetry-otel
resolute
golang-opentelemetry-otel
resolute (esm-apps)
golang-opentelemetry-otel
Source: This report was generated using AI
Free Vulnerability Assessment
Evaluate your cloud security practices across 9 security domains to benchmark your risk level and identify gaps in your defenses.
Get a personalized demo
"Best User Experience I have ever seen, provides full visibility to cloud workloads."
"Wiz provides a single pane of glass to see what is going on in our cloud environments."
"We know that if Wiz identifies something as critical, it actually is."