Skip to main content

OpenTelemetry-Go EUVDEUVD-2026-81262

| CVE-2026-81871 MEDIUM
Improper Certificate Validation (CWE-295)
2026-09-16 GitHub_M GHSA-w34q-cm8f-9c5x
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
    Gain network intercept position on collector path
  2. Exploit
    Present system-trusted certificate to spoof collector
  3. Execution
    Exporter accepts connection (env TLS/pinning silently ignored)
  4. Impact
    Read or alter log telemetry in transit

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A07:2025 - Authentication Failures
ASVS 5.0
V12 - Secure Communication Certificate validation
Exploitation Conditions

Exploitation requires all of the following: (1) the application uses the otlploggrpc logs exporter at a version < 0.21.0; (2) TLS to the OTLP collector is configured ONLY through environment variables (OTEL_EXPORTER_OTLP_LOGS_CERTIFICATE, OTEL_EXPORTER_OTLP_CERTIFICATE, and the client-certificate/key variables) WITHOUT also calling WithTLSCredentials in code - if WithTLSCredentials is supplied programmatically the connection is not vulnerable; (3) the deployment relies on that env-configured private-CA pinning or mutual TLS as its trust boundary (a deployment already using a public/system-trusted CA gains no protection from pinning and is not meaningfully weakened); and (4) the attacker holds a man-in-the-middle position on the client-to-collector network path AND can present a certificate that chains to the victim host's system trust store. The system-trusted-certificate requirement is the primary limiting factor (reflected as AT:P in CVSS 4.0), meaning arbitrary self-signed spoofing does not work.

Impact

This is a genuine but moderate-severity confidentiality/integrity risk, not a high-urgency emergency. The vendor CVSS 4.0 base is 6.3 (AV:N/AC:L/AT:P/PR:N/UI:N/VC:L/VI:L/VA:N) - the AT:P (attack requirement present) metric correctly reflects that exploitation depends on the attacker achieving a network-interception position AND presenting a certificate trusted by the victim host's system roots, which materially raises the bar. No KEV listing, no EPSS score, and no public exploit code are present in the input, so exploitation status is: no public exploit identified at time of analysis - treat this as a defense-in-depth/misconfiguration-exposure issue rather than an actively hunted target. Importantly, the flaw only manifests when an application configures collector TLS exclusively through environment variables and relies on private-CA pinning or mutual TLS; applications that pass WithTLSCredentials programmatically are unaffected, which sharply narrows the real-world exposed population below what the network-vector CVSS alone would imply. My independent read lowers the effective severity slightly (assessed ~4.8 in CVSS 3.1 with AC:H) because the MITM prerequisite plus the need for a system-trusted certificate is closer to high attack complexity than low.

Exploit ScenarioDerived

A Go service uses the otlploggrpc logs exporter and configures mTLS/private-CA pinning to its OTLP collector purely via OTEL_EXPORTER_OTLP_LOGS_CERTIFICATE and related environment variables, expecting the connection to be pinned. Because newGRPCDialOptions never applies the env-loaded cfg.tlsCfg, the client silently falls back to system roots with no client certificate. An attacker positioned on the network path (e.g., compromised router, rogue proxy, or DNS/ARP spoofing) who can present any certificate chaining to a system-trusted CA intercepts the gRPC connection and reads or tampers with the exported log telemetry. No public exploit code is identified in the provided data.

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

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

Alert me

AnalysisAIv1 – Sep 16, 2026

Log telemetry exported over gRPC by OpenTelemetry-Go versions prior to 0.21.0 can be silently intercepted or modified because the otlploggrpc exporter reads TLS certificate settings from environment variables into its config but never applies them to the gRPC transport credentials. When TLS is configured only through OTEL_EXPORTER_OTLP_LOGS_CERTIFICATE, OTEL_EXPORTER_OTLP_CERTIFICATE, and the related client-certificate/key variables - and the application does not additionally call WithTLSCredentials in code - the client falls back to credentials.NewTLS with system roots and no client certificate, so the intended private-CA pinning and mutual TLS are bypassed. A network attacker in a man-in-the-middle position who can present a certificate chaining to the victim host's system trust store can read or alter exported log data; misconfigured code paths that do pass WithTLSCredentials are unaffected, the system-trusted-certificate prerequisite is a significant limiting factor, and no public exploit was identified at time of analysis. The issue is fixed in otlploggrpc v0.21.0.

RemediationAI

