deps: Update Rust crate opentelemetry_sdk to v0.32.1 [SECURITY] - #22068
Open
oplabs-renovate[bot] wants to merge 1 commit into
Open
deps: Update Rust crate opentelemetry_sdk to v0.32.1 [SECURITY]#22068oplabs-renovate[bot] wants to merge 1 commit into
oplabs-renovate[bot] wants to merge 1 commit into
Conversation
Wiz Scan Summary
To detect these findings earlier in the dev lifecycle, try the Wiz Code extension for VS Code, JetBrains, or Visual Studio. |
falcorocks
approved these changes
Jul 28, 2026
oplabs-renovate
Bot
force-pushed
the
renovate/crate-opentelemetry_sdk-vulnerability
branch
from
July 28, 2026 13:07
b1a328a to
26abb05
Compare
oplabs-renovate
Bot
force-pushed
the
renovate/crate-opentelemetry_sdk-vulnerability
branch
from
July 29, 2026 06:51
26abb05 to
e72161b
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:
0.28.0→0.32.00.31→0.32opentelemetry_sdk has unbounded memory allocation in W3C Baggage propagation
CVE-2026-48504 / GHSA-w9wp-h8wv-79jx
More information
Details
Summary
BaggagePropagator::extract_with_contextinopentelemetry_sdkdid not enforce the W3C Baggage size limits before parsing an inboundbaggageheader. A large attacker-controlled header could cause unnecessary CPU work and short-lived heap allocations while parsing entries that would later be discarded by the SDK's baggage storage limits.The SDK now applies limits aligned with the W3C Baggage limits:
Impact
Services that accept untrusted inbound propagation headers may experience increased per-request resource usage when processing oversized
baggageheaders. This can contribute to denial-of-service risk, especially when application or transport-level header limits are absent or configured above the W3C Baggage limits.The impact is limited to availability. This issue does not expose telemetry data, modify telemetry data, or allow code execution.
Patches
Upgrade
opentelemetry_sdkto version0.32.1or later.Version
0.32.1rejectsbaggageheader values larger than 8192 bytes and limits extraction to the first 64 list-members.Workarounds
If upgrading immediately is not possible, reject or limit inbound
baggageheaders larger than 8192 bytes before invoking OpenTelemetry propagation extraction. This can be enforced at a proxy, gateway, middleware layer, or custom carrier boundary.Resources
Credit
tonghuaroot
Severity
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:LReferences
This data is provided by the GitHub Advisory Database (CC-BY 4.0).
opentelemetry_sdk has unbounded memory allocation in W3C Baggage propagation
CVE-2026-48504 / GHSA-w9wp-h8wv-79jx
More information
Details
Summary
BaggagePropagator::extract_with_contextinopentelemetry_sdkdid not enforce the W3C Baggage size limits before parsing an inboundbaggageheader. A large attacker-controlled header could cause unnecessary CPU work and short-lived heap allocations while parsing entries that would later be discarded by the SDK's baggage storage limits.The SDK now applies limits aligned with the W3C Baggage limits:
Impact
Services that accept untrusted inbound propagation headers may experience increased per-request resource usage when processing oversized
baggageheaders. This can contribute to denial-of-service risk, especially when application or transport-level header limits are absent or configured above the W3C Baggage limits.The impact is limited to availability. This issue does not expose telemetry data, modify telemetry data, or allow code execution.
Patches
Upgrade
opentelemetry_sdkto version0.32.1or later.Version
0.32.1rejectsbaggageheader values larger than 8192 bytes and limits extraction to the first 64 list-members.Workarounds
If upgrading immediately is not possible, reject or limit inbound
baggageheaders larger than 8192 bytes before invoking OpenTelemetry propagation extraction. This can be enforced at a proxy, gateway, middleware layer, or custom carrier boundary.Resources
Credit
tonghuaroot
Severity
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:LReferences
This data is provided by OSV and the GitHub Advisory Database (CC-BY 4.0).
Release Notes
open-telemetry/opentelemetry-rust (opentelemetry_sdk)
v0.32.1Released 2026-May-23
BaggagePropagatornow enforces the W3C Baggage maximum header length(8192 bytes) and maximum list-member count (64) when extracting an inbound
baggageheader. Headers exceeding 8192 bytes are dropped at thepropagator boundary; headers with more than 64 list members are
truncated to the first 64 entries. The change keeps the propagator from
parsing attacker-controlled input beyond the W3C limits instead of doing
per-entry parse, decode, and allocation work only to discard the excess
on
Baggageinsert. See https://www.w3.org/TR/baggage/#limits.SimpleSpanProcessortelemetry suppression added in 0.32.0(see #3494), which caused a
RefCell already borrowedpanic when a spanwas started and dropped inside a
get_active_span(orContext::map_current)closure. Tracked in #3510. A proper fix for the underlying
Context::map_currentre-entrancy will be investigated separately, afterwhich the suppression can be safely re-applied.
name(set viaStream::builder().with_name(...))is no longer validated against the instrument name syntax, per
spec clarification.
unitand other stream parameters continue to be validated.v0.32.0Compare Source
Released 2026-May-08
SimpleSpanProcessornow suppresses telemetry during export, preventingtelemetry-induced-telemetry feedback loops. This aligns with the existing
behavior in
BatchSpanProcessorandSimpleLogProcessor.SimpleConcurrentLogProcessorand theexperimental_logs_concurrent_log_processorfeature flag. The use cases it was designed for (ETW/user_events exporters) are
better served by modeling those exporters as processors directly.
Counter::bind()andHistogram::bind()SDK implementations thatreturn pre-bound measurement handles (
BoundCounter<T>,BoundHistogram<T>).Bound instruments resolve the attribute-to-aggregator mapping once at bind time
and cache the result, eliminating per-call HashMap lookups. View attribute
filtering is applied at bind time so the hot path stays free of per-call
attribute processing. Bound and unbound recordings with the same (post-view)
attribute set always aggregate into the same data point, including the empty
attribute set. Bound entries are never evicted during delta collection while
a handle exists — idle cycles produce no export but the tracker persists. If
bind()is called at the cardinality limit, the handle binds directly tothe overflow tracker — its writes stay on the same direct (no-lookup) hot
path and consistently land in the
otel.metric.overflow=truebucket forthe lifetime of the handle. To recover a bound handle after delta collection
frees space, drop the existing handle and call
bind()again. Gated behindthe
experimental_metrics_bound_instrumentsfeature flag. Benchmarks show~28x speedup for counter operations and ~9x for histograms.
HashMap on every collect cycle. Stale attribute sets that received no measurements
since the last collection are evicted. Note: recovery from cardinality overflow
now requires 2 collect cycles — the first marks entries as stale, the second
evicts them.
testingfeature is now runtime agnostic. #3407TokioSpanExporterandnew_tokio_test_exporterhave been renamed toTestSpanExporterandnew_test_exporter.tokio/rt,tokio/time,tokio/macros,tokio/rt-multi-thread,tokio-stream,experimental_async_runtimeInstrumentationScopeinArcinternally inSdkTracer, making tracer clones cheaper (Arc refcount increment instead of deep copy).portable-atomicforAtomicI64andAtomicU64in the metrics module. This enables compilation on 32-bit ARM targets (e.g.,armv5te-unknown-linux-gnueabi,armv7-unknown-linux-gnueabihf).Aggregationenum andStreamBuilder::with_aggregation()are now stable and no longer require thespec_unstable_metrics_viewsfeature flag.service.nameResource attribute fallback to follow OpenTelemetryspecification by using
unknown_service:<process.executable.name>format whenservice name is not explicitly configured. Previously, it only used
unknown_service.SpanExporter::shutdown()default timeout from 5 nanoseconds to 5 seconds.SpanExportertrait methodsshutdown,shutdown_with_timeout, andforce_flushnow take&selfinstead of&mut selffor consistency withLogExporterandPushMetricExporter. Implementers using interior mutability (e.g.,Mutex,AtomicBool) require no changes.Resource::get_ref(&self, key: &Key) -> Option<&Value>to allow retrieving a reference to a resource value without cloning.SdkTracer#3227:id_generator,should_sampleopentelemetry::tracetoopentelemetry_sdk::trace#3277:SamplingDecision,SamplingResultopentelemetry_sdk::traceinstead.StreamBuilder::build()now rejectsusize::MAXas a cardinality limitwith a validation error. #3506
TracerProviderBuilder::with_samplerallows to pass boxed instance ofShouldSample[#3313][3313]SpanProcessor::on_endcallsContext::current()(#3262).SpanProcessor::on_enddocumentation to clarify thatContext::current()returns the parent context, not the span's contexttraceparentheaders with unknown flags (e.g. W3C random-trace-id flag0x02) being incorrectly rejected. Unknown flags are now accepted and zeroed out as required by the W3C trace-context spec. #3435InMemoryExporterErrorhas been removed and replaced byOTelSdkError, and a newJaegerRemoteSamplerBuildErrorintroduced to replace last uses ofTraceError. #3458backing specification) is now stable and is enabled by default. #3278
v0.31.0Compare Source
Released 2025-Sep-25
Updated
opentelemetryandopentelemetry-httpdependencies to version 0.31.0.Feature: Add span flags support for
isRemoteproperty in OTLP exporter (#3153)Updated span and link transformations to properly set flags field (0x100 for local, 0x300 for remote)
TODO: Placeholder for Span processor related things
Fix: Restore true parallel exports in the async-native
BatchSpanProcessorby honoringOTEL_BSP_MAX_CONCURRENT_EXPORTS(#2959). A regression in #2685 inadvertently awaited theexport()future directly inopentelemetry-sdk/src/trace/span_processor_with_async_runtime.rsinstead of spawning it on the runtime, forcing all exports to run sequentially.Feature: Added
Cloneimplementation toSdkLoggerfor API consistency withSdkTracer(#3058).Fix: batch size accounting in BatchSpanProcessor when queue is full (#3089).
Fix: Resolved dependency issue where the "logs" feature incorrectly
required the "trace" feature flag
(#3096).
The logs functionality now operates independently, while automatic correlation
between logs and traces continues to work when the "trace" feature is
explicitly enabled.
Fix: Fix shutdown of
SimpleLogProcessorand asyncBatchLogProcessor.Default implementation of
LogProcessor::shutdown_with_timeout()will now warn to encourage users to implement proper shutdown.v0.30.0Compare Source
Released 2025-May-23
Updated
opentelemetryandopentelemetry-httpdependencies to version 0.30.0.It is now possible to add links to a
Spanvia theSpanRefthat you get froma
Context. 2959Feature: Added context based telemetry suppression. #2868
SdkLogger,SdkTracermodified to respect telemetry suppression based onContext. In other words, if the current context has telemetry suppressionenabled, then logs/spans will be ignored.
components to prevent telemetry from itself being fed back into OTel.
BatchLogProcessor,BatchSpanProcessor, andPeriodicReadermodified to setthe suppression flag in their dedicated thread, so that telemetry generated from
those threads will not be fed back into OTel.
SimpleLogProcessoralso modified to suppress telemetry before invoking exporters.
Feature: Implemented and enabled cardinality capping for Metrics by
default. #2901
configurability but has now been reintroduced with the ability to configure
the limit.
trueinstead of the string
"true".#2878
The
shutdown_with_timeoutmethod is added to SpanProcessor, SpanExporter trait and TracerProvider.The
shutdown_with_timeoutmethod is added to LogExporter trait.The
shutdown_with_timeoutmethod is added to LogProvider and LogProcessor trait.Breaking
MetricError,MetricResultno longer public (except whenspec_unstable_metrics_viewsfeature flag is enabled).OTelSdkResultshouldbe used instead, wherever applicable. #2906
Breaking change, affecting custom
MetricReaderauthors:shutdown_with_timeoutmethod is added toMetricReadertrait.collectmethod on
MetricReadermodified to returnOTelSdkResult.#2905
MetricReadertrait,
ManualReaderstruct,Pipelinestruct,InstrumentKindenum movedbehind feature flag "experimental_metrics_custom_reader".
#2928
Views improvements:
name, unit, description, and cardinality limit of a metric via views without
enabling the
spec_unstable_metrics_viewsfeature flag. Advanced viewfeatures, such as custom aggregation or attribute filtering, still require
the
spec_unstable_metrics_viewsfeature.new_view()method andViewtrait. Views can now be added by passinga function with signature
Fn(&Instrument) -> Option<Stream>to thewith_viewmethod on
MeterProviderBuilder.Introduced a builder pattern for
Streamcreation to use with views:StreamBuilderstruct with methods to configure stream propertiesStream::builder()method that returns a newStreamBuilderStreamBuilder::build()returnsResult<Stream, Box<dyn Error>>enablingproper validation.
Example of using views to rename a metric:
Aggregationenum moved behind feature flag"spec_unstable_metrics_views". This was only required when using advanced view
capabilities.
#2928
PushMetricExporterauthors:exportmethod onPushMetricExporternow accepts&ResourceMetricsinstead of
&mut ResourceMetrics.ResourceMetricsno longer exposesscope_metricsfield, but insteadoffers
scope_metrics()method that returns an iterator over the same.ScopeMetricsno longer exposesmetricsfield, but instead offersmetrics()method that returns an iterator over the same.Sum,Gauge,Histogram&ExponentialHistogramno longer exposesdata_pointsfield, but instead offersdata_points()method that returnsan iterator over the same.
SumDataPoint,GaugeDataPoint,HistogramDataPoint&ExponentialHistogramDataPointno longer exposesattributes,exemplarsfield, but instead offers
attributes(), andexemplars()method thatreturns an iterator over the same.
Exemplarno longer exposesfiltered_attributesfield, but insteadoffers
filtered_attributes()method that returns an iterator overthe same.
HistogramDataPointno longer exposesboundsandbucket_counts, butinstead offers
bounds()andbucket_counts()methods that returns aniterator over the same.
Metricno longer exposesname,description,unit,datafields, butinstead offers
name(),description(),unit(), anddata()accessor methods.ResourceMetricsno longer exposesresourcefield, but instead offersa
resource()accessor method.ScopeMetricsno longer exposesscopefield, but instead offersa
scope()accessor method.v0.29.0Compare Source
Released 2025-Mar-21
opentelemetrydependency to 0.29.opentelemetry-httpdependency to 0.29.Runtimetrait has been simplified and refined. See the #2641for the changes.
async-stdsupport forRuntime, asasync-stdcrate is deprecated.MeterProviderBuilder::with_resource,TracerProviderBuilder::with_resource,LoggerProviderBuilder::with_resourceare now additive (#2677).ExportErrortrait fromopentelemetry::trace::ExportErrortoopentelemetry_sdk::export::ExportErrorTraceErrorenum fromopentelemetry::trace::TraceErrortoopentelemetry_sdk::trace::TraceErrorTraceResulttype alias fromopentelemetry::trace::TraceResulttoopentelemetry_sdk::trace::TraceResultforce_flush()inPushMetricExportersynchronousSpanExportertrait method signature:to
This affects anyone who writes custom exporters, as custom implementations of SpanExporter
should now define export as an
async fn:Breaking The SpanExporter::export() method no longer requires a mutable reference to self.
Before:
After:
Custom exporters will need to internally synchronize any mutable state, if applicable.
Breaking The
shutdown_with_timeoutmethod is added to MetricExporter trait. This is breaking change for customMetricExporterauthors.Bug Fix:
BatchLogProcessornow correctly callsshutdownon the exporterwhen its
shutdownis invoked.Reduced some info level logs to debug
Breaking for custom LogProcessor/Exporter authors: Changed
nameparameter from
&strtoOption<&str>inevent_enabledmethod on theLogProcessorandLogExportertraits.SdkLoggerno longer passes itsscopename but instead passes the incomingnamewhen invokingevent_enabledon processors.Breaking for custom LogExporter authors:
shutdown()method inLogExportertrait no longer requires a mutable ref toself. If the exporterneeds to mutate state, it should rely on interior mutability.
2764
Breaking (Affects custom Exporter/Processor authors only) Removed
opentelemetry_sdk::logs::error::{LogError, LogResult}. These were notintended to be public. If you are authoring custom processor/exporters, use
opentelemetry_sdk::error::OTelSdkErrorandopentelemetry_sdk::error::OTelSdkResult.2790
Breaking for custom
LogProcessorauthors: Changedset_resourceto require mutable ref.
fn set_resource(&mut self, _resource: &Resource) {}Breaking: InMemoryExporter's return type change.
TraceResult<Vec<SpanData>>toResult<Vec<SpanData>, InMemoryExporterError>MetricResult<Vec<ResourceMetrics>>toResult<Vec<ResourceMetrics>, InMemoryExporterError>LogResult<Vec<LogDataWithResource>>toResult<Vec<LogDataWithResource>, InMemoryExporterError>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 these updates again.
This PR has been generated by Mend Renovate.