Skip to content

fix: Bump embedded Guava to 33.8.0-jre to address CVE-2026-102554 - #246

Merged
tanderson-ld merged 1 commit into
mainfrom
tanderson/issue-242-guava-bump
Nov 3, 2026
Merged

tanderson-ld merged 1 commit into
mainfrom
tanderson/issue-242-guava-bump

Conversation

@tanderson-ld

@tanderson-ld tanderson-ld commented Nov 2, 2026 •

Copy link
Copy Markdown
Contributor

Fixes #242

Bumps the Guava version embedded (shaded) in launchdarkly-java-server-sdk from 32.0.1-jre to 33.8.0-jre, the latest release on Maven Central. The issue asked for 33.7.2 or later, which is where CVE-2026-102554 is fixed; since the library is shaded and consumers cannot override it, going straight to the latest gives the most headroom before the next scanner finding.

Why the extra two dependencies: Guava 33.x stopped depending on jsr305 and checker-qual (it migrated its own nullness annotations to JSpecify). The SDK's source imports javax.annotation.Nonnull/Nullable and org.checkerframework.checker.nullness.qual.NonNull directly and had been getting those libraries transitively through Guava, so the bump alone breaks compilation. They are now declared explicitly in libraries.internal, pinned to the same versions Guava 32.0.1 supplied (jsr305 3.0.2, checker-qual 3.33.0). Both were already embedded and shaded in the released uberjar, so this keeps the jar contents the same rather than adding anything new.

Verification done locally:

  • Guava 33.8.0-jre still ships Java 8 bytecode (class file major version 52), so the SDK's 1.8 source/target compatibility is unaffected. The SDK's Guava usage is all long-stable API (immutable collections, CacheBuilder, MoreExecutors, Joiner, ByteStreams).
  • The rebuilt uberjar's META-INF/maven/com.google.guava/guava/pom.properties (the file Trivy reads) now reports 33.8.0-jre.
  • Shaded javax/annotation and org/checkerframework class entries in the rebuilt uberjar exactly match the released 7.17.4 jar (38 and 422 entries respectively). The only addition is four shaded org/jspecify/annotations classes, Guava's new annotation dependency.
  • OSGi manifest is semantically unchanged (same Import-Package/Export-Package sets; internal dependencies are not declared there), and pom.xml is unchanged since internal dependencies are excluded from it.
  • Full unit test suite passes.

Note

Overview
Updates the embedded (shaded) Guava in launchdarkly-java-server-sdk from 32.0.1-jre to 33.8.0-jre so the default uberjar addresses CVE-2026-102554 (fixed in Guava 33.7.2+). Because consumers cannot override shaded deps, the bump targets the latest release on Maven Central.

Guava 33.x no longer pulls in jsr305 or checker-qual (nullness moved to JSpecify), but server SDK sources still import javax.annotation.* and Checker Framework nullness types that previously came transitively through Guava. The build now declares and pins jsr305 3.0.2 and checker-qual 3.33.0 in libraries.internal so compile and shading keep working with the same annotation classes as before.

Reviewed by Cursor Bugbot for commit af70c32. Bugbot is set up for automated code reviews on this repo. Configure here.

Guava 33.x no longer depends on jsr305 or checker-qual, which the SDK
uses and previously received transitively, so those are now declared
explicitly with the same versions Guava 32.0.1 supplied.
"guava": "32.0.1-jre",
"guava": "33.8.0-jre",
"jackson": "2.11.2",
"jsr305": "3.0.2",

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

For reviewers:

Guava 33.x dropped its jsr305 and checker-qual dependencies (it moved to JSpecify), and the SDK's own source imports those annotations and had been getting them transitively. I added both to libraries.internal pinned to the exact versions Guava 32.0.1 supplied (jsr305 3.0.2, checker-qual 3.33.0, they were already embedded and shaded in the released uberjar, so the jar contents stay the same rather than gaining anything new.

@tanderson-ld
tanderson-ld marked this pull request as ready for review November 2, 2026 19:22
@tanderson-ld
tanderson-ld requested a review from a team as a code owner November 2, 2026 19:22
@tanderson-ld
tanderson-ld merged commit 0d66cfb into main Nov 3, 2026
32 checks passed
@tanderson-ld
tanderson-ld deleted the tanderson/issue-242-guava-bump branch November 3, 2026 14:02
tanderson-ld pushed a commit that referenced this pull request Nov 3, 2026
🤖 I have created a release *beep* *boop*
---


##
[7.17.5](launchdarkly-java-server-sdk-7.17.4...launchdarkly-java-server-sdk-7.17.5)
(2026-11-03)


### Bug Fixes

* Bump embedded Guava to 33.8.0-jre to address CVE-2026-102554
([#246](#246))
([0d66cfb](0d66cfb))
* Deliver the terminal OFF data source status when the client is closed
([#247](#247))
([f444bee](f444bee))

---
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).

<!-- CURSOR_SUMMARY -->
---

> [!NOTE]
> **Overview**
> This **Release Please** PR cuts **launchdarkly-java-server-sdk
7.17.5** by bumping version metadata in `.release-please-manifest.json`,
`gradle.properties`, `Version.SDK_VERSION`, and adding the **7.17.5**
section to `CHANGELOG.md`.
> 
> The release notes capture two bug fixes already merged on main:
**embedded Guava is raised to 33.8.0-jre** (CVE-2026-102554), and
**`DataSourceStatusProvider` listeners get a terminal OFF status when
`LDClient` closes**, so shutdown no longer leaves apps waiting on a
final status update.
> 
> <sup>Reviewed by [Cursor Bugbot](https://cursor.com/bugbot) for commit
8d8b4d2. Bugbot is set up for automated
code reviews on this repo. Configure
[here](https://www.cursor.com/dashboard/bugbot).</sup>
<!-- /CURSOR_SUMMARY -->

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
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.

Bundled shaded Guava 32.0.1-jre is flagged by CVE-2026-102554 (fixed in 33.7.2)

2 participants