Skip to content

[fix][sec][branch-4.0] Upgrade to Jetty 12.1.8 to address several CVEs - #25534

Merged
lhotari merged 2 commits into
apache:branch-4.0from
lhotari:branch-4.0-jetty12
Apr 20, 2026
Merged

[fix][sec][branch-4.0] Upgrade to Jetty 12.1.8 to address several CVEs#25534
lhotari merged 2 commits into
apache:branch-4.0from
lhotari:branch-4.0-jetty12

Conversation

@lhotari

@lhotari lhotari commented Apr 15, 2026

Copy link
Copy Markdown
Member

Motivation

Upgrade from Jetty 9.4.58.v20250224 to Jetty 12.1.8 to address multiple CVEs in Jetty 9.4.x:

Jetty 9.4.x is EOL and only receives commercial non-OSS support.

Breaking changes

AdditionalServlet interface change

The org.apache.pulsar.broker.web.plugin.servlet.AdditionalServlet interface has a breaking change due to the existing interface coupling directly to Jetty 9 implementation details with the use of org.eclipse.jetty.servlet.ServletHolder class. This coupling has been removed.

Java version requirement for Athenz authentication

pulsar-client-auth-athenz requires Java 17+ since it depends on Jetty. The Pulsar Client and Pulsar Admin client remain Java 8+ compatible.

Configuration changes

The Prometheus metrics provider classes for BookKeeper and ZooKeeper have been relocated. If you are using the previous defaults, update the following settings:

Config file Setting New value Old value
bookkeeper.conf statsProviderClass org.apache.pulsar.metrics.prometheus.bookkeeper.PrometheusMetricsProvider org.apache.bookkeeper.stats.prometheus.PrometheusMetricsProvider
zookeeper.conf metricsProvider.className org.apache.pulsar.metrics.prometheus.zookeeper.PrometheusMetricsProvider org.apache.zookeeper.metrics.prometheus.PrometheusMetricsProvider

Modifications

Upgrades to Jetty 12.1.8 by backporting these changes to branch-4.0:
(cherry picked from commit 39dbbf0) (#25100)
(cherry picked from commit f5fc992) (#25155)
(cherry picked from commit 7b87a6a) (#25169)

Verifying this change

This change is already covered by existing tests.

Does this pull request potentially affect one of the following parts:

  • Dependencies (add or upgrade a dependency)
  • The public API
  • The schema
  • The default values of configurations
  • The threading model
  • The binary protocol
  • The REST endpoints
  • The admin CLI options
  • The metrics
  • Anything that affects deployment

Documentation

  • doc-required

@lhotari

lhotari commented Apr 15, 2026

Copy link
Copy Markdown
Member Author

Marked as draft so that this doesn't get accidentially merged before reviews and CI passing since branch-4.0 doesn't enforce the CI to pass currently. Please review regardless of the draft status.

@lhotari
lhotari force-pushed the branch-4.0-jetty12 branch from c0eebbd to fc7d391 Compare April 16, 2026 09:04
@lhotari
lhotari marked this pull request as ready for review April 16, 2026 09:05
@lhotari
lhotari force-pushed the branch-4.0-jetty12 branch 2 times, most recently from d8f3f7a to 2164559 Compare April 16, 2026 10:14
Upgrade from Jetty 9.4.58.v20250224 to Jetty 12.1.8 to address
multiple CVEs in Jetty 9.4.x:

- CVE-2026-5795 (High) - affects <=9.4.60
- CVE-2026-2332 (High) - affects <=9.4.59
- CVE-2025-11143 (Low) - affects <=9.4.58

Jetty 9.4.x is EOL and only receives commercial non-OSS support.

This upgrade contains a breaking change in the
org.apache.pulsar.broker.web.plugin.servlet.AdditionalServlet interface
due to the existing interface coupling directly to Jetty 9 implementation
details with the use of org.eclipse.jetty.servlet.ServletHolder class in
the AdditionalServlet interface. This coupling has been removed.

pulsar-client-auth-athenz requires Java 17+ since it depends on Jetty.
The Pulsar Client and Pulsar Admin client remain Java 8+ compatible.

(cherry picked from commit 39dbbf0)
(cherry picked from commit f5fc992)
(cherry picked from commit 7b87a6a)
@lhotari
lhotari marked this pull request as ready for review April 20, 2026 07:24
@lhotari
lhotari merged commit e428972 into apache:branch-4.0 Apr 20, 2026
52 of 53 checks passed
manas-ctds pushed a commit to datastax/pulsar that referenced this pull request Apr 23, 2026
srinath-ctds pushed a commit to datastax/pulsar that referenced this pull request Apr 23, 2026
tuteng pushed a commit to streamnative/charts that referenced this pull request May 18, 2026
## Motivation
- Pulsar images that include apache/pulsar#25534 no longer include
`org.apache.bookkeeper.stats.prometheus.PrometheusMetricsProvider`.
- The charts currently render that BookKeeper stats provider by default,
which can cause BookKeeper pods to fail with `ClassNotFoundException`
when using newer Pulsar images.
- The image already carries the appropriate default BookKeeper
configuration, so the chart should avoid forcing a provider class.

## Modifications
- Removed the default `statsProviderClass` from the BookKeeper common
config template.
- Removed the default `statsProviderClass` from the BookKeeperCluster
template in both `sn-platform` and `sn-platform-slim`.

## Testing
- Rendered `sn-platform-slim` with `helm template` and confirmed no
`statsProviderClass` or BookKeeper Prometheus provider class is emitted
by the rendered BookKeeperCluster.
nodece pushed a commit to ascentstream/pulsar that referenced this pull request May 27, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant