Skip to content

Clear CVE Dependabot alerts: Curator/ZooKeeper bump, assertj, e2e test fixtures#13913

Merged
wu-sheng merged 6 commits into
masterfrom
fix/clear-cve-dependabot-alerts
Jun 18, 2026
Merged

Clear CVE Dependabot alerts: Curator/ZooKeeper bump, assertj, e2e test fixtures#13913
wu-sheng merged 6 commits into
masterfrom
fix/clear-cve-dependabot-alerts

Conversation

@wu-sheng

Copy link
Copy Markdown
Member

This clears the actionable, non-Go Dependabot alerts on master. (The Go e2e-fixture alerts require a Go 1.24 agent toolchain and are handled separately via skywalking-go image work + an e2e follow-up.)

Shipped product (oap-server-bom + LICENSE + docs)

  • Apache Curator 4.3.05.9.0 (+ curator-test) and Apache ZooKeeper 3.5.73.9.5, bumped together — Curator 5.x is the line that carries the ZK 3.9.x client. Clears CVE-2023-44981 (critical). OAP is a ZooKeeper client only, so the server-side bug was never reachable, but the bundled jar tripped Dependabot. The cluster-zookeeper and configuration-zookeeper plugins use only stable Curator APIs, so no source changes were required. Operator-facing change: supported ZooKeeper server version is now 3.5+ (3.4.x dropped by Curator 5.x). dist-material/release-docs/LICENSE regenerated (curator ×4, zookeeper + jute, audience-annotations); application.yml + backend-cluster.md updated.

Build/test scope

  • assertj-core 3.20.23.27.7 — clears CVE-2026-24400 (XXE in isXmlEqualTo, unused), test scope.

