Skip to content

chore(deps): bump six libraries with published security fixes - #37626

Open
wezell wants to merge 3 commits into
mainfrom
issue-36546-safe-dependency-bumps
Open

wezell wants to merge 3 commits into
mainfrom
issue-36546-safe-dependency-bumps

Conversation

@wezell

@wezell wezell commented Sep 18, 2026

Copy link
Copy Markdown
Member

Why is this one PR?

Because do you know how many cycles of checks and runners and merge queues are needed to get these 6 library bumps in the code base? It would clog up our pipelines for days....

Proposed Changes

Bump six libraries that have published fixes, clearing 9 HIGH/CRITICAL findings from the
container image vulnerability scan. Every bump stays within the same major version and the
same artifact coordinates — no API change, no scope change, no new dependency.

Library From To Clears
tomcat-catalina / -jasper / -jdbc 9.0.120 9.0.122 3 CRITICAL (CVE-2026-65182, CVE-2026-65905, CVE-2026-68525)
org.postgresql:postgresql 42.7.2 42.7.13 CVE-2026-42198
dnsjava:dnsjava 3.5.3 3.6.5 CVE-2024-25638 + 2 x GHSA KeyTrap
core5:httpcore5 (+ httpcore5-h2) 5.3.4 5.4.3 CVE-2026-54399, CVE-2026-54428
com.thoughtworks.xstream:xstream 1.4.20 1.4.21 CVE-2024-47072
io.micrometer:* 1.13.10 1.15.12 CVE-2026-40984

Files: bom/application/pom.xml, parent/pom.xml. Two files, seven lines.

tomcat.version additionally drives the Tomcat distribution zip fetched by the assembly and
every tomcat-* jar, so the 9.0.122 zip and all 9.0.122 artifacts were confirmed present on
Maven Central before the bump. It does not affect a Docker base image: the product image
builds FROM dotcms/java-base (Java 25), and the docker.base.image property that names a
tomcat:* image is unreferenced dead config.

How This Was Verified

  • ./mvnw install -pl :dotcms-core --am -DskipTests -Dmaven.build.cache.enabled=false
    BUILD SUCCESS, all 12 reactor modules, 6:04.
    The build cache was disabled deliberately so the compile could not be short-circuited.
  • dependency:list confirms all six at the new versions, with no superseded version left
    anywhere
    in the tree — including all 13 tomcat-* artifacts at 9.0.122.

Not verified: runtime behaviour. No tests were run. The realistic risk areas are
micrometer (a minor bump, and it feeds the telemetry system) and Tomcat (it drives the
servlet container). Reviewers may want at least a smoke test on those two.

Checklist

  • Tests
  • Translations — n/a, no user-facing strings
  • Security Implications Contemplated — this PR is remediation; see the table above and the
    exclusions below for the deliberate non-changes

Additional Info

Refs #36546 — deliberately not a closing reference. This PR covers only the subset of that
issue that is fixable by a version bump, and the issue still has open work under PR #36548
(commons-fileupload, grpc). It should stay open.

Deliberately out of scope, with reasons:

Library Why not here
commons-fileupload, io.grpc:grpc-netty-shaded Both need code changes, not just a version change — covered by PR #36548
software.amazon.ion:ion-java 1.0.2 The published fix is at a different groupId (com.amazon.ion); the coordinate in use (software.amazon.ion) stops at 1.5.1, so the scan's "fixed in 1.10.5" is unreachable without a coordinate migration
jackson 2.17.2 Minor bump with a wide blast radius; tracked separately as #32688
graphql-java 17.5 Major version jump
elasticsearch 7.10.2 Deliberate pin, last Apache-2.0 release
org.jdom:jdom 1.1.3 No patched 1.x exists; needs a jdom2 migration with WebDAV risk
cryptacular, xmlsec Ship from the separate dotCMS/com.dotcms.dotsaml repo
tinymce Frontend, tracked separately

Also worth noting for reviewers: netty from the same issue is already fixed on main
(b6a18e74b1), so it is not part of this PR.

The scan that produced this list was run as linux/arm64. The Java and Node layers are
architecture-independent, but the apt package set can differ on linux/amd64, so the OS-layer
picture in production may differ slightly.

