Register for the AI for Security Summit: Join Figma, Perplexity & Wiz

CVE-2026-81872
Grafana vulnerability analysis and mitigation

Overview

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).

Technical details

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.

Impact

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).

Exploitability

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.

Exploitation steps

  1. Identify target: Locate a Go application using 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.
  2. Induce exporter backpressure: Ensure the downstream OpenTelemetry collector or exporter is slow, blocked, or unavailable (e.g., by saturating the collector, introducing network latency, or exploiting resource exhaustion on the collector side).
  3. Flood log emission: Send sustained high-volume requests to the target application to trigger rapid log record generation — the PoC emits 1,000+ records in rapid succession to fill the BatchingProcessor queue at or above batchSize.
  4. Trigger busy-loop: With the export buffer full and the exporter backpressured, 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.
  5. Sustain CPU exhaustion: Maintain the log flood to keep the queue at or above 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).

Indicators of compromise

  • Process: Sustained near-100% CPU utilization on a single core by the Go application process, particularly the goroutine running (*BatchingProcessor).poll; CPU profiling (pprof) showing hot functions (*BatchingProcessor).poll, (*queue).TryDequeue, and (*bufferExporter).EnqueueExport in a tight loop.
  • Application Metrics: OpenTelemetry SDK internal metrics showing the log record queue consistently at or above batchSize with no corresponding decrease in queue depth despite export attempts; elevated dropped log record counts.
  • Network: Unusually high volume of inbound requests to application endpoints that trigger logging, potentially from a single source IP or a distributed set of IPs; absence of outbound telemetry traffic to the configured collector despite high application load.
  • Logs: Application-level performance degradation or timeout errors coinciding with high CPU usage; OTel SDK error logs from otel.Handle reporting repeated export failures.

Mitigation and workarounds

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.

Community reactions

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.

Additional resources

Linux Distribution fix status

Fix availability across major Linux distributions and their releases.

Ubuntu

Unknown

devel

golang-opentelemetry-otel

Unknown

jammy

golang-opentelemetry-otel

Unknown

jammy (esm-apps)

golang-opentelemetry-otel

Unknown

noble

golang-opentelemetry-otel

Unknown

noble (esm-apps)

golang-opentelemetry-otel

Unknown

resolute

golang-opentelemetry-otel

Unknown

resolute (esm-apps)

golang-opentelemetry-otel

Unknown

RHEL / CentOS

Affected

OpenShift

openshift4/oc-mirror-plugin-rhel9

Affected

RHEL 9

opentelemetry-collector.src

Affected

RHEL 10

opentelemetry-collector.src

Affected

SourceThis report was generated using AI

Related Grafana vulnerabilities:

CVE ID

Severity

Score

Technologies

Component name

CISA KEV exploit

Has fix

Published date

CVE-2026-15815HIGH8.8
  • Grafana logoGrafana
  • cpe:2.3:a:grafana:grafana
NoYesSep 17, 2026
CVE-2026-92596HIGH8.7
  • Grafana logoGrafana
  • node-nodemailer
NoYesSep 16, 2026
CVE-2026-76154HIGH7.3
  • Grafana logoGrafana
  • cpe:2.3:a:grafana:grafana
NoNoSep 17, 2026
CVE-2026-81872MEDIUM6.3
  • Grafana logoGrafana
  • opentelemetry-collector.src
NoNoSep 16, 2026
CVE-2026-81871MEDIUM6.3
  • Grafana logoGrafana
  • amazon-cloudwatch-agent
NoYesSep 16, 2026

Free Vulnerability Assessment

Benchmark your Cloud Security Posture

Evaluate your cloud security practices across 9 security domains to benchmark your risk level and identify gaps in your defenses.

Request assessment

Get a personalized demo

Ready to see Wiz in action?

"Best User Experience I have ever seen, provides full visibility to cloud workloads."
David EstlickCISO
"Wiz provides a single pane of glass to see what is going on in our cloud environments."
Adam FletcherChief Security Officer
"We know that if Wiz identifies something as critical, it actually is."
Greg PoniatowskiHead of Threat and Vulnerability Management