e2e test fixtures (test/e2e-v2, never shipped)

  • guava → 32.0.0-jre, kafka-clients → 3.9.2 (+ removed a stale unused 2.4.1 property), log4j-core → 2.25.4, logback → 1.2.13 (the Java-8 line, not Dependabot's JDK-11 1.4.12), json-path → 2.9.0, flask → 3.1.3, protobuf → 4.25.8.

Validation

  • Full clean install of the reactor (BOM change) ✓; cluster-zookeeper + configuration-zookeeper plugin tests ✓ on Curator 5.9.0 / ZK 3.9.5; java-test-service e2e reactor compiles against the bumped deps ✓; checkstyle + license-header preflight ✓.
  • If this pull request closes/resolves/fixes an existing issue, replace the issue number. Closes #NNNN.
  • Update the CHANGES log.

wu-sheng added 2 commits June 16, 2026 23:00
…hon fixtures

Shipped (oap-server-bom + LICENSE + docs):
- Apache Curator 4.3.0 -> 5.9.0 (curator-test too) and ZooKeeper 3.5.7 -> 3.9.5,
  bumped together (Curator 5.x is the line carrying the ZK 3.9.x client). Clears
  CVE-2023-44981. OAP is a ZK client only so the server-side bug was never
  reachable, but the bundled jar tripped Dependabot. Plugins use only stable
  Curator APIs; no source changes. Supported ZooKeeper server version is now 3.5+
  (3.4.x dropped by Curator 5.x). LICENSE + cluster docs + application.yml updated.

Build/test scope:
- assertj-core 3.20.2 -> 3.27.7 (CVE-2026-24400, test scope only).

e2e test fixtures (test/e2e-v2, never shipped):
- guava -> 32.0.0-jre, kafka-clients -> 3.9.2, log4j-core -> 2.25.4,
  logback -> 1.2.13 (Java-8 line), json-path -> 2.9.0, flask -> 3.1.3,
  protobuf -> 4.25.8.

The 17 Go-fixture alerts require a go1.24 toolchain (grpc 1.79.3 / x-crypto 0.45
need go 1.24, above skywalking-go's published go1.23 ceiling) and are handled
separately: skywalking-go go1.24 enablement + e2e go fixture migration.
…entifiable)

The Dependency-licenses CI job failed because `license-eye dependency resolve`
cannot auto-identify the license of the org.apache.zookeeper:zookeeper /
zookeeper-jute 3.9.5 jars (reported as "Unknown" -> "failed to identify the
licenses"), so the resolve step exited 1 before the LICENSE diff check.

Add an explicit Apache-2.0 override in .licenserc.yaml for both artifacts,
mirroring the existing overrides (okhttp, retrofit, postgresql, ...). Verified
locally with the CI-pinned license-eye: resolve now succeeds and regenerates a
LICENSE identical to the committed one (the LICENSE content was already correct).
@wu-sheng wu-sheng added the dependencies Pull requests that update a dependency file label Jun 17, 2026
@wu-sheng wu-sheng added this to the 11.0.0 milestone Jun 17, 2026
wu-sheng added 4 commits June 17, 2026 13:51
… 3.6+

The Cluster ZK e2e tests failed (oap1 unhealthy): the OAP's new Curator 5.9.0 /
ZooKeeper 3.9.5 client cannot register its instance against the e2e's EOL
zookeeper:3.5 server. Reproduced locally: Curator 5.x ServiceDiscovery
(watchInstances=true) issues `addWatch` (persistent watch, opcode 106), which
ZooKeeper added in server 3.6.0; a 3.5 server rejects it ("Received packet at
server of unknown type 106") so the create request fails with ConnectionLoss ->
ModuleStartException -> oap1 unhealthy. Verified the same path succeeds on
zookeeper:3.6 and 3.9, fails on 3.5.

- e2e: bump zookeeper:3.5 -> zookeeper:3.9 (matches the bundled 3.9.x client) in
  cases/cluster/zk/{es,banyandb}.
- Correct the documented minimum from 3.5+ to 3.6+ (application.yml,
  backend-cluster.md, changes.md) -- persistent watches require server 3.6.0.
…r 3.6+)

Same root cause as the cluster e2e: the OAP's curator 5.9.0 client uses persistent
watches (addWatch, ZooKeeper 3.6.0+), which a zookeeper:3.5 server rejects
("unknown type 106") -> ConnectionLoss. This made the Integration test suite hang
(1h timeout, via the two zk testcontainer ITs) and the Virtual Gateway e2e fail
(oap1 unhealthy).

Bump the three remaining OAP-coordinator test servers zookeeper:3.5 -> 3.9:
- ClusterModuleZookeeperProviderFunctionalIT (cluster-zookeeper-plugin)
- ZookeeperConfigurationIT (configuration-zookeeper)
- e2e cases/gateway/docker-compose.yml

Validated locally on zk:3.9: both ITs pass (5 + 2 tests, no hang).
GitHub-hosted runners (ubuntu-24.04) ship only Docker Compose v2 and no
longer provide the legacy docker-compose v1 binary, so the infra-e2e log
collector failed on current runners. Bump the pinned infra-e2e action from
0d91769 to 68bbdec (apache/skywalking-infra-e2e#148), which switches the
collector to 'docker compose', restoring e2e container-log collection.
…ilure

A docker-compose e2e case that hangs (e.g. the trigger never gets a 2xx)
runs until the job hits timeout-minutes, which marks the job 'cancelled' —
NOT 'failure'. The existing 'if: ${{ failure() }}' diagnostic and
upload-artifact steps are therefore skipped, so a timed-out case produces
ZERO logs, making it undebuggable. On top of that, infra-e2e's own log
collector never runs when the trigger hangs (cleanup is never reached), so
the collected dir would be empty even if uploaded.

Fix the two docker-compose e2e jobs to also run on 'cancelled()', and add a
'Dump container logs' step that writes 'docker logs' for every container
directly into SW_INFRA_E2E_LOG_DIR while the containers are still alive, so
a hung/cancelled case still uploads provider/nginx/oap/banyandb logs.

The istio/k8s jobs are left unchanged (they would need a kubectl-based dump).
@wu-sheng wu-sheng merged commit 7d10e22 into master Jun 18, 2026
436 of 439 checks passed
@wu-sheng wu-sheng deleted the fix/clear-cve-dependabot-alerts branch June 18, 2026 03:34
wu-sheng added a commit that referenced this pull request Jun 18, 2026
…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 added a commit that referenced this pull request Jun 18, 2026
…Go fixtures (#13915)

### 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.x** — `e2e-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 fixtures** — `grpc`/`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_COMMIT` → `19a9fa9` (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.
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

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants