feat: update module go.opentelemetry.io/otel/sdk to v1.45.0 [security] - #79
Open
renovate[bot] wants to merge 1 commit into
Open
renovate[bot] wants to merge 1 commit into
renovate[bot] wants to merge 1 commit into
Conversation
Contributor
Author
ℹ️ Artifact update noticeFile name: go.modIn order to perform the update(s) described in the table above, Renovate ran the
Details:
|
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #79 +/- ##
==========================================
+ Coverage 54.81% 54.94% +0.12%
==========================================
Files 25 25
Lines 1609 1609
==========================================
+ Hits 882 884 +2
+ Misses 630 628 -2
Partials 97 97 ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
renovate
Bot
deleted the
renovate/go-go.opentelemetry.io-otel-sdk-vulnerability
branch
March 23, 2026 00:54
renovate
Bot
force-pushed
the
renovate/go-go.opentelemetry.io-otel-sdk-vulnerability
branch
2 times, most recently
from
March 23, 2026 05:02
c855f97 to
e6c4d6e
Compare
renovate
Bot
force-pushed
the
renovate/go-go.opentelemetry.io-otel-sdk-vulnerability
branch
2 times, most recently
from
March 30, 2026 21:06
e6c4d6e to
f1e2f5a
Compare
renovate
Bot
force-pushed
the
renovate/go-go.opentelemetry.io-otel-sdk-vulnerability
branch
from
April 8, 2026 23:59
f1e2f5a to
1f36051
Compare
renovate
Bot
force-pushed
the
renovate/go-go.opentelemetry.io-otel-sdk-vulnerability
branch
from
April 27, 2026 23:49
1f36051 to
d3c059f
Compare
renovate
Bot
force-pushed
the
renovate/go-go.opentelemetry.io-otel-sdk-vulnerability
branch
2 times, most recently
from
May 27, 2026 17:46
d3c059f to
1d49455
Compare
renovate
Bot
force-pushed
the
renovate/go-go.opentelemetry.io-otel-sdk-vulnerability
branch
2 times, most recently
from
July 3, 2026 18:37
1d49455 to
39c3eef
Compare
renovate
Bot
force-pushed
the
renovate/go-go.opentelemetry.io-otel-sdk-vulnerability
branch
2 times, most recently
from
August 29, 2026 17:02
39c3eef to
2b9d2e2
Compare
renovate
Bot
force-pushed
the
renovate/go-go.opentelemetry.io-otel-sdk-vulnerability
branch
from
September 17, 2026 23:56
2b9d2e2 to
99e9fe2
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR contains the following updates:
v1.28.0→v1.45.0OpenTelemetry Go SDK Vulnerable to Arbitrary Code Execution via PATH Hijacking
CVE-2026-24051 / GHSA-9h8m-3fm2-qjrq
More information
Details
Impact
The OpenTelemetry Go SDK in version
v1.20.0-1.39.0is vulnerable to Path Hijacking (Untrusted Search Paths) on macOS/Darwin systems. The resource detection code insdk/resource/host_id.goexecutes theioregsystem command using a search path. An attacker with the ability to locally modify the PATH environment variable can achieve Arbitrary Code Execution (ACE) within the context of the application.Patches
This has been patched in d45961b, which was released with
v1.40.0.References
Severity
CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:HReferences
This data is provided by the GitHub Advisory Database (CC-BY 4.0).
opentelemetry-go: BSD kenv command not using absolute path enables PATH hijacking
CVE-2026-39883 / GHSA-hfvc-g4fc-pqhx
More information
Details
Summary
The fix for GHSA-9h8m-3fm2-qjrq (CVE-2026-24051) changed the Darwin
ioregcommand to use an absolute path but left the BSDkenvcommand using a bare name, allowing the same PATH hijacking attack on BSD and Solaris platforms.Root Cause
sdk/resource/host_id.goline 42:Compare with the fixed Darwin path at line 58:
The
execCommandhelper atsdk/resource/host_id_exec.gousesexec.Command(name, arg...)which searches$PATHwhen the command name contains no path separator.Affected platforms (per build tag in
host_id_bsd.go:4): DragonFly BSD, FreeBSD, NetBSD, OpenBSD, Solaris.The
kenvpath is reached when/etc/hostiddoes not exist (line 38-40), which is common on FreeBSD systems.Attack
go.opentelemetry.io/otel/sdkkenvbinary earlier in$PATHhostIDReaderBSD.read()callsexec.Command("kenv", ...)which resolves to the malicious binarySame attack vector and impact as CVE-2026-24051.
Suggested Fix
Use the absolute path:
On FreeBSD,
kenvis located at/bin/kenv.Severity
CVSS:4.0/AV:L/AC:H/AT:N/PR:L/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:NReferences
This data is provided by the GitHub Advisory Database (CC-BY 4.0).
OpenTelemetry-Go: Exporter config logging may leak endpoint URLs in info logs
CVE-2026-81870 / GHSA-8wmf-6v46-5gfg
More information
Details
Summary
OpenTelemetry Go versions 1.5.0 through 1.44.0 can include trace exporter endpoint configuration in an internal diagnostic log emitted when an SDK
TracerProvideris created. The default OpenTelemetry logger does not emit this event. Exposure requires an application to install a logger that enables OpenTelemetry's internal Info-level diagnostics and for someone other than the intended audience to have access to those logs.The logged configuration can disclose the address of the trace collector and whether the OTLP/HTTP connection is configured as insecure. The Zipkin exporter logs its complete collector URL, so credentials in URL userinfo or tokens in the query string are also disclosed if an application embeds them there. OTLP authentication headers, TLS key material, and exported span data are not included in this log.
Exporter
MarshalLogimplementations that caused this configuration to be included in internal logs were introduced bya1fff3c.Details
When
sdk/trace.NewTracerProviderconstructs a provider, it records aTracerProvider createdinternal Info event containing the provider configuration. In affected versions, the configuration'sMarshalLogmethods recursively include:This causes the following values to be present in the event:
Insecureflag; andOpenTelemetry Go does not emit this event with its default logger, which only emits errors. An application must explicitly configure a sufficiently verbose logger with
otel.SetLogger. The requiredlogrverbosity is version-dependent:V(1)for this Info event; andV(4).OTLP header configuration is not part of the marshaled object, so credentials supplied with
WithHeadersor the corresponding environment variables are not exposed. The documented OTLPWithEndpointinput is a collector address rather than a credential-bearing URL. The higher-risk case is therefore the Zipkin collector URL, which is retained and logged in full, or an application passing sensitive data in an OTLP endpoint outside the documented format.Proof of concept
The following program demonstrates the behavior with OpenTelemetry Go 1.44.0. It deliberately places credentials and a token in the Zipkin collector URL and enables internal Info logging:
The
TracerProvider createdevent contains:For versions before 1.15.0, set
funcr.Options{Verbosity: 1}instead.Impact
This is a conditional disclosure through application logs. Affected applications must enable verbose OpenTelemetry internal diagnostics and configure a trace exporter containing information they do not intend to expose to readers of those logs. In that configuration, a person or system with log access can learn the trace collector address and internal network topology. If credentials or tokens are embedded directly in a Zipkin collector URL, those values can also be recovered from the logs.
There is no exposure with the default OpenTelemetry logger, and the vulnerable log is generated from local application configuration rather than remotely supplied span data. OTLP authentication headers, certificate or private-key contents, and telemetry payloads are not logged by this path.
Remediation
Upgrade the affected OpenTelemetry Go modules to version 1.45.0 or later. The fix in
3a1412dstops recursively marshaling exporter and client configuration and records their types instead.If an immediate upgrade is not possible:
Severity
CVSS:4.0/AV:L/AC:L/AT:P/PR:L/UI:N/VC:L/VI:N/VA:N/SC:N/SI:N/SA:NReferences
This data is provided by the GitHub Advisory Database (CC-BY 4.0).
OpenTelemetry-Go: UTF-8 replacement rune bypasses attribute length truncation
CVE-2026-81869 / GHSA-p9f8-wvj8-2fg8
More information
Details
Summary
The OpenTelemetry Go SDK trace package can fail to enforce
AttributeValueLengthLimitfor string attributes containing the valid Unicode replacement character U+FFFD. An oversized attacker-controlled attribute value that includes U+FFFD is returned untruncated, bypassing the configured memory/DoS protection and allowing increased per-span memory usage. The finding is low severity because it requires a deployment with attribute value length limits enabled and attacker-controlled data being recorded into span attributes.Introduced in commit 49a6536
Details
String and string-slice span attributes are truncated through
safeTruncatewhenAttributeValueLengthLimitis non-negative. The finding evidence identifies this enforcement path insdk/trace/span.go:303-331, with string attributes passed tosafeTruncateatsdk/trace/span.go:309-310and string-slice entries passed tosafeTruncatein the loop beginning atsdk/trace/span.go:312.safeTruncatefirst callssafeTruncateValidUTF8; if that returnsok=false, it callsstrings.ToValidUTF8(input, "")and retries. The relevant code is identified insdk/trace/span.go:337-355.safeTruncateValidUTF8treats anyutf8.RuneErrorfromutf8.DecodeRuneInStringas invalid UTF-8 and immediately returns the original input withok=false. However, Go also returnsutf8.RuneErrorfor a valid encoded U+FFFD rune. The validation artifact confirms this behavior with outputr=U+FFFD size=3 runeError=true.For an input such as
"AAAA" + U+FFFD + strings.Repeat("B", 20)and a limit of 5, the first truncation attempt sees U+FFFD asutf8.RuneErrorand returns the full input withok=false.strings.ToValidUTF8does not remove the valid U+FFFD rune, so the second attempt returns the same full input. As a result, the span attribute value remains 27 bytes long even though the configured limit is 5.PoC
validation-artifact.zip
The validation artifact contains a package-level Go test at
validation-artifact.tar:safe_truncate_bypass/safe_truncate_poc_test.goand supporting output atvalidation-artifact.tar:safe_truncate_bypass/runecheck_output.txt.Reproduction configuration:
pellared/opentelemetry-go49a6536from September 12, 2022sdk/traceunder thesdkmodulelimit := 5Commands:
Expected vulnerable output includes a failing test showing that the returned value exceeds the configured limit:
The artifact also records the standalone UTF-8 behavior needed for the bypass:
Expected output:
Impact
This is a Unicode handling and resource-limit bypass that weakens span attribute memory controls. Applications that enable
AttributeValueLengthLimitto bound memory usage can still store oversized attacker-controlled attribute values if those values contain U+FFFD. The practical impact is increased memory use and reduced denial-of-service protection in the instrumented process; the finding does not show confidentiality or integrity impact.Severity
CVSS:4.0/AV:L/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:L/SC:N/SI:N/SA:NReferences
This data is provided by the GitHub Advisory Database (CC-BY 4.0).
Release Notes
open-telemetry/opentelemetry-go (go.opentelemetry.io/otel/sdk)
v1.45.0Compare Source
v1.44.0: /v0.66.0/v0.20.0/v0.0.17Compare Source
Added
ByteSliceandByteSliceValuefunctions for newBYTESLICEattribute type ingo.opentelemetry.io/otel/attribute. (#7948)KindBytesattribute type ingo.opentelemetry.io/otel/sdk/log. (#7990)BYTESLICEattribute type ingo.opentelemetry.io/otel/sdk/trace. (#7990)BYTESLICEattributes ingo.opentelemetry.io/otel/trace. (#8153)BYTESLICEattributes ingo.opentelemetry.io/otel/exporters/otlp/otlptrace. (#8153)BYTESLICEattributes ingo.opentelemetry.io/otel/exporters/otlp/otlplog. (#8153)BYTESLICEattributes ingo.opentelemetry.io/otel/exporters/otlp/otlpmetric. (#8153)BYTESLICEattributes ingo.opentelemetry.io/otel/exporters/zipkin. (#8153)Stringmethod forValuetype ingo.opentelemetry.io/otel/attribute. (#8142)SliceandSliceValuefunctions for newSLICEattribute type ingo.opentelemetry.io/otel/attribute. (#8166)SLICEattributes ingo.opentelemetry.io/otel/exporters/otlp/otlptrace. (#8216)SLICEattributes ingo.opentelemetry.io/otel/exporters/otlp/otlplog. (#8216)SLICEattributes ingo.opentelemetry.io/otel/exporters/otlp/otlpmetric. (#8216)SLICEattributes ingo.opentelemetry.io/otel/exporters/zipkin. (#8216)AttributeValueLengthLimittoattribute.SLICEtype attribute values ingo.opentelemetry.io/otel/sdk/trace, recursively truncating contained string values. (#8217)Errorfield onRecordtype ingo.opentelemetry.io/otel/log/logtest. (#8148)WithMaxRequestSizeoption ingo.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc. (#8157)WithMaxRequestSizeoption ingo.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp. (#8157)WithMaxRequestSizeoption ingo.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc. (#8157)WithMaxRequestSizeoption ingo.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp. (#8157)WithMaxRequestSizeoption ingo.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc. (#8157)WithMaxRequestSizeoption ingo.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp. (#8157)Settabletogo.opentelemetry.io/otel/metric/xto allow reusing attribute options. (#8178)go.opentelemetry.io/otel/sdk/metric.Set
OTEL_GO_X_METRIC_EXPORT_BATCH_SIZE=<max_size>to enable for all periodic readers.See
go.opentelemetry.io/otel/sdk/metric/internal/xfor feature documentation. (#8071)go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc.Enable with
OTEL_GO_X_SELF_OBSERVABILITY=trueenvironment variable.See
go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc/internal/xfor feature documentation. (#8192)go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp.Enable with
OTEL_GO_X_SELF_OBSERVABILITY=trueenvironment variable.See
go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp/internal/xfor feature documentation. (#8194)go.opentelemetry.io/otel/exporters/stdout/stdoutlog.Enable with
OTEL_GO_X_SELF_OBSERVABILITY=trueenvironment variable.See
go.opentelemetry.io/otel/stdout/stdoutlog/internal/xfor feature documentation. (#8263)WithDefaultAttributestogo.opentelemetry.io/otel/metric/xto support setting default attributes on instruments. (#8135)go.opentelemetry.io/otel/semconv/v1.41.0package.The package contains semantic conventions from the
v1.41.0version of the OpenTelemetry Semantic Conventions.See the migration documentation for information on how to upgrade from
go.opentelemetry.io/otel/semconv/v1.40.0. (#8324)go.opentelemetry.io/otel/semconv/v1.41.0package. (#8350)go.opentelemetry.io/otel/semconv/v1.41.0. (#8002)Changed
go.opentelemetry.io/otel/sdk/metricnow applies a default cardinality limit of 2000 to comply with the Metrics SDK specification recommendation.New attribute sets are dropped when the cardinality limit is reached. The measurement of these sets are aggregated into a special attribute set containing
attribute.Bool("otel.metric.overflow", true).This can break users who relied on the previous unlimited default.
Set
WithCardinalityLimit(0)or the deprecatedOTEL_GO_X_CARDINALITY_LIMIT=0environment variable to preserve unlimited cardinality.Note that support for
OTEL_GO_X_CARDINALITY_LIMITmay be removed in a future release. (#8247)ErrorTypeingo.opentelemetry.io/otel/semconvnow unwraps errors created withfmt.Errorfwhen deriving theerror.typeattribute. (#8133)go.opentelemetry.io/otel/sdk/lognow unwraps error chains created withfmt.Errorfwhen deriving theerror.typeattribute from errors on log records. (#8133)Set.MarshalLogmethod ingo.opentelemetry.io/otel/attributenow usesValue.Stringformatting following the OpenTelemetry AnyValue representation for non-OTLP protocols. (#8169)go.opentelemetry.io/otel/sdk/metricto return a drop reservoir and short-circuitOffercalls to the exemplar reservoir whenexemplar.AlwaysOffFilteris configured. (#8211) (#8267)go.opentelemetry.io/otel/sdk/metricto return a drop reservoir for asynchronous instruments whenexemplar.TraceBasedFilteris configured. (#8286)Deprecated
Value.Emitmethod ingo.opentelemetry.io/otel/attribute.Use
Value.Stringinstead. (#8176)Fixed
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc.The limit applies before compression, oversized requests are treated as non-retryable errors, and the limit can be configured with the new
WithMaxRequestSizeoption. (#8157, #8365)go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp.The limit applies before compression, oversized requests are treated as non-retryable errors, and the limit can be configured with the new
WithMaxRequestSizeoption. (#8157, #8365)go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc.The limit applies before compression, oversized requests are treated as non-retryable errors, and the limit can be configured with the new
WithMaxRequestSizeoption. (#8157, #8365)go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp.The limit applies before compression, oversized requests are treated as non-retryable errors, and the limit can be configured with the new
WithMaxRequestSizeoption. (#8157, #8365)go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc.The limit applies before compression, oversized requests are treated as non-retryable errors, and the limit can be configured with the new
WithMaxRequestSizeoption. (#8157, #8365)go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp.The limit applies before compression, oversized requests are treated as non-retryable errors, and the limit can be configured with the new
WithMaxRequestSizeoption. (#8157, #8365)go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp. (#8135)go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp. (#8152)go.opentelemetry.io/otel/exporters/prometheusnow usesValue.Stringformatting for label values following the OpenTelemetry AnyValue representation for non-OTLP protocols. (#8170)ShutdownonBatchSpanProcessoringo.opentelemetry.io/otel/sdk/trace. (#8197)go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttpandgo.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp. (#8226)Collectdata race and potential panic ingo.opentelemetry.io/otel/exporters/prometheuswhenWithResourceAsConstantLabelsoption is used. (#8227)FixedSizeReservoiringo.opentelemetry.io/otel/sdk/metric/exemplarby reverting #7447. (#8249)FixedSizeReservoiringo.opentelemetry.io/otel/sdk/metric/exemplarto safely handle zero size.A capacity check in the constructor initializes the reservoir safely and skips initialization for zero-cap; early returns in
Offer()andCollect()ensure no-op behavior. (#8295)go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc,go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp,go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc, andgo.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp. (#8254)name,version, orschema_urlfrom metric labels ingo.opentelemetry.io/otel/exporters/prometheus, preserving the dedicatedotel_scope_name,otel_scope_version, andotel_scope_schema_urllabels. (#8264)ParseFileingo.opentelemetry.io/otel/schema/v1.0andgo.opentelemetry.io/otel/schema/v1.1. (GHSA-995v-fvrw-c78m)go.opentelemetry.io/otel/baggageandgo.opentelemetry.io/otel/propagation. (#8222)go.opentelemetry.io/otel/semconv/v1.41.0to includeAttr*helper methods for required attributes on observable instruments. (#8361)go.opentelemetry.io/otel/propagationto prevent malformed or oversized baggage headers from flooding logs. (GHSA-5wrp-cwcj-q835)What's Changed
e5db982by @renovate[bot] in #813632cd848by @renovate[bot] in #81416f92a3bby @renovate[bot] in #814093c7c8aby @renovate[bot] in #81586b4d2bcby @renovate[bot] in #8160BYTESLICEattributes across trace and exporter paths by @MrAlias in #8153746e56fby @renovate[bot] in #81753e5c5a5by @renovate[bot] in #8190afd174aby @renovate[bot] in #8195fac6e1cby @renovate[bot] in #820207c9668by @renovate[bot] in #8206e10c466by @renovate[bot] in #8241392afabby @renovate[bot] in #82482f88a58by @renovate[bot] in #8260329d219by @renovate[bot] in #82597cedc36by @renovate[bot] in #826676f71b9by @renovate[bot] in #8271Configuration
📅 Schedule: (UTC)
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
This PR was generated by Mend Renovate. View the repository job log.