Skip to main content

OpenTelemetry-Go EUVDEUVD-2026-81261

| CVE-2026-81872 MEDIUM
Uncontrolled Resource Consumption (CWE-400)
2026-09-16 GitHub_M GHSA-hjf4-fphr-2h65
6.3
CVSS 4.0 · Vendor: GitHub_M
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Reach service that emits attacker-influenced logs
  2. Delivery
    Drive high log-emission rate
  3. Exploit
    Fill async export buffer under exporter backpressure
  4. Execution
    Poll loop busy-spins on failed EnqueueExport
  5. Impact
    CPU exhaustion degrades or denies embedding process

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A06:2025 - Insecure Design
ASVS 5.0
V2 - Validation and Business Logic Resource consumption limits
MITRE ATT&CK

1 technique across 1 tactic: Impact

The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up.

Exploitation Conditions

Applies only to applications using go.opentelemetry.io/otel/sdk/log with the BatchProcessor (BatchingProcessor via NewBatchingProcessor) prior to version 0.21.0. Exploitation requires two concurrent conditions: (1) the attacker can drive sustained, high-volume log emission through the processor, and (2) the wrapped exporter is backpressured/slow so that non-blocking EnqueueExport calls fail while the queue remains at or above batchSize - only then does the poll loop retry without waiting for its ticker and busy-spin. The SimpleProcessor is not affected, and a fast/healthy exporter avoids the tight loop. No authentication is required (PR:N) and no user interaction is needed, but the AT:P attack requirement (dependence on exporter backpressure state) is the primary limiting factor.

Impact

This is a moderate, availability-only issue - a CPU busy-spin denial-of-service (CWE-400) in the go.opentelemetry.io/otel/sdk/log BatchProcessor, not a code-execution or data-exposure flaw. The vendor CVSS 4.0 vector (6.3, AV:N/AC:L/AT:P/PR:N/UI:N with only VA:L) is internally consistent with the description: network-reachable and unauthenticated, but the single impact is partial availability degradation, and AT:P correctly captures that exploitation is not unconditional - it requires the exporter to be in a backpressured state so that non-blocking EnqueueExport keeps failing while the queue stays at/above batchSize. There is no EPSS score, no CISA KEV listing, and no public exploit in the provided data, so this should be treated as no public exploit identified at time of analysis rather than an active threat. The realistic priority is low-to-moderate: it is a reliability/resilience bug that an attacker can only trigger indirectly by driving log volume against an already-slow/backpressured exporter, and the worst case is CPU exhaustion degrading the embedding process rather than a clean remote kill. Note the vendor scored availability as VA:L despite the description saying service can be 'denied'; the AT:P requirement and the drop-oldest ring-buffer 'release valve' likely justify the partial rather than total rating.

Exploit ScenarioDerived

An attacker who can influence the rate of log records emitted by a Go service using the affected sdk/log BatchProcessor floods it with log activity while the downstream exporter is slow or backpressured (e.g., a stalled collector). Failed non-blocking EnqueueExport calls leave the queue length unchanged, so the poll loop re-signals pollTrigger immediately without waiting for its ticker, pinning a CPU core and degrading or denying the host process. No public proof-of-concept is referenced; exploitation is conditional on exporter backpressure.

This Month Plan within 30 days. Why: MEDIUM severity (CVSS 4.0-6.9).
Patch available 0.3% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – Sep 16, 2026

CPU exhaustion in the OpenTelemetry-Go sdk/log BatchProcessor (BatchingProcessor built via NewBatchingProcessor) before version 0.21.0 lets attacker-driven, high-volume log emission pin a process's CPU when the wrapped log exporter is simultaneously slow or backpressured. The poll loop repeatedly retries a non-blocking queue dequeue and a failed non-blocking EnqueueExport without waiting on its ticker, because the failed enqueue leaves the queue length unchanged at or above batchSize, producing a tight busy-spin that degrades or denies service in the embedding application. This is an availability-only flaw (CWE-400) with no confidentiality or integrity impact, no public exploit code identified at time of analysis, and no confirmed active exploitation (not in CISA KEV); the assessed vector (CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:L) is unauthenticated but requires the attacker to sustain log volume while the exporter is backpressured, which significantly narrows real-world exploitability.

