Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessGain read access to application logs
-
DeliveryApp runs with otel.SetLogger Info logging enabled
-
ExploitTracerProvider emits config diagnostic event
-
ExecutionParse collector endpoints and Zipkin URLs from logs
-
ImpactRecover embedded credentials / map collector topology
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V14 - Data Protection Data exposure prevention
MITRE ATT&CK
2 techniques across 2 tactics: Collection, Discovery The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Requires the application to have explicitly called otel.SetLogger to enable OpenTelemetry internal Info-level logging - the default OpenTelemetry logger does NOT emit the diagnostic event, so default configurations are unaffected. The disclosed data appears only in the application's own logs, so an attacker must already have read access to those logs (local files, log aggregation, or SIEM). Value is further limited to what is actually configured: internal collector endpoints, the OTLP HTTP Insecure flag, and Zipkin collector URLs; credential recovery only occurs if operators embedded tokens in Zipkin URL user-info or query strings. OTLP authentication headers, TLS key material, and span payloads are never logged, capping the exposure. |
| Impact | This is a genuine but very low-severity information-disclosure issue, and the signals agree: vendor CVSS 4.0 base score is 2.0 (AV:L/AC:L/AT:P/PR:L/UI:N/VC:L only), CWE-200. There is no EPSS score, no CISA KEV listing, and no public exploit - exploitation status is 'no public exploit identified at time of analysis.' The AT:P (attack requirement present) and the description together confirm this only manifests under a non-default condition: the application must call otel.SetLogger to enable OpenTelemetry internal Info-level logging; the default logger does not emit the event. Even when triggered, impact is limited to VC:L (endpoints, the OTLP HTTP Insecure flag, and Zipkin URLs that may carry embedded credentials) - no integrity or availability impact, and the vendor explicitly notes OTLP auth headers, TLS key material, and span payloads are NOT logged. The real risk is secondary: it depends entirely on who can read the application's logs and whether operators put credentials in Zipkin URL user-info/query strings. This is a hardening/hygiene fix, not an urgent priority. No conflicting signals were found; the low CVSS and absence of exploitation evidence are mutually consistent. |
| Exploit ScenarioDerived | An application enables OpenTelemetry internal Info logging via otel.SetLogger and initializes a TracerProvider; the SDK writes a diagnostic event whose MarshalLog serializes exporter/client configuration into the logs, including collector endpoints and full Zipkin URLs. A person with access to those logs (e.g., a log aggregation platform, SIEM, or shared log files) reads them to map internal collector topology and recover any credentials embedded in the Zipkin URL. No public exploit code exists; the 'attack' is passive log inspection requiring prior local/log access. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Sep 16, 2026
OpenTelemetry-Go versions 1.5.0 through 1.44.0 can write sensitive collector configuration into an application's own logs when the application explicitly opts into internal diagnostic logging through otel.SetLogger at Info verbosity: the TracerProvider created event serializes span processor, exporter, and client configuration, exposing OTLP gRPC and HTTP collector endpoints, the OTLP HTTP Insecure flag, and complete Zipkin collector URLs. Anyone able to read those logs - local files, aggregated log stores, or a SIEM - can reconstruct internal collector topology and can recover credentials or tokens where operators embedded them in Zipkin URL user-info or query strings. The vendor CVSS 4.0 base score is 2.0 and no public exploit identified at time of analysis; note that OTLP authentication headers, TLS key material, and span payloads are never written by this path, and default OpenTelemetry configurations that do not install a logger are unaffected because the default logger does not emit the diagnostic event.
RemediationAI
Vendor-released patch: upgrade to OpenTelemetry-Go sdk/v1.45.0 and exporters/zipkin/v1.45.0 (matched module releases for the otlptrace, otlptracegrpc, and otlptracehttp exporters), which correspond to PR #8438 / commit 3a1412d2b3bc4e4231fbeac2ed42117ae541bb38 and remove endpoint, Insecure, and Zipkin URL data from the marshaled log output; run go get -u go.opentelemetry.io/otel/sdk@v1.45.0 and go get -u go.opentelemetry.io/otel/exporters/zipkin@v1.45.0, then verify no dependency graph still resolves an older otel module. If immediate upgrade is not possible, the most effective compensating control is to stop enabling Info-level internal logging: remove or restrict the otel.SetLogger call and, where a logger must be installed, raise the verbosity threshold to Warn or Error so the TracerProvider created event is filtered out - the trade-off is losing internal diagnostic visibility for SDK troubleshooting. As a secondary measure, keep credentials out of Zipkin collector URLs (use collector-level authentication or headers rather than user-info or query-string tokens) so that any residual logging carries no secrets, and restrict access to log files, log aggregation pipelines, and SIEM indexes containing OpenTelemetry output, since the disclosed data only appears in application-controlled logs; purging or rotating any credentials previously embedded in Zipkin URLs is advisable. Both the advisory (https://github.com/open-telemetry/opentelemetry-go/security/advisories/GHSA-8wmf-6v46-5gfg) and the fix diff (https://github.com/open-telemetry/opentelemetry-go/pull/8438) should be reviewed before deployment. Note that no public exploit code has been identified and the assessed vector is CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:L/I:N/A:N, so a local actor with read access to the application logs is required and impact is limited to confidentiality of endpoint configuration and any credentials embedded in Zipkin URLs.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 6 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 flaw is a CWE-200 (Exposure of Sensitive Information to an Unauthorized Actor) issue rooted in Go's structured logging ecosystem. OpenTelemetry-Go uses github.com/go-logr/logr, whose MarshalLog() interface lets an object control how it is rendered when passed to a logger; the sdk/trace.NewTracerProvider path emitted an Info-level "TracerProvider created" diagnostic event whose nested MarshalLog implementations returned the exporter/client config structs verbatim. In go.opentelemetry.io/otel/exporters/otlp/otlptrace, the Exporter's MarshalLog returned the live Client object; in otlptracegrpc and otlptracehttp the client's MarshalLog returned Type plus Endpoint (and, for HTTP, the Insecure boolean); and the Zipkin exporter surfaced full collector URLs, which may carry userinfo or query-string tokens. The default OpenTelemetry logger discards this event, so the exposure only materializes when a developer calls otel.SetLogger with Info-level logging enabled and the resulting output is persisted or shipped off-host. The upstream fix in PR #8438 (commit 3a1412d2b3bc4e4231fbeac2ed42117ae541bb38) narrows the marshaled data: the otlptrace Exporter now logs fmt.Sprintf("%T", e.client) so only the client type name is recorded, and the otlptracegrpc, otlptracehttp, and Zipkin MarshalLog implementations were reduced to return only the exporter Type, dropping Endpoint and Insecure entirely. New tests assert that sensitive endpoints such as "user:pass@collector.internal:4317" no longer appear in log output while the type name still does. Affected components map to the CPE cpe:2.3:a:open-telemetry:opentelemetry-go:*:*:*:*:*:*:*:*, covering the sdk/trace module and the OTLP trace and Zipkin exporters.
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
CVSS:4.0/AV:L/AC:L/AT:P/PR:L/UI:N/VC:L/VI:N/VA:N/SC:N/SI:N/SA:N
AC:H and effectively local because a non-default logging config must be enabled and the data lives only in local logs; PR:L for log access; C:L only, no integrity/availability impact.
Primary rating from Vendor (GitHub_M).
CVSS VectorVendor: GitHub_M
Lifecycle Timeline
2DescriptionCVE.org
OpenTelemetry-Go is the Go implementation of OpenTelemetry. From version 1.5.0 to 1.44.0, sdk/trace.NewTracerProvider emits a TracerProvider created internal Info-level diagnostic event whose MarshalLog implementations recursively include span processor, exporter, and client configuration. Applications that call otel.SetLogger to enable OpenTelemetry internal Info logging can therefore record OTLP gRPC and HTTP collector endpoints, the OTLP HTTP Insecure flag, and complete Zipkin collector URLs. A person or system with access to those logs can learn internal collector topology and can recover credentials or tokens embedded in Zipkin URL user information or query strings. The default OpenTelemetry logger does not emit the event, and this path does not log OTLP authentication headers, TLS key material, or span payloads. This issue is fixed in version 1.45.0.
Threat Intelligence Overview
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.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.
Denial of service against HTTP/2 server implementations allows remote unauthenticated attackers to exhaust server resour
The net/http package in Go through 1.6 does not attempt to address RFC 3875 section 4.1.18 namespace conflicts and there
Critical certificate validation bypass in Go crypto/tls during session resumption. If ClientCAs or RootCAs fields are mu
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
Casdoor through 4.4.0 exposes its instance-wide built-in JWT signing private key unmasked through the /api/get-certs and
Host header injection in Nezha 2.2.3's OAuth2 redirect endpoint (/api/v1/oauth2/{provider}) allows an unauthenticated re
Session cross-wiring in SUSE NeuVector before 5.6.1 allows an unauthenticated remote attacker to obtain another user's a
Unauthenticated path traversal in Uber Kraken through 0.1.29 allows remote attackers to read files outside the configure
The "go get" implementation in Go 1.9.4, when the -insecure command-line option is used, does not validate the import pa
Denial of service in Temporal Server allows an authenticated caller holding at least namespace read permission to crash
Account takeover in Klever-Go's KleverUpdateAccountPermission built-in (all versions prior to 1.7.20) allows an attacker
Maliciously crafted on-chain account names processed by Klever-Go prior to 1.7.20 are spliced into Elasticsearch _bulk r
EUVD-2026-81098
GHSA-8wmf-6v46-5gfg
NVD
CVE.org
EPSS
Vulnrichment
Exploit-DB