You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pulsar.apache.org by "lhotari (via GitHub)" <gi...@apache.org> on 2026/06/20 09:51:20 UTC

[PR] [fix][sec] Upgrade jline to 4.2.1 and picocli to 4.7.7, drop unused jline2 [pulsar]

lhotari opened a new pull request, #26068:
URL: https://github.com/apache/pulsar/pull/26068

   ### Motivation
   
   The Pulsar CLI/shell tooling bundles JLine and picocli, managed through the Gradle
   version catalog (`gradle/libs.versions.toml`). Two things motivate this change:
   
   1. **Security.** Pulsar packages `org.jline:jline` 3.21.0. This is the JLine aggregate
      ("uber") artifact that bundles every JLine module, including `jline-remote-telnet`
      (the `org/jline/builtins/telnet/...` classes are present in the jar). That module is
      affected by two HIGH-severity (CVSS 7.5) advisories in versions `< 4.2.1`, both fixed
      in **4.2.1**:
      - [GHSA-47qp-hqvx-6r3f](https://github.com/advisories/GHSA-47qp-hqvx-6r3f) — *JLine3
        Telnet server: Unauthenticated Remote Memory Exhaustion via Unbounded Telnet
        NEW-ENVIRON Variables*
      - [GHSA-2r2c-cx56-8933](https://github.com/advisories/GHSA-2r2c-cx56-8933) — *JLine3
        Telnet server: Unauthenticated Remote DoS via Unbounded Telnet NAWS Terminal Geometry*
   
      So the 3.21.0 bundle Pulsar ships contains the vulnerable telnet classes. Pulsar does
      not start a JLine telnet server (the shell only uses JLine for line editing/completion),
      so the code is not reachable through Pulsar's own usage, but the vulnerable classes are
      still packaged in the distribution and get flagged by dependency/security scanners.
      Upgrading `jline` to 4.2.1 incorporates the fixes.
   
   2. **Maintenance / cleanup.** `picocli` (4.7.5) and `jline` (3.21.0) were behind their
      latest upstream releases, and the legacy `jline2` (`jline:jline` 2.14.6) dependency is
      no longer a build dependency of any module — it was only declared in the server
      distribution packaging. Keeping unused and outdated dependencies increases the
      maintenance and licensing surface for no benefit.
   
   ### Modifications
   
   - Upgrade `jline` (`org.jline:jline`) from 3.21.0 to 4.2.1 (latest), which fixes
     GHSA-47qp-hqvx-6r3f and GHSA-2r2c-cx56-8933.
   - Upgrade `picocli` from 4.7.5 to 4.7.7 (latest); `picocli-shell-jline3` follows the same
     version reference.
   - Remove the unused `jline2` (`jline:jline` 2.14.6) dependency from the version catalog
     and from the server distribution packaging (`distribution/server/build.gradle.kts`).
   - Remove the now-dead `jline2` shade `include`/`relocate` entries (for the `jline:` Maven
     group / `jline.*` packages) from `pulsar-functions/localrun-shaded`. These were specific
     to JLine 2; the local-runner shaded classpath does not contain any JLine artifact
     (verified via `runtimeClasspath`), so the shaded jar contents are unchanged.
   - Update the bundled `LICENSE.bin.txt` for the server and shell distributions to reflect
     the new jar versions and the removal of the JLine 2 jar.
   
   ### Verifying this change
   
   This change is a dependency upgrade / cleanup without new test coverage. It is covered by
   the existing build and distribution binary-license check, and by
   `org.apache.pulsar.shell.PulsarShellTest`, which exercises the Pulsar shell against the
   upgraded JLine. Locally verified to pass: `spotlessCheck`, `checkstyleMain`,
   `checkstyleTest`, `:pulsar-client-tools` main + test compilation, and `PulsarShellTest`
   (the only module using JLine directly) against jline 4.2.1.
   
   ### Does this pull request potentially affect one of the following parts:
   
   *If the box was checked, please highlight the changes*
   
   - [x] 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
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@pulsar.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


Re: [PR] [fix][sec] Upgrade jline to 4.2.1 and picocli to 4.7.7, drop unused jline2 [pulsar]

Posted by "lhotari (via GitHub)" <gi...@apache.org>.
lhotari merged PR #26068:
URL: https://github.com/apache/pulsar/pull/26068


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@pulsar.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org