Skip to content

chore(deps): security upgrade for dependencies - #214

Merged
kuny0707 merged 2 commits into
tronprotocol:release_1.0.0from
0xbigapple:feature/dependency-security-upgrade
Jul 22, 2026
Merged

chore(deps): security upgrade for dependencies#214
kuny0707 merged 2 commits into
tronprotocol:release_1.0.0from
0xbigapple:feature/dependency-security-upgrade

Conversation

@0xbigapple

@0xbigapple 0xbigapple commented May 14, 2026

Copy link
Copy Markdown
Collaborator

What does this PR do?

Upgrade core dependencies to address known CVEs, and trim the dependency graph so that unused libraries no longer reach the build or downstream consumers. No public API or bytecode-level changes (JDK 8 target unchanged); this is a pure security/maintenance release.

Version upgrades

  • Vert.x 4.5.214.5.27
  • Netty 4.1.125.Final4.1.135.Final
  • BouncyCastle bcprov-jdk18on:1.78.11.84
  • gRPC 1.75.01.81.0 (protoc-gen-grpc-java kept at 1.60.0 per the existing CentOS 7 compatibility comment)

Netty dependency declaration refactor

  • Replace io.netty:netty-all:4.1.125.Final with io.netty:netty-buffer:$nettyVersion — the only netty module trident uses directly. netty-all is a 44-module aggregator; dropping it removes dozens of unused codecs (mqtt, smtp, redis, …) from the dependency graph and the published POM.
  • Align all transitive io.netty modules (from grpc-netty / vertx-core) to $nettyVersion via a resolutionStrategy.eachDependency rule (netty-tcnative-* excluded — separate versioning scheme). This replaces the previous per-module force("io.netty:netty-codec*:…") block.

Dependency graph trimming

  • Exclude jackson-core from vertx-core: trident only uses io.vertx.core.buffer.Buffer and never vertx's JSON codec, so the transitive is dead weight. Jackson is now absent from every runtime classpath and from the published POM; abi keeps a test-only jackson-databind:2.18.9 for its own tests.
  • Remove the unused shadow plugin: it is applied only to the root project (no sources, no dependencies), so shadowJar has always not used in the build, publish workflow or scripts consumes. Its four buildscript forces (commons-io, log4j-api/core, plexus-utils) existed solely to lift the plugin's vulnerable transitives and are removed with it.
  • Drop the redundant okio force: grpc-okhttp 1.81.0 already requests okio 3.4.0, which contains the CVE-2023-3635 fix the force was added for; the resolved graph now tracks the versions gRPC tests against.

Housekeeping

  • verification-metadata.xml: trust -sources/-javadoc jars and regenerate checksums for the new dependency graph (removed trees pruned).
  • README: update the dependency snippet to the new versions.
  • Version bump: 0.11.01.0.0.

Why are these changes required?

This PR has been tested by:

  • Unit Tests

Follow up

Extra details

@0xbigapple
0xbigapple force-pushed the feature/dependency-security-upgrade branch from 2772981 to 1087095 Compare July 21, 2026 10:37
- Vert.x 4.5.21 -> 4.5.27
- Netty 4.1.125.Final -> 4.1.135.Final
- BouncyCastle bcprov-jdk18on 1.78.1 -> 1.84
- gRPC 1.75.0 -> 1.81.0 (protoc-gen-grpc-java stays 1.60.0 for CentOS 7)
- Jackson jackson-core 2.18.9; buildscript log4j 2.25.4, plexus-utils 3.6.1

verification-metadata.xml: trust -sources/-javadoc jars and regenerate
checksums for the new dependency graph.

README: update dependency snippets; bump version to 1.0.0.
@0xbigapple
0xbigapple force-pushed the feature/dependency-security-upgrade branch from 1087095 to 88f0aa8 Compare July 21, 2026 10:43
@0xbigapple
0xbigapple requested a review from 317787106 July 21, 2026 11:58
- exclude jackson-core from vertx-core: only io.vertx.core.buffer.Buffer is
  used, never vertx's JSON codec, so the transitive is dead weight; abi's
  test-only jackson-databind keeps resolving its own jackson-core
- drop the okio force: grpc-okhttp 1.81.0 already requests okio 3.4.0, which
  contains the CVE-2023-3635 fix the force was added for, so the resolved
  graph now tracks the versions grpc tests against
- remove the unused shadow plugin: it is applied only to the root project,
  which has no sources and no dependencies, so shadowJar has always produced
  an empty jar (META-INF only) that nothing in the build, publish workflow or
  scripts consumes; the four buildscript forces (commons-io, log4j-api/core,
  plexus-utils) existed solely to lift its vulnerable transitives and are
  removed with it
- comment each surviving force (guava pin, checkstyle's commons-beanutils
  1.9.4 CVE-2025-48734, netty alignment) with the reason it exists
- verification-metadata.xml: drop the shadow and okio-3.9.0 dependency trees,
  add okio 3.4.0 / kotlin-stdlib 1.8.0 entries
@kuny0707
kuny0707 merged commit 626c46d into tronprotocol:release_1.0.0 Jul 22, 2026
3 checks passed
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.

5 participants