chore(QTDI-3340): Bump cxf.version to fix CVE-2026-50645 - #1267
Conversation
Bump the root cxf.version property from 3.5.11 to 3.6.12 to remediate CVE-2026-50645 (CWE-400 uncontrolled resource consumption / unauthenticated DoS via unbounded attachment parts per message, CVSS 3.1 7.5 High) in Apache CXF cxf-core. This single property governs every org.apache.cxf artifact declared in the reactor's dependencyManagement, remediating all 10 modules that resolve org.apache.cxf transitively or directly (component-server, vault-client, documentation, talend-component-maven-plugin, component-starter-server, component-tools, component-tools-webapp, images/component-server-image, images/component-starter-server-image, reporting). Also fix Github.java (documentation module) to catch NoClassDefFoundError in addition to Exception when reflectively loading the optional CXF GZIPFeature class. CXF 3.6.x no longer transitively pulls in jakarta.xml.ws-api (previously supplied via cxf-rt-frontend-jaxrs's own POM), so classloading org.apache.cxf.feature.AbstractFeature subclasses (GZIPFeature's superclass hierarchy) now throws NoClassDefFoundError instead of succeeding. This mirrors the existing defensive pattern already used in component-server's ComponentServerConfiguration#init for the same CXF reflection pitfall. #time 1h Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
QTDI-3340 — Step 6A Scope & Design Review (critique-implementation)Round 1 — FindingsTarget list (from
Both files read in full; no test file was added or modified (see Test quality below). Adversarial checklistLogic & correctness
External system assumptions
Design
Test quality
Security
Findings table
Approval gate: APPROVED — no Blocker or Major findings. 1 Minor noted (non-blocking, pre-existing test-coverage gap unrelated to this change's correctness). Final verdictAPPROVED at Round 1. No further rounds required. The 1 Minor finding is carried into the PR description per the round-limit table in Signed: Claude Sonnet 4.5 |
QTDI-3340 — Step 6B Compliance Check (review-changes)🔍 Code Review — QTDI-3340Reviewed 2 files changed on branch File checklistStep 2 — Per-file review✅ Reviewed:
✅ Reviewed:
Findings
No Critical or Warning findings. Summary
Files with no findings
Exhaustive local review — all 2 changed files reviewed. Generated by AI; findings should be validated by a human reviewer. VerdictNo Critical findings — no fix/re-verify loop required. Compliance check PASSES. The single Info finding is carried into the PR description (non-blocking, pre-existing). Signed: Claude Sonnet 4.5 |
…& NoClassDefFoundError catch idiom Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
There was a problem hiding this comment.
Pull request overview
Updates the reactor’s Apache CXF baseline to remediate CVE-2026-50645, and adjusts optional CXF feature registration in the documentation generator to tolerate CXF 3.6.x classpath changes.
Changes:
- Bump root Maven property
cxf.versionfrom3.5.11to3.6.12. - Broaden the
Github.javaoptional CXFGZIPFeaturereflective load guard to also catchNoClassDefFoundError. - Document CXF bump behavior/lessons learned in
repository-knowledge.md.
Reviewed changes
Copilot reviewed 3 out of 3 changed files in this pull request and generated 1 comment.
| File | Description |
|---|---|
| repository-knowledge.md | Adds repo knowledge about CXF version bump mechanics and the reflective feature-load pitfall. |
| pom.xml | Updates cxf.version to 3.6.12. |
| documentation/src/main/java/org/talend/runtime/documentation/Github.java | Makes optional CXF feature registration resilient to NoClassDefFoundError. |
Suppressed comments (1)
documentation/src/main/java/org/talend/runtime/documentation/Github.java:81
- This catch now intentionally swallows
NoClassDefFoundErroras well asException, but it does so silently. Adding at least a debug-level log would make classpath/CXF mismatches diagnosable without changing the non-critical behavior.
} catch (final Exception | NoClassDefFoundError e) {
// not critical
}
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
|
jenkins build fail |
…r note Remove the "CXF 3.6.x bump can turn optional reflective Feature loads into NoClassDefFoundError" section. Per Dev's review-thread clarification (ozhelezniak-talend), the framing was inaccurate: the existing ComponentServerConfiguration/Github.java catch-widening idiom is a pre-existing pattern (established in commit 4b0f6f3, the 2019 JDK11 migration), not a regression newly introduced by this ticket's CXF bump. The undisputed "Single cxf.version property..." entry is left untouched. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Review round N — summary
Fixes pushed: Round summary generated by AI. Please resolve threads after verifying the fixes. Signed: Claude Sonnet 4.5 |
|
(cherry picked from commit aed270c)


0 New Issues
0 Fixed Issues
0 Accepted Issues
No data about coverage (63.30% Estimated after merge)
Requirements
Why this PR is needed?
Remediates CVE-2026-50645 (CWE-400 uncontrolled resource consumption / unauthenticated DoS via
unbounded attachment parts per message, CVSS 3.1 7.5 High) in Apache CXF
cxf-core.Jira: QTDI-3340
What does this PR adds (design/code thoughts)?
pom.xmlcxf.versionproperty from3.5.11→3.6.12. This single propertygoverns every
org.apache.cxfartifact declared in the reactor'sdependencyManagement, andremediates all 10 reactor modules that resolve
org.apache.cxf:cxf-coredirectly ortransitively (verified via
mvn dependency:tree -Dincludes=org.apache.cxf:cxf-core, reactorroot, no
-q):component-server-parent/component-server,vault-client,documentation,talend-component-maven-plugin,component-starter-server,component-tools,component-tools-webapp,images/component-server-image,images/component-starter-server-image,reporting.documentation/.../Github.java: CXF 3.6.x nolonger transitively supplies
jakarta.xml.ws-api(previously pulled in viacxf-rt-frontend-jaxrs's own POM), so reflectively loading the optional CXFGZIPFeatureclassnow throws
NoClassDefFoundError(anError, not caught by the existingcatch (Exception e))instead of succeeding. Widened the catch to
catch (Exception | NoClassDefFoundError e),mirroring the existing, identical idiom already used in
component-server'sComponentServerConfiguration#initfor the same CXF reflection pitfall.Verification performed (see full detail in the review-history PR comments):
mvn dependency:tree -Dincludes=org.apache.cxf(reactor-wide) — all 10 affected modules resolve3.6.12.mvn clean install -pl component-server-parent/component-server -am— full existing suite(183 tests), 0 failures/errors.
mvn install -DskipTests(47 modules) — BUILD SUCCESS.master(out of scope — see review comment for detail).
Out of scope (explicitly, per the approved plan):
connectors-se/connectors-ee/cloud-components— not touched, even though a quick grepshows some of those repos also declare their own direct
org.apache.cxfdependencies,independent of this repo's
cxf.versionproperty. Flagged as an out-of-scope observation only;no action taken here.
javax→jakartanamespace change) — materially larger change, not requiredto remediate this CVE.
the reactor-wide build check.
Review history (this session)
test-coverage gap on
Github.java's optional-feature load path, not introduced by this change).Exceptioncatch on the touched line, pre-dates this change, out of scope to fix per scope discipline).
Full findings posted as separate PR comments below.
AI contribution metrics
100%(4/4 changed lines from the AI-tagged commit)100%~3%word-overlap between the reconstructedoriginal AI draft and the Dev-approved final plan — likely understated: the original draft
was reconstructed as a summary (not preserved verbatim), and the core fix approach (single
cxf.versionproperty bump) was retained unchanged across the revision; only the verificationscope was widened per Dev's correction (1 module → 10 modules). Treat this figure as a
conservative lower bound; see
step-3-plan-revision.mdfor the full caveat.AI generated code
https://internal.qlik.dev/general/ways-of-working/code-reviews/#guidelines-for-ai-generated-code