chore(all): update module go.opentelemetry.io/otel/sdk/log to v0.21.0 [SECURITY] - autoclosed - #739
Closed
renovate-bot wants to merge 1 commit into
Conversation
ℹ️ Artifact update noticeFile name: go.modIn order to perform the update(s) described in the table above, Renovate ran the
Details:
|
renovate-bot
force-pushed
the
renovate/go-go.opentelemetry.io-otel-sdk-log-vulnerability
branch
from
September 30, 2026 22:25
6f37099 to
e30f8bc
Compare
renovate-bot
deleted the
renovate/go-go.opentelemetry.io-otel-sdk-log-vulnerability
branch
October 1, 2026 18:41
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:
v0.19.0→v0.21.0OpenTelemetry-Go: BatchProcessor can busy-spin when export buffer is full
CVE-2026-81872 / GHSA-hjf4-fphr-2h65
More information
Details
Summary
A
BatchingProcessoringo.opentelemetry.io/otel/sdk/logcan enter a tight CPU loop when the asynchronous export buffer is full. Under exporter backpressure, attacker-driven high-volume log emission can keep the queue at or above the batch size, causing repeated immediate export retries and a denial of service through CPU exhaustion.Introduced in commit: 4af9c20
Details
NewBatchingProcessorwraps the exporter withnewBufferExporter(exporter, 1)(sdk/log/batch.go:116-122), so the asynchronous export input can fill quickly when the downstream exporter blocks. The poll goroutine dequeues a batch withb.q.TryDequeue, callsb.exporter.EnqueueExport(r), and then immediately sends onb.pollTriggerwheneverqLen >= b.batchSize(sdk/log/batch.go:129-165).bufferExporter.EnqueueExportis non-blocking: it sends toe.inputif possible and returnsfalsein thedefaultcase when the channel is full (sdk/log/exporter.go:221-248).TryDequeueleavesq.lenunchanged when the write callback returnsfalse(sdk/log/batch.go:289-314). Therefore, while the exporter is backpressured,EnqueueExportfails, the queue remains at or above one full batch, and the poll loop continuously retriggers itself without waiting for the ticker.PoC
validation-artifact.zip
The validation artifact contains a PoC bundle:
validation-artifact.tar:main.go: PoC source.validation-artifact.tar:README.md: build/run notes.validation-artifact.tar:build_failed.log: captured build failure from the validation environment.The PoC configures a blocking exporter and a
BatchingProcessorwithWithExportMaxBatchSize(1),WithExportInterval(5*time.Second), andWithMaxQueueSize(2048). It emits 1000 records, records a CPU profile for 750 ms while the exporter is blocked, then writes/workspace/validation_artifacts/busyloop.pprof.Reproduction steps from an affected checkout at commit
4af9c20:cd /workspace/opentelemetry-go git checkout 4af9c20 mkdir -p validation_poc/busyloop /workspace/validation_artifacts /tmp/batchingprocessor-busyloop-poc tar -xf /path/to/this/finding/validation-artifact.tar -C /tmp/batchingprocessor-busyloop-poc cp /tmp/batchingprocessor-busyloop-poc/main.go validation_poc/busyloop/main.go go build -o validation_poc/busyloop/busyloop ./validation_poc/busyloop ./validation_poc/busyloop/busyloop go tool pprof -top /workspace/validation_artifacts/busyloop.pprofExpected program output:
Expected profile evidence: hot functions should include
(*BatchingProcessor).poll,(*queue).TryDequeue, and(*bufferExporter).EnqueueExport, showing repeated export attempts while the exporter is blocked.Impact
This is an availability vulnerability: uncontrolled CPU consumption caused by a busy-spin retry loop. Applications using
sdk/logBatchingProcessorare impacted when an attacker can cause sustained log emission and the configured exporter or downstream collector is slow, blocked, or otherwise backpressured. The impact is limited to the embedding process but can degrade or deny service for that application.Severity
CVSS:4.0/AV:N/AC:L/AT:P/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/log)
v0.20.0Compare Source
Added
NewExportPipelineandInstallNewPipeline, setup and install the exporter in tracing and metrics pipelines. (#1373)OTEL_EXPORTER_JAEGER_AGENT_HOST,OTEL_EXPORTER_JAEGER_AGENT_PORTThese environment variables can be used to override Jaeger agent hostname and port (#1752)
ExportTimeoutwas added to batch span processor. (#1755)trace.TraceFlagsis now a defined type overbyteandWithSampled(bool) TraceFlagsandIsSampled() boolmethods have been added to it. (#1770)EventandLinkstruct types from thego.opentelemetry.io/otelpackage now include aDroppedAttributeCountfield to record the number of attributes that were not recorded due to configured limits being reached. (#1771)OnEndandForceFlushpostShutdown. (#1772)OTEL_RESOURCE_ATTRIBUTESenvironment variable and merge them with theresource.Defaultresource as well as resources provided to theTracerProviderand metricController. (#1785)WithOSTyperesource configuration option to set OS (Operating System) type resource attribute (os.type). (#1788)WithProcess*resource configuration options to set Process resource attributes. (#1788)process.pidprocess.executable.nameprocess.executable.pathprocess.command_argsprocess.ownerprocess.runtime.nameprocess.runtime.versionprocess.runtime.descriptionk8s.node.nameandk8s.node.uidattribute keys to thesemconvpackage. (#1789)OTEL_EXPORTER_OTLP_ENDPOINTOTEL_EXPORTER_OTLP_TRACES_ENDPOINTOTEL_EXPORTER_OTLP_METRICS_ENDPOINTOTEL_EXPORTER_OTLP_HEADERSOTEL_EXPORTER_OTLP_TRACES_HEADERSOTEL_EXPORTER_OTLP_METRICS_HEADERSOTEL_EXPORTER_OTLP_COMPRESSIONOTEL_EXPORTER_OTLP_TRACES_COMPRESSIONOTEL_EXPORTER_OTLP_METRICS_COMPRESSIONOTEL_EXPORTER_OTLP_TIMEOUTOTEL_EXPORTER_OTLP_TRACES_TIMEOUTOTEL_EXPORTER_OTLP_METRICS_TIMEOUTOTEL_EXPORTER_OTLP_CERTIFICATEOTEL_EXPORTER_OTLP_TRACES_CERTIFICATEOTEL_EXPORTER_OTLP_METRICS_CERTIFICATEotlpgrpc.WithTimeoutoption for configuring timeout to the otlp/gRPC exporter. (#1821)Fixed
Span.IsRecordingimplementation fromgo.opentelemetry.io/otel/sdk/tracealways returns false when not being sampled. (#1750)This means it uses the correct tag keys (
"otel.status_code","otel.status_description") and does not set the status message as a tag unless it is set on the span. (#1761)"event"key for a tag.Additionally, this tag is overridden, as specified in the OTel specification, if the event contains an attribute with that key. (#1768)
Changed
RecordErrornow records anexceptionevent to comply with the semantic convention specification. (#1492)go.opentelemetry.io/proto/otlp. (#1713)github.com/gogo/protobuftogoogle.golang.org/protobufto matchgo.opentelemetry.io/proto/otlp. (#1713)context.Contextusing its SpanContext is unified to store just the current Span.The Span's SpanContext can now self-identify as being remote or not.
This means that
"go.opentelemetry.io/otel/trace".ContextWithRemoteSpanContextwill now overwrite any existing current Span, not just existing remote Spans, and make it the current Span in acontext.Context. (#1731)"go.opentelemetry.io/otel/export/trace".SpanSnapshotis unified in a newParentfield.The existing
ParentSpanIDandHasRemoteParentfields are removed in favor of this. (#1748)ParentContextfield of the"go.opentelemetry.io/otel/sdk/trace".SamplingParametersis updated to hold acontext.Contextcontaining the parent span.This changes it to make
SamplingParametersconform with the OpenTelemetry specification. (#1749)JAEGER_ENDPOINT,JAEGER_USER,JAEGER_PASSWORDto
OTEL_EXPORTER_JAEGER_ENDPOINT,OTEL_EXPORTER_JAEGER_USER,OTEL_EXPORTER_JAEGER_PASSWORDin compliance with OTel spec (#1752)
BatchSpanProcessor.ForceFlushto abort after timeout/cancellation. (#1757)DroppedAttributeCountfield of theSpanin thego.opentelemetry.io/otelpackage now only represents the number of attributes dropped for the span itself.It no longer is a conglomerate of itself, events, and link attributes that have been dropped. (#1771)
ExportSpansin Jaeger Exporter honor context deadline. (#1773)go.opentelemetry.io/otel/sdk/export/tracepackage is merged into thego.opentelemetry.io/otel/sdk/tracepackage. (#1778)TracerProviderimplementation and enable the shutdown of the exporter. (#1800)InstallNewPipelineandNewExportPipeline) with theTracerProviderimplementation they create.This enables the caller to shutdown and flush using the related
TracerProvidermethods. (#1822)http://localhost:14250, for the collector. (#1824)WithCollectorEndpointin the Jaeger exporter to no longer accept an endpoint as an argument.The endpoint can be passed with the
CollectorEndpointOptionusing theWithEndpointfunction or by setting theOTEL_EXPORTER_JAEGER_ENDPOINTenvironment variable value appropriately. (#1824)BatchSpanProcessorfor this functionality. (#1830)NewRawExporter,NewExportPipeline, andInstallNewPipeline) no longer accept the removedOptiontype as a variadic argument. (#1830)Removed
JAEGER_SERVICE_NAME,JAEGER_DISABLED,JAEGER_TAGSThese environment variables will no longer be used to override values of the Jaeger exporter (#1752)
Spaningo.opentelemetry.io/otel/sdk/tracethat is configured to be a new root.This is unspecified behavior that the OpenTelemetry community plans to standardize in the future.
To prevent backwards incompatible changes when it is specified, these links are removed. (#1726)
Because of this
"go.opentelemetry.io/otel/trace".RemoteSpanContextFromContextis removed as it is no longer needed.Instead,
"go.opentelemetry.io/otel/trace".SpanContextFromContexcan be used to return the current Span.If needed, that Span's
SpanContext.IsRemote()can then be used to determine if it is remote or not. (#1731)HasRemoteParentfield of the"go.opentelemetry.io/otel/sdk/trace".SamplingParametersis removed.This field is redundant to the information returned from the
Remotemethod of theSpanContextheld in theParentContextfield. (#1749)trace.FlagsDebugandtrace.FlagsDeferredconstants have been removed and will be localized to the B3 propagator. (#1770)Processconfiguration,WithProcessFromEnvandProcessFromEnv, and type from the Jaeger exporter package.The information that could be configured in the
Processstruct should be configured in aResourceinstead. (#1776, #1804)WithDisabledoption from the Jaeger exporter.To disable the exporter unregister it from the
TracerProvideror use a no-operationTracerProvider. (#1806)CollectorEndpointFromEnvandWithCollectorEndpointOptionFromEnvfrom the Jaeger exporter.These functions for retrieving specific environment variable values are redundant of other internal functions and
are not intended for end user use. (#1824)
WithSDKOptionsOption.This option was used to set SDK options for the exporter creation convenience functions.
These functions are provided as a way to easily setup or install the exporter with what are deemed reasonable SDK settings for common use cases.
If the SDK needs to be configured differently, the
NewRawExporterfunction and direct setup of the SDK with the desired settings should be used. (#1825)WithBufferMaxCountandWithBatchMaxCountOptions from the Jaeger exporter are removed.The exporter no longer batches exports, instead relying on the SDK's
BatchSpanProcessorfor this functionality. (#1830)Optiontype is removed.The type is no longer used by the exporter to configure anything.
All of the previous configuration these options provided were duplicates of SDK configuration.
They have all been removed in favor of using the SDK configuration and focuses the exporter configuration to be only about the endpoints it will send telemetry to. (#1830)
Raw changes made between v0.19.0 and v0.20.0
02d8bdd(HEAD -> main, tag: v0.20.0, tag: trace/v0.20.0, tag: sdk/v0.20.0, tag: sdk/metric/v0.20.0, tag: sdk/export/metric/v0.20.0, tag: oteltest/v0.20.0, tag: metric/v0.20.0, tag: exporters/trace/zipkin/v0.20.0, tag: exporters/trace/jaeger/v0.20.0, tag: exporters/stdout/v0.20.0, tag: exporters/otlp/v0.20.0, tag: exporters/metric/prometheus/v0.20.0, tag: example/zipkin/v0.20.0, tag: example/prometheus/v0.20.0, tag: example/prom-collector/v0.20.0, tag: example/otel-collector/v0.20.0, tag: example/opencensus/v0.20.0, tag: example/namedtracer/v0.20.0, tag: example/jaeger/v0.20.0, tag: bridge/opentracing/v0.20.0, tag: bridge/opencensus/v0.20.0, upstream/main, origin/main) Release v0.20.0 (#1837)aa66fe7OS and Process resource detectors (#1788)7374d67Fix Links documents (#1835)856f5b8Add feature request issue template (#1831)0fdc3d7Remove bundler from Jaeger exporter (#1830)738ef11Fix flaky global ErrorHandler delegation test (#1829)e43d9c0Update Default Value for Jaeger Exporter Endpoint (#1824)0032bd6Fix default merging of resource attributes from environment variable (#1785)96c5e4bAdd SpanProcessor example for Span annotation on start (#1733)543c814Remove the WithSDKOptions from the Jaeger exporter (#1825)66389adUpdate function docs in sdk.go (#1826)70bc9ebAdds support for timeout on the otlp/gRPC exporter (#1821)081cc61Update Jaeger exporter convenience functions (#1822)1b9f16dRemove the WithDisabled option from Jaeger exporter (#1806)6867faaBump actions/cache from v2.1.4 to v2.1.5 (#1818)a2bf04dBuild context pipeline in Jaeger upload process (#1809)2de86f2Remove locking from Jaeger exporter shutdown/export (#1807)4f9fec2Add ExportSpans benchmark to Jaeger exporter (#1805)d9566abFix OTLP testing flake: signal connection from mock collector (#1816)a2cecb6add support for env var configuration to otlp/gRPC (#1811)d616df6(fix-1527) Fix flaky OTLP exporter reconnect test (#1814)b09df84Changes stdout to expose the*sdktrace.TracerProvider(#1800)0489060Remove options field from Jaeger exporter (#1808)6db20e0Remove the abandoned Process struct in Jaeger exporter (#1804)086abf3docs: use test example to document prometheus.InstallNewPipeline (#1796)d0cea04Bump google.golang.org/api from 0.43.0 to 0.44.0 in /exporters/trace/jaeger (#1792)99c477fFixed typo for default service name in Jaeger Exporter (#1797)95fd8f5Bump google.golang.org/grpc from 1.36.1 to 1.37.0 in /exporters/otlp (#1791)9b25164Zipkin Exporter: Use default resouce's serviceName as default serivce name (#1777) (#1786)4d141e4Add k8s.node.name and k8s.node.uid to semconv (#1789)5c99a34Fix golint issue caused by incorrect comment (#1795)c5d006cUpdate Jaeger environment variables (#1752)5843280add NewExportPipeline and InstallNewPipeline for otlp (#1373)7d8e6bdZipkin Exporter: Adjust span transformation to comply with the spec (#1688)2817c09(ro-span) Merge sdk/export/trace into sdk/trace (#1778)c61e654Refactor prometheus exporter tests to match file headers as well (#1470)23422c5Remove process config for Jaeger exporter (#1776)0d49b59Add test to check bsp ignoresOnEndandForceFlushpost Shutdown (#1772)e9aaa04Record links/events attribute drops independently (#1771)5bbfc22Make ExportSpans for Jaeger Exporter honor deadline (#1773)0786fe3(default-res) Add Bug report issue templates (#1775)3c7faceAddExportTimeoutoption to batch span processor (#1755)c6b92d5Make TraceFlags spec-compliant (#1770)ee687caBump github.com/itchyny/gojq from 0.12.2 to 0.12.3 in /internal/tools (#1774)52a2477add support for configuring tls certs via env var to otlp/HTTP (#1769)35cfbc7Update precedence of event name in Jaeger exporter (#1768)33699d2Adds semantic conventions for exceptions (#1492)928e3c3Modify ForceFlush to abort after timeout/cancellation (#1757)3947cabFix testCollectorEndpoint typo and add tag assertions in jaeger_test (#1753)ecc635dadd website docs (#1747)07a8d19Fix Jaeger span status reporting and unify tag keys (#1761)4fa35c9add partial support for env var config to otlp/HTTP (#1758)bf180d0improve OTLP/gRPC connection errors (#1737)d575865Fix span IsRecording when not sampling (#1750)20c93b0Update SamplingParameters (#1749)97501a3Update SpanSnapshot to use parent SpanContext (#1748)604b05cStore current Span instead of local and remote SpanContext in context.Context (#1731)c61f4b6Set @lizthegrey to emeritus status (#1745)b1342feBump github.com/golangci/golangci-lint in /internal/tools (#1743)54e1bd1Bump google.golang.org/api from 0.41.0 to 0.43.0 in /exporters/trace/jaeger (#1741)4d25b6aBump github.com/prometheus/client_golang from 1.9.0 to 1.10.0 in /exporters/metric/prometheus (#1740)0a47b66Bump google.golang.org/grpc from 1.36.0 to 1.36.1 in /exporters/otlp (#1739)26f006bReinstate @paivagustavo as an Approver (#1734)382c7ceRemove hasRemoteParent field from SDK span (#1728)862a5a6Remove setting error status while recording error with Span from oteltest package (#1729)6defcfdRemove links on NewRoot spans (#1726)a9b2f85upgrade thrift to v0.14.1 in jaeger exporter (#1712)5a6a854Bump google.golang.org/protobuf from 1.25.0 to 1.26.0 in /exporters/otlp (#1724)2348621Migrate to using go.opentelemetry.io/proto/otlp (#1713)5d559b4Remove makeSamplingDecision func (#1711)e24702dUpdate the TraceContext.Extract docs (#1720)9d4eb1fUpdate dates in CHANGELOG.md for 2021 releases (#1723)Configuration
📅 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.