RemediationAI

Vendor-released patch: upgrade go.opentelemetry.io/otel/sdk/log to v0.21.0 or later (release tag sdk/log/v0.21.0, fix commit ba71b09e6ed272e93a669aeaec1e98b1df4cc582, advisory https://github.com/open-telemetry/opentelemetry-go/security/advisories/GHSA-hjf4-fphr-2h65); the upgrade also deprecates WithExportBufferSize, which no longer has any effect after the fix, so remove or ignore that option. If an immediate upgrade is not possible, switch the affected pipeline to the SimpleProcessor instead of the BatchProcessor, accepting the trade-off of synchronous export that blocks OnEmit and reduces log throughput, or otherwise place an explicit rate limiter or sampling/drop stage in front of OnEmit or in the application's logging handler so attacker-driven log volume cannot reach the processor unabated. Because the spin only manifests when the wrapped exporter is slow or backpressured, hardening the exporter path (shorter exporter timeouts, adequate export worker capacity, unavailable/blocking backends removed from the hot path) removes the triggering condition but is a compensating control rather than a fix and may cause record loss when the backend is unavailable. Operators should also monitor for anomalous CPU saturation correlated with log emission bursts as a detection signal. No vendor-released patch is called out for any other module, and the underlying fix is confirmed by PR 8620.

Affected VersionsENISA

opentelemetry-go < 0.21.0

Affected Packages

go go.opentelemetry.io/otel/sdk/log fix: 0.21.0
euvd opentelemetry_go fix: 0.21.0

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 2 packages in go, euvd

Checking this CVE against your own stacks and servers is part of the Basic plan and up.

Technical ContextAI · show details

The affected component is the Go OpenTelemetry logs SDK at module path go.opentelemetry.io/otel/sdk/log, distributed within the open-telemetry/opentelemetry-go project (CPE cpe:2.3:a:open-telemetry:opentelemetry-go:*:*:*:*:*:*:*:*). In the vulnerable design, BatchProcessor.batch wraps the caller-supplied Exporter with newBufferExporter(exporter, 1), creating a one-slot asynchronous export buffer so that a dedicated poll goroutine can enqueue a batch and return immediately rather than waiting for exporter I/O. The poll goroutine woke on either a ticker interval or a pollTrigger signal sent by OnEmit whenever the ring-buffer queue contained at least one complete batch; the queue itself was a drop-oldest ring buffer acting as the memory release valve. The root cause is an uncontrolled resource consumption pattern (CWE-400): when the buffer exporter is backpressured, its non-blocking EnqueueExport returns an error and the queue length is unchanged, so the condition 'queue length >= batchSize' remains true and the loop re-signals pollTrigger and retries in a spin that never blocks on the ticker. The upstream fix (PR 8620, commit ba71b09e6ed272e93a669aeaec1e98b1df4cc582) removes the separate export-request buffer entirely, deprecates WithExportBufferSize (kept only for source compatibility, no longer affecting behavior), and serializes dequeue, scheduled export, ForceFlush, and Shutdown onto a single worker goroutine so that exporter backpressure blocks that worker instead of causing repeated polling. The change also surfaces drain errors from ForceFlush/Shutdown and caps the default maximum export batch size at or below the configured maximum queue size. Only BatchProcessor/BatchingProcessor is affected; the SimpleProcessor performs synchronous exports and does not exhibit this spin.

Know when Go gets its next vulnerability

  • Watch products and get an email when something new is published
  • Check this CVE against your own stack and servers
  • Exploit and PoC references, threat intelligence from 22 sources

No credit card · 7-day full trial

Severity by source

Vendor (GitHub_M) PRIMARY 6.3 MEDIUM
CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:N/VI:N/VA:L/SC:N/SI:N/SA:N
vuln.today AI 3.7 LOW

Unauthenticated and network-influenced (PR:N/AV:N), but AC:H reflects the required exporter-backpressure condition; impact is availability-only and partial (A:L), no confidentiality or integrity effect.

3.1 AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:L
4.0 AV:N/AC:L/AT:P/PR:N/UI:N/VC:N/VI:N/VA:L/SC:N/SI:N/SA:N
SUSE 5.3 MEDIUM
AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L
Red Hat 5.3 MEDIUM

Primary rating from Vendor (GitHub_M).

CVSS VectorVendor: GitHub_M

Attack Vector
Network
Attack Complexity
Low
Attack Requirements
Present
Privileges Required
None
User Interaction
None
Vulnerable system: Confidentiality
None
Vulnerable system: Integrity
None
Vulnerable system: Availability
Low
Subsequent system: Confidentiality
None
Subsequent system: Integrity
None
Subsequent system: Availability
None

Lifecycle Timeline

1
Patch available
Sep 16, 2026 - 22:04 EUVD

DescriptionCVE.org

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.

Threat Intelligence Overview

EPSS Score
0.3%
Top 77% exploitable
Prevalence
Medium
OpenTelemetry-Go is widely used in Go, but the affected sdk/log module is a pre-1.0 beta component
Threat Intel
1
1 sources
Exploit
POC
Public exploit code exists
Data Quality
7 sources
Confidence: High
EUVD NVD CVE.org EPSS Vulnrichment GHSA MSRC Vendor GitHub

How this decision was reached

The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.

SignalValue
Severity MEDIUM
CISA KEV No
Public POC Yes
EPSS 0.3%
Patch available Yes
Active threat No
Deciding rule
MEDIUM severity (CVSS 4.0-6.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Scheduled
Exploitation
Poc
System Exposure· derived
Open
Automatable
No
Human Impact· derived
Medium
Technical Impact
Partial

Priority Score

52
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +32
PoC: +20
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Denial of Service attacks render applications or systems unavailable by overwhelming resources or triggering failure conditions.

More in Go

View all
CVE-2023-44487 HIGH POC
7.5 Oct 10

Denial of service against HTTP/2 server implementations allows remote unauthenticated attackers to exhaust server resour

CVE-2016-5386 HIGH
8.1 Jul 19

The net/http package in Go through 1.6 does not attempt to address RFC 3875 section 4.1.18 namespace conflicts and there

CVE-2025-68121 CRITICAL POC
10.0 Feb 05

Critical certificate validation bypass in Go crypto/tls during session resumption. If ClientCAs or RootCAs fields are mu

CVE-2019-14809 CRITICAL POC
9.8 Aug 13

net/url in Go before 1.11.13 and 1.12.x before 1.12.8 mishandles malformed hosts in URLs, leading to an authorization by

CVE-2026-90942 CRITICAL POC
9.3 Sep 14

Casdoor through 4.4.0 exposes its instance-wide built-in JWT signing private key unmasked through the /api/get-certs and

CVE-2026-101090 CRITICAL POC
9.3 Sep 27

Host header injection in Nezha 2.2.3's OAuth2 redirect endpoint (/api/v1/oauth2/{provider}) allows an unauthenticated re

CVE-2026-78428 HIGH POC
8.8 Sep 17

Session cross-wiring in SUSE NeuVector before 5.6.1 allows an unauthenticated remote attacker to obtain another user's a

CVE-2026-92791 HIGH POC
8.7 Sep 16

Unauthenticated path traversal in Uber Kraken through 0.1.29 allows remote attackers to read files outside the configure

CVE-2018-7187 HIGH POC
8.8 Feb 16

The "go get" implementation in Go 1.9.4, when the -insecure command-line option is used, does not validate the import pa

CVE-2026-16651 HIGH POC
8.7 Sep 21

Denial of service in Temporal Server allows an authenticated caller holding at least namespace read permission to crash

CVE-2026-82405 HIGH POC
8.7 Sep 23

Account takeover in Klever-Go's KleverUpdateAccountPermission built-in (all versions prior to 1.7.20) allows an attacker

CVE-2026-82409 HIGH POC
8.4 Sep 23

Maliciously crafted on-chain account names processed by Klever-Go prior to 1.7.20 are spliced into Elasticsearch _bulk r

Vendor StatusVendor

SUSE

Severity: Moderate
Product Status
Container suse/helm:4.3.0-70.1 Affected
Container suse/registry:3.1-7.20 Affected
SUSE Linux Enterprise Server 16.0 SUSE Linux Enterprise Server for SAP applications 16.0 Fixed
SUSE Linux Micro 6.2 Fixed
openSUSE Leap 16.0 Fixed

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy