Skip to content

Bump xk6 OpenTelemetry trace exporters to 1.45.0 - #611

Merged
cleverchuk merged 2 commits into
mainfrom
copilot/fix-opentelemetry-logging-vulnerability
Sep 23, 2026
Merged

cleverchuk merged 2 commits into
mainfrom
copilot/fix-opentelemetry-logging-vulnerability

Conversation

Copilot AI commented Sep 22, 2026 •

Copy link
Copy Markdown
Contributor

Tl;dr: Upgrade the xk6 module’s OpenTelemetry trace exporter deps from v1.43.0 to v1.45.0 to clear CVE-2026-81870 / GHSA-8wmf-6v46-5gfg.

Context:

The vulnerability affects OpenTelemetry-Go trace exporter config logging when verbose internal diagnostics are enabled. In long-running-test-arch/xk6, the affected trace exporter modules were present as indirect deps at v1.43.0; this change lifts them to the minimum patched version and refreshes module resolution.

  • Dependency update

    • go.opentelemetry.io/otel/exporters/otlp/otlptrace → v1.45.0
    • go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc → v1.45.0
    • go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp → v1.45.0
  • Scope

    • Limited to /long-running-test-arch/xk6/go.mod and /long-running-test-arch/xk6/go.sum
    • Performed via Go tooling (go get, go mod tidy) rather than hand-editing lock state
  • Reachability Assessment

    • Reachable: Yes
    • Path: go.k6.io/k6/output -> go.k6.io/k6/lib -> go.k6.io/k6/internal/lib/trace -> otlptrace*
    • Implication: the vulnerable code is in the active dependency graph for this module, though practical exposure still depends on enabling verbose OpenTelemetry internal logging with affected exporter configuration
    • Confidence: High

Example resolved versions:

go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.45.0
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.45.0
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.45.0

Test Plan:

  • cd long-running-test-arch/xk6 && go test ./...
  • cd long-running-test-arch/xk6 && go list -m all | grep 'go.opentelemetry.io/otel/exporters/otlp/otlptrace'

Test services data

  1. e-1712644058766987264
  2. e-1712643928659124224
  3. e-1742334541200846848
  4. e-1777406072376840192
Original prompt

This section details the Dependabot vulnerability alert you should resolve

<alert_title>OpenTelemetry-Go: Exporter config logging may leak endpoint URLs in info logs</alert_title>
<alert_description>### 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 TracerProvider is 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 MarshalLog implementations that caused this configuration to be included in internal logs were introduced by a1fff3c.

Details

When sdk/trace.NewTracerProvider constructs a provider, it records a TracerProvider created internal Info event containing the provider configuration. In affected versions, the configuration's MarshalLog methods recursively include:

  1. the provider's span processors;
  2. each processor's span exporter; and
  3. for the OTLP trace exporter, its client configuration.

This causes the following values to be present in the event:

  • OTLP trace gRPC: the configured endpoint;
  • OTLP trace HTTP: the configured endpoint and the Insecure flag; and
  • Zipkin: the complete collector URL.

OpenTelemetry 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 required logr verbosity is version-dependent:

  • versions 1.5.0 through 1.14.x use V(1) for this Info event; and
  • versions 1.15.0 through 1.44.0 use V(4).

OTLP header configuration is not part of the marshaled object, so credentials supplied with WithHeaders or the corresponding environment variables are not exposed. The documented OTLP WithEndpoint input 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:

package main

import (
	"bytes"
	"context"
	"fmt"

	"github.com/go-logr/logr/funcr"
	"go.opentelemetry.io/otel"
	"go.opentelemetry.io/otel/exporters/zipkin"
	sdktrace "go.opentelemetry.io/otel/sdk/trace"
)

func main() {
	var logs bytes.Buffer
	otel.SetLogger(funcr.New(func(_, args string) {
		_, _ = logs.WriteString(args)
	}, funcr.Options{Verbosity: 4}))

	exporter, err := zipkin.New(
		"http://user:pass@zipkin.internal:9411/api/v2/spans?token=secret",
	)
	if err != nil {
		panic(err)
	}

	tp := sdktrace.NewTracerProvider(sdktrace.WithBatcher(exporter))
	_ = tp.Shutdown(context.Background())

	fmt.Println(logs.String())
}

The TracerProvider created event contains:

http://user:pass@zipkin.internal:9411/api/v2/spans?token=secret

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 3a1412d stops recursively marshaling exporter and client configuration and records their types instead.

If an immediate upgrade is not possible:

  • keep OpenTelemetry internal logging below the Info verbosity described above;
  • do ...

Co-authored-by: cleverchuk <15526124+cleverchuk@users.noreply.github.com>
Copilot AI changed the title [WIP] Fix OpenTelemetry-Go exporter config logging issue Bump xk6 OpenTelemetry trace exporters to 1.45.0 Sep 22, 2026
Copilot AI requested a review from cleverchuk September 22, 2026 19:17
@cleverchuk
cleverchuk marked this pull request as ready for review September 23, 2026 15:34
@cleverchuk
cleverchuk requested review from a team as code owners September 23, 2026 15:34
Copilot AI lite review requested due to automatic review settings September 23, 2026 15:34

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot review overview

🟢 Approval recommended

The dependency updates are scoped, reviewed, and contain no unresolved issues.

Review effort: Lite
Findings: None

What changed in this PR

Updates xk6’s OpenTelemetry OTLP trace exporters to patched version v1.45.0 to address the reported vulnerability.

Changes:

  • Upgraded three OTLP trace exporter modules.
  • Refreshed corresponding go.sum checksums.
File Description
long-running-test-arch/​xk6/​go.sum Updates checksums for the upgraded modules.
long-running-test-arch/​xk6/​go.mod Pins the patched exporter dependency versions.

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

@cleverchuk
cleverchuk merged commit dcc9c26 into main Sep 23, 2026
18 checks passed
@cleverchuk
cleverchuk deleted the copilot/fix-opentelemetry-logging-vulnerability branch September 23, 2026 15:41
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

4 participants