Vendor-released patch: upgrade go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc to 0.21.0 (release tag exporters/otlp/otlplog/otlploggrpc/v0.21.0), which applies the environment-configured TLS settings to the gRPC dial options; the corresponding fix is commit c65d435b43e5e6b82310e6b18dd4cdcb8ac63a0c and the advisory is at https://github.com/open-telemetry/opentelemetry-go/security/advisories/GHSA-w34q-cm8f-9c5x. Where an immediate upgrade is not possible, the most direct compensating control is to stop relying on the environment-variable TLS path and instead pass the intended TLS configuration programmatically with WithTLSCredentials (grpc.WithTransportCredentials(credentials.NewTLS(tlsCfg))); this restores private-CA pinning and client-certificate authentication because the explicit option was always honored, at the cost of moving certificate configuration out of deployment environment variables and into application code, which complicates per-environment management. Deployments that already trust only a public/system-trusted CA and use no client certificates gain no protection from pinning and are not meaningfully weakened, so they may deprioritize this change. Additional defense-in-depth options include routing exporter traffic through a mutually authenticated tunnel or service mesh, restricting the client-to-collector path with network segmentation so a man-in-the-middle position is harder to obtain, and monitoring for unexpected certificate chains presented by the collector endpoint. Note that simply rotating certificates or setting OTEL_EXPORTER_OTLP_LOGS_CERTIFICATE differently does not help on unpatched versions, since those variables are ignored on the vulnerable gRPC path.

Affected VersionsENISA

opentelemetry-go < 0.21.0

Affected Packages

go go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc 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

OpenTelemetry-Go is the Go implementation of the OpenTelemetry observability framework, and the exporters/otlp/otlplog/otlploggrpc package ships OTLP log data to a collector over gRPC. The root cause is CWE-295 (Improper Certificate Validation): the configuration loader loadEnvTLS correctly parsed the OTEL_EXPORTER_OTLP_LOGS_CERTIFICATE, OTEL_EXPORTER_OTLP_CERTIFICATE, and client-certificate/key environment variables into cfg.tlsCfg, but newGRPCDialOptions omitted a case that would wrap cfg.tlsCfg.Value in credentials.NewTLS and attach it via grpc.WithTransportCredentials. Only the explicitly supplied GRPCCredentials option was honored, so the environment-only TLS path constructed transport credentials from system roots with no configured client certificate. This means an attacker who controls the network path and possesses any certificate issued by a publicly trusted CA can complete the TLS handshake against the exporter and transparently read or rewrite the log payload, defeating the operator's intent to pin a private CA or require mutual TLS. The upstream fix (commit c65d435b43e5e6b82310e6b18dd4cdcb8ac63a0c) adds a case in newGRPCDialOptions that applies credentials.NewTLS(cfg.tlsCfg.Value) when cfg.tlsCfg.Value is non-nil, and extends the test suite with TestEnvTLSCredentials to verify that environment-derived certificates, including client certificates, are actually used in the handshake. Per the CPE cpe:2.3:a:open-telemetry:opentelemetry-go:*:*:*:*:*:*:*:* this affects the OpenTelemetry-Go module generally, with the vulnerable code confined to the otlploggrpc exporter added in the pre-0.21.0 line.

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:L/VI:L/VA:N/SC:N/SI:N/SA:N
vuln.today AI 4.8 MEDIUM

AV:N over the network but AC:H because the attacker must both hold a MITM position and present a system-trusted certificate; PR:N/UI:N; C:L/I:L for reading/altering log telemetry, no availability impact.

3.1 AV:N/AC:H/PR:N/UI:N/S:U/C:L/I:L/A:N
4.0 AV:N/AC:L/AT:P/PR:N/UI:N/VC:L/VI:L/VA:N/SC:N/SI:N/SA:N
SUSE 4.8 MEDIUM
AV:N/AC:H/PR:N/UI:N/S:U/C:L/I:L/A:N
Red Hat 6.5 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
Low
Vulnerable system: Integrity
Low
Vulnerable system: Availability
None
Subsequent system: Confidentiality
None
Subsequent system: Integrity
None
Subsequent system: Availability
None

Lifecycle Timeline

2
Patch available
Sep 16, 2026 - 22:04 EUVD
CVE Published
Sep 16, 2026 - 20:43 cve.org
MEDIUM 6.3

DescriptionCVE.org

OpenTelemetry-Go is the Go implementation of OpenTelemetry. Prior to version 0.21.0, the exporters/otlp/otlplog/otlploggrpc package loads OTEL_EXPORTER_OTLP_LOGS_CERTIFICATE, OTEL_EXPORTER_OTLP_CERTIFICATE, and related client certificate environment variables through loadEnvTLS into cfg.tlsCfg, but newGRPCDialOptions does not apply cfg.tlsCfg when creating gRPC transport credentials. The environment-only TLS path instead uses credentials.NewTLS with system roots and no configured client certificate, bypassing intended private CA pinning and mutual TLS unless the application also supplies WithTLSCredentials. A network attacker able to intercept or spoof the collector connection with a system-trusted certificate can read or alter log telemetry. This issue is fixed in version 0.21.0.

Threat Intelligence Overview

EPSS Score
0.2%
Top 90% exploitable
Prevalence
High
CNCF-graduated OpenTelemetry-Go is ubiquitous in cloud-native Go, though logs exporter is 0.x beta
Threat Intel
1
1 sources
Data Quality
6 sources
Confidence: High

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 No
EPSS 0.2%
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· derived
None
System Exposure· derived
Open
Automatable· derived
Yes
Human Impact· derived
Medium

Priority Score

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

Attack Technique

Authentication bypass attacks exploit flaws in the verification mechanisms that control access to systems and applications.

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