Clears 9 HIGH/CRITICAL findings from the container image vulnerability scan
(issue #36546) with no API, coordinate, or scope change — every bump stays
within the same major version and the same artifact coordinates.

  tomcat-catalina/jasper/jdbc   9.0.120 -> 9.0.122   (3 CRITICAL)
  org.postgresql:postgresql       42.7.2 -> 42.7.13   (CVE-2026-42198)
  dnsjava:dnsjava                 3.5.3 -> 3.6.5     (CVE-2024-25638, 2x GHSA KeyTrap)
  core5:httpcore5 (+ h2)          5.3.4 -> 5.4.3     (CVE-2026-54399, CVE-2026-54428)
  xstream:xstream               1.4.20 -> 1.4.21    (CVE-2024-47072)
  io.micrometer:*              1.13.10 -> 1.15.12   (CVE-2026-40984)

tomcat.version additionally drives the Tomcat distribution zip fetched by the
assembly and the tomcat-* jars. The 9.0.122 zip and every 9.0.122 artifact were
confirmed present on Maven Central. It does not affect a Docker base image: the
product image builds FROM dotcms/java-base (Java 25), and the docker.base.image
property that names a tomcat image is unreferenced dead config.

Deliberately out of scope: commons-fileupload and grpc (both need code changes;
PR #36548 covers them), ion-java (the fix lives at a different groupId,
com.amazon.ion, while the artifact in use stops at 1.5.1), jackson,
graphql-java, elasticsearch and jdom (breaking upgrades or deliberate pins),
and cryptacular/xmlsec (ship from the dotCMS/com.dotcms.dotsaml repo).

Verified: ./mvnw install -pl :dotcms-core --am -DskipTests succeeds, and
dependency:list resolves all six at the new versions with no superseded
version left in the tree. Committed with HUSKY=0 — the pre-commit hook cannot
run under pnpm 9, and lint-staged only matches core-web TS/JS files.
@claude

claude Bot commented Sep 18, 2026

Copy link
Copy Markdown
Contributor

Claude finished @wezell's task in 1m 29s —— View job


Code Review

  • Gathered context (diff vs origin/main, bom/parent/environment files)
  • Reviewed version bumps for compatibility & convention
  • Reviewed docker mirror change

New Issues

  • 🟡 Medium: bom/application/pom.xml:924httpcore5 is bumped to 5.4.3 while httpclient5 stays pinned at 5.5 (bom/application/pom.xml:918). httpclient5 5.5 was released/tested against the httpcore5 5.3.x line, so this introduces a minor-version skew between two artifacts that must interoperate at runtime. These are the exact versions the OpenSearch client resolves to (it excludes its own transitive httpclient5/httpcore5 at lines 903–912 and falls through to these managed entries), so the skew is live on a real request path. Assumption: httpclient5 5.5 runs against httpcore5 5.4.3 without API/binary incompatibility. What to verify: a smoke test on an HTTP-client path (OpenSearch query/index round-trip) — the PR itself notes runtime was not exercised. Non-blocking, but this is the one bump in the set that pairs two independently-pinned coordinates rather than a self-contained artifact.
  • 🟡 Medium: bom/application/pom.xml:30micrometer jumps two minor versions (1.13.101.15.12). The micrometer-bom at line 1643 keeps all io.micrometer:* artifacts consistent, so there's no internal mismatch, but 1.13→1.15 is a wider change than the other patch-level bumps and it feeds the telemetry system. The PR author already flagged this as a smoke-test candidate — worth a quick check of the /v1/usage / telemetry metrics before merge. Non-blocking.

Notes (non-blocking, no action required)

  • bom/application/pom.xml (postgresql 42.7.2→42.7.13, dnsjava 3.5.3→3.6.5, xstream 1.4.20→1.4.21): all same-major, patch/minor bumps confined to a single artifact — low risk. Correctly placed in bom/application/pom.xml per repo convention.
  • parent/pom.xml:82 (tomcat.version 9.0.120→9.0.122): editing an existing property in place, not adding a new version to the wrong file — fine. Same-minor patch bump.
  • environments/environment.properties:3-11: repointing the three test-container images to mirror.gcr.io is a test-infra change only; the inline comment documents the rationale and states the manifest digest is unchanged. No production impact. mirror.gcr.io is a Docker Hub pull-through cache, so pgvector/pgvector and opensearchproject/opensearch resolve fine.

No 🔴 Critical or 🟠 High issues. Nothing here blocks merge; the two mediums are "verify at runtime" items the PR description already anticipates. The choice to batch these into one PR is reasonable given they're all self-contained coordinate bumps within the same major version.
· issue-36546-safe-dependency-bumps

@wezell wezell added the PR : dotbot review Trigger dotbot AI code review on this PR label Sep 18, 2026
@github-actions github-actions Bot added the Area : Backend PR changes Java/Maven backend code label Sep 18, 2026

@dotCMS-Machine-User dotCMS-Machine-User left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

✅ dotbot review: all reviewer models (meta/muse-spark-1.3, ~z-ai/glm-latest) agree — patch is correct.

approved automatically by dotbot

…mirror

The PR test suite failed on a Docker Hub network timeout while pulling
opensearchproject/opensearch:1.3.6:

  [ERROR] DOCKER> Unable to pull 'opensearchproject/opensearch:1.3.6' :
    Head "https://registry-1.docker.io/v2/..." : Get
    "https://auth.docker.io/token?..." : net/http: request canceled
    (Client.Timeout exceeded while awaiting headers) (Internal Server Error: 500)

The docker-maven-plugin pulls this image on every test run, so a failure to
reach Docker Hub takes down the whole PR test phase: one job fails and the rest
are cancelled. Point it at mirror.gcr.io, Google's Docker Hub pull-through
cache, to take registry-1.docker.io and auth.docker.io out of the critical path.

Verified the mirror serves the identical image for this tag — the manifest
digest is the same as Docker Hub's, and the pull succeeds locally.

Scope: only docker.image.search, the image that actually failed. The other
images this file pins (opensearch:3.8.0 for the upgrade suite, pgvector:pg18,
wiremock:3.5.3) are also available on the mirror and can be moved the same way
if the direct pulls prove flaky too; they are left on Docker Hub here to keep
this change to the one that broke.

@dotCMS-Machine-User dotCMS-Machine-User left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

✅ dotbot review: all reviewer models (meta/muse-spark-1.3, ~z-ai/glm-latest) agree — patch is correct.

approved automatically by dotbot

@github-actions

Copy link
Copy Markdown
Contributor

dotbot code review:

  • Reviewer: meta/muse-spark-1.3 (medium)
  • Overall: patch is correct
  • New findings this run: 0
  • Prior unresolved dotbot findings still relevant: 0
  • Active findings total: 0

Test-only image reference swap to Google Docker Hub mirror for two remaining test containers; no production code or security boundary affected.

Tip: comment with "/dotbot address comments" to attempt automated fixes for unresolved review threads.

reviewed by dotbot · meta/muse-spark-1.3 · medium

@github-actions

Copy link
Copy Markdown
Contributor

dotbot code review:

  • Reviewer: ~z-ai/glm-latest (medium)
  • Overall: patch is correct
  • New findings this run: 0
  • Prior unresolved dotbot findings still relevant: 0
  • Active findings total: 0

The incremental change applies the same mirror.gcr.io pull-through mirror prefix to the two remaining Docker Hub-pulled test container images (opensearch upgrade, pgvector postgres), consistent with the previously reviewed docker.image.search change. These properties only feed docker-maven-plugin test containers in parent/pom.xml, so no production behavior is affected and the image tags are unchanged.

Tip: comment with "/dotbot address comments" to attempt automated fixes for unresolved review threads.

reviewed by dotbot · ~z-ai/glm-latest · medium

@dotCMS-Machine-User dotCMS-Machine-User left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

✅ dotbot review: all reviewer models (meta/muse-spark-1.3, ~z-ai/glm-latest) agree — patch is correct.

approved automatically by dotbot

@wezell wezell added the PR: docker image Build & push a per-PR test image to dotcms/dotcms-test label Sep 18, 2026
@github-actions

Copy link
Copy Markdown
Contributor

🐳 PR Docker test image

Latest build for commit 3dd5501 pushed to dotcms/dotcms-test:

docker pull dotcms/dotcms-test:pr-37626-issue-36546-safe-dependency-bumps
docker pull dotcms/dotcms-test:pr-37626-issue-36546-safe-dependency-bumps_3dd5501

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

AI: Safe To Rollback Area : Backend PR changes Java/Maven backend code PR: docker image Build & push a per-PR test image to dotcms/dotcms-test PR : dotbot review Trigger dotbot AI code review on this PR

Projects

Status: No status

Development

Successfully merging this pull request may close these issues.

2 participants