Skip to content

fix(security): suppress camel JWT CVE - #164

Merged
austinmoody merged 1 commit into
developfrom
fix/suppress-camel-jwt-cve
Sep 1, 2026
Merged

fix(security): suppress camel JWT CVE#164
austinmoody merged 1 commit into
developfrom
fix/suppress-camel-jwt-cve

Conversation

@austinmoody

@austinmoody austinmoody commented Aug 31, 2026

Copy link
Copy Markdown
Contributor

The 2026-08-31 nightly failed its post-update CVE scan for Apache Camel.

CVE-2026-66908 (CVSS 7.5) is in the Apache Camel Platform HTTP Main component: the camel-main embedded HTTP server built Vert.x JWTAuth from the keystore alone when neither jwtIssuer nor jwtAudience was set, so inbound tokens were checked only for signature and expiry. See CAMEL-24281.

This is fixed in 4.22.0. We are currently on 4.18.4 which is the latest 4.18.x

The advisory is explicit: "This behaviour is fixed only on 4.22.0 ... The fail-closed guard could not be backported." Basically on the options are back ported.

We can't upgrade (yet) to 4.22.0 because camel-spring-boot changed to Spring Boot 4 starting with 4.19.0 and Transformation Service (which uses Camel) is currently on Spring Boot 3.

There is a backlog spike/ticket being actively worked to upgrade Spring, so for now I wanted to add suppression for these Camel items so that we can get izgw-bom built.

All this said - all our our JWT handling comes from izgw-core and not from Camel. JWTAuthenticationConfigurer (the
vulnerable class) does not exist anywhere in izgw-transform which uses Camel.

The 2026-08-31 nightly failed its post-update CVE scan. The 7 camel CVEs
fixed by 4.18.4 are gone; this is a new finding published since.

CVE-2026-66908 (CVSS 7.5) is in the Apache Camel Platform HTTP Main
component: the camel-main embedded HTTP server built Vert.x JWTAuth from
the keystore alone when neither jwtIssuer nor jwtAudience was set, so
inbound tokens were checked only for signature and expiry. See
CAMEL-24281.

No upgrade clears it on our line. The advisory is explicit: "This
behaviour is fixed only on 4.22.0 ... The fail-closed guard could not be
backported." 4.18.4 is the newest 4.18.x release.

Camel 4.22.0 is not available to us. camel-spring-boot switched to Spring
Boot 4 at 4.19.0: 4.19.0 and 4.20.0 resolve Spring Boot 4.0.5, 4.21.0 and
4.22.0 resolve Spring Boot 4.1.0 with Spring Framework 7.0.8. Pinning
Spring Boot 3.5.16 underneath camel 4.22.0 resolves cleanly but does not
run — camel-spring-boot-4.22.0.jar is compiled against Spring Boot 4
package locations that do not exist in 3.5.16:

  org.springframework.boot.EnvironmentPostProcessor
    -> 3.5.16 has org.springframework.boot.env.EnvironmentPostProcessor
  org.springframework.boot.tomcat.servlet.TomcatServletWebServerFactory
    -> 3.5.16 has
       org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory

Both ship in the core spring-boot artifact, which is on the classpath at
3.5.16, so these are NoClassDefFoundError at startup, not unresolved
optional jars. izgw-core, izgw-hub, izgw-transform and v2tofhir all take
this BOM as parent and none declares its own spring-boot.version, so
moving off 3.5.x is a coordinated four-repo major upgrade.

Suppress with an expiry of 2027-02-28 to put a date on that decision.
The vulnerable code is not on the classpath: camel-platform-http-main and
io.vertx are absent from both the BOM validation tree and izgw-transform,
and camel-main-4.18.4.jar carries no JWT, platform-http or Vert.x classes.
Matched on <cve> alone. Per the suppression XSD, <cpe> is a suppress-what
element rather than a dependency selector, so keying on
cpe:/a:apache:camel would have hidden every camel finding including future
ones.

Also remove the CVE-2026-54285 opentelemetry entry added in fa8bd73. It
never matched: it was keyed on <packageUrl>, but opentelemetry-api ships
no META-INF/maven (the Java client builds with Gradle) so Dependency-Check
derives no purl for it. Rather than re-key it, let the finding stand. At
CVSS 5.3 it is below the --failOnCVSS 7 gate, so it never fails a build;
it sets HAS_CVES, which labels the nightly PR "security" and leaves it for
a human to merge. That is the intended behaviour of that gate.

Verified: xmllint --schema dependency-suppression.1.3.xsd validates.
Suppression matching itself is unverified locally — Dependency-Check needs
the NVD database and an API key. Confirm with a workflow_dispatch run.
@austinmoody
austinmoody merged commit 16a6bf3 into develop Sep 1, 2026
2 checks passed
@austinmoody
austinmoody deleted the fix/suppress-camel-jwt-cve branch September 1, 2026 11:49
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants