Skip to content

Clear test-fixture CVE Dependabot alerts: drop log4j 1.x + modernize Go fixtures#13915

Merged
wu-sheng merged 4 commits into
masterfrom
fix/e2e-cve-fixtures
Jun 18, 2026
Merged

Clear test-fixture CVE Dependabot alerts: drop log4j 1.x + modernize Go fixtures#13915
wu-sheng merged 4 commits into
masterfrom
fix/e2e-cve-fixtures

Conversation

@wu-sheng

Copy link
Copy Markdown
Member

Clear test-scope CVE Dependabot alerts (log4j 1.x + Go e2e fixtures)

Follow-up to #13913. Clears ~18 of the remaining open Dependabot alerts, all in e2e test fixtures (no production code).

log4j 1.xe2e-service-provider (2 alerts; log4j 1.x is EOL, one CVE has no patched release):

  • Removed log4j:log4j 1.2.17 + apm-toolkit-log4j-1.x and log4j.properties. The provider already exercises log-to-OAP through log4j2 (apm-toolkit-log4j-2.x, grpc appender) and logback in parallel, so log-reporting coverage is preserved. The log4j2 loggers now use the imported org.apache.logging.log4j.Logger (no inline FQCN). Dropped the log4j-1.x fileLogger items from the filebeat/fluentd expected files.

Go fixturesgrpc/golang.org/x/net/x/crypto/protobuf (~16 alerts; the patched releases require Go ≥ 1.23):

  • cases/go/service: go 1.24; x/crypto 0.46, x/net 0.48, grpc 1.79.3, protobuf 1.36.10; Dockerfile base -go1.19-go1.24. SW_AGENT_GO_COMMIT19a9fa9 (the skywalking-go commit that ships the go1.24 images; go1.19 images were dropped). All 5 shared go cases (go/service, profiling/trace/go, pprof/{mysql,es,banyandb}) build from this one Dockerfile.
  • cases/profiling/ebpf/network: migrated off the legacy go2sky SDK to the skywalking-go toolchain agent (auto-instruments net/http server+client). The app exit span is now auto-instrumented (GET:/provider, GoHttpClient, layer Http, peer proxy, http tags, spanid 1/parent 0) — expected/skywalking-trace.yml updated, derived from the skywalking-go net/http plugin. The eBPF sampled-record name (skywalking-<path>) is network-derived and unchanged, so the verify query and the 4xx/5xx expectations are untouched.

Not in this PR (separate follow-ups):

  • okhttp 3.14.9 in oap-server-bom — the only production-scope alert; pulled transitively by the Kubernetes client, so the real fix is a k8s-client bump.
  • protobuf in airflow/mock/requirements-replay.txt — needs an opentelemetry-proto bump too (it pins protobuf<5).

Validation

  • Java provider compiles; the fat jar bundles only log4j2 (log4j-api/core + apm-toolkit-log4j-2.x), zero log4j 1.x.

  • Both Go fixtures build locally with the skywalking-go -toolexec agent (go1.24 + grpc 1.79.3).

  • The ebpf/network trace assertion is derived from the skywalking-go plugin code; end-to-end behavior is validated by the kind/rover eBPF e2e in CI (not locally runnable).

  • Update the CHANGES log — N/A, test-fixture/CI only (not user-facing).

wu-sheng added 2 commits June 18, 2026 12:38
log4j:log4j 1.2.17 is end-of-life; one of its Dependabot alerts has NO
patched version. The e2e provider already exercises log-to-OAP through
log4j2 (apm-toolkit-log4j-2.x, GRPCLogClientAppender in log4j2.xml) and
logback in parallel, so dropping the log4j 1.x path keeps log-reporting
coverage.

- pom: remove log4j:log4j + apm-toolkit-log4j-1.x deps and the log4j.version property
- LogController/FileLogController: remove the log4j 1.x logger; the log4j2
  logger now imports org.apache.logging.log4j.Logger and uses the short name
- delete log4j.properties (log4j 1.x only)
- kafka/log filebeat+fluentd expected files: drop the log4j-1.x fileLogger items
  (collector path globs /tmp/skywalking-logs/*/, so no collector-config change)
…/protobuf)

The go/service and profiling/ebpf/network fixtures pinned vulnerable
grpc/golang.org-x/protobuf versions whose patched releases require Go >= 1.23.

go/service (skywalking-go agent fixture):
- go.mod: go 1.24; x/crypto 0.46, x/net 0.48, grpc 1.79.3, protobuf 1.36.10
- Dockerfile base image -go1.19 -> -go1.24
- script/env: SW_AGENT_GO_COMMIT -> 19a9fa9 (the skywalking-go commit that ships
  the go1.24 images; the older go1.19 images were dropped). All 5 shared go cases
  (go/service, profiling/trace/go, pprof/{mysql,es,banyandb}) build from this one
  Dockerfile, so they all move to go1.24.

profiling/ebpf/network: migrate the service off the legacy go2sky SDK to the
skywalking-go toolchain agent (auto-instruments net/http server+client):
- service.go: drop go2sky manual tracer/exit-span; blank-import skywalking-go
- go.mod: skywalking-go deps (go2sky removed); grpc 1.79.3, protobuf 1.36.10, x/net 0.48
- Dockerfile.service: golang:1.17 -> skywalking-go -go1.24 -toolexec build
- service.yaml: OAP_BACKEND_ADDR -> SW_AGENT_NAME + SW_AGENT_REPORTER_GRPC_BACKEND_SERVICE
- expected/skywalking-trace.yml: app exit span is now auto-instrumented
  (GET:/provider, GoHttpClient, layer Http, peer proxy, http tags, spanid 1/parent 0),
  derived from the skywalking-go net/http plugin. The eBPF sampled-record name
  (skywalking-<path>) is network-derived and unchanged, so the verify query and the
  4xx/5xx expectations are untouched. Validated locally for compile + toolexec
  instrumentation; the eBPF trace assertion is validated by the kind/rover CI.
@wu-sheng wu-sheng added the dependencies Pull requests that update a dependency file label Jun 18, 2026
@wu-sheng wu-sheng added this to the 11.0.0 milestone Jun 18, 2026
@wu-sheng wu-sheng added the test Test requirements about performance, feature or before release. label Jun 18, 2026
wu-sheng added 2 commits June 18, 2026 14:52
The migrated Dockerfile placed the binary at /service, but expected/process.yml
asserts the process command_line is /service/service (the original path). Restore
it so the eBPF process-discovery verify matches.
…e2e hang)

#13913 bumped logback-classic to 1.2.13, but Spring Boot's dependency management
held logback-core at 1.2.6. logback-classic 1.2.13's ThrowableProxy calls
OptionHelper.isNotEmtpy(), which only exists in logback-core 1.2.13, so logging
ANY exception threw NoSuchMethodError and killed the Tomcat request thread.

The Agent Lua e2e trigger (POST /nginx/entry/info) hits an exception-logging path:
its first request died with no response, so the e2e HTTP trigger blocked until the
60-min job timeout -- the long-mysterious 'environmental' lua hang. Other cases
(and local runs) passed only because they never logged an exception.

Pin logback-core to ${logback.version} (1.2.13). Verified: OptionHelper.isNotEmtpy
is absent in logback-core 1.2.6, present in 1.2.13.
@wu-sheng wu-sheng merged commit 277f19b into master Jun 18, 2026
434 of 438 checks passed
@wu-sheng wu-sheng deleted the fix/e2e-cve-fixtures branch June 18, 2026 09:08
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dependencies Pull requests that update a dependency file test Test requirements about performance, feature or before release.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants