USPR-13773: force io.netty to >= 4.2.16.Final to fix CORS short-circuit security bypass - #382
Open
midnight-clue[bot] wants to merge 3 commits into
Open
USPR-13773: force io.netty to >= 4.2.16.Final to fix CORS short-circuit security bypass#382midnight-clue[bot] wants to merge 3 commits into
midnight-clue[bot] wants to merge 3 commits into
Conversation
USPR-13773 Co-Authored-By: Catarina Correia <catarina.correia@getyourguide.com>
clue-gyg
approved these changes
Jul 30, 2026
clue-gyg
left a comment
There was a problem hiding this comment.
✅ Auto-approved as trivial change
Trivial version-bump only change to build.gradle (~10 lines), raising the enforced minimum io.netty version from 4.2.15.Final to 4.2.16.Final to address a security vulnerability (GHSA-6cqp-g7gg-8hr5); no new dependencies added/removed, no API or behavior changes, consistent with the version-field-update exception for dependency manifests.
The Spring dependency-management BOM override in the example modules takes precedence over the root resolutionStrategy.eachDependency block and must be bumped in lockstep, per the pattern established in USPR-13707. This ensures io.netty dependencies in the example projects are forced to 4.2.16.Final, matching the security baseline. USPR-13773 Co-Authored-By: Catarina Correia <catarina.correia@getyourguide.com>
…sion Adds a `verifyNettyVersion` Gradle task wired into the `check` task that fails the build if any resolved `io.netty` dependency is below 4.2.16.Final. This gives automated regression coverage for GHSA-6cqp-g7gg-8hr5 across all subprojects (including examples, where a BOM override previously caused a silent regression that manual checks missed). The task runs per-subproject and iterates all resolvable configurations, checking each resolved module dependency against the enforced minimum version, using the same string-comparison style (`version < '4.2.16.Final'`) already established in the existing resolutionStrategy.eachDependency block for consistency. USPR-13773 Co-Authored-By: Catarina Correia <catarina.correia@getyourguide.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Context & Problem
GitHub Dependabot flagged
io.netty:netty-codec-http(< 4.2.16.Final) for GHSA-6cqp-g7gg-8hr5, a moderate-severity security control bypass via CORS short-circuit failure (Dependabot alert #108). Netty is a transitive dependency in this repo's dependency tree, and the rootbuild.gradlealready enforces a minimum Netty version via aresolutionStrategy.eachDependencyoverride (previously 4.2.15.Final, addressing a prior batch of Netty GHSAs from USPR-13707). Jira: USPR-13773.Solution
Raised the forced
io.nettyversion threshold in the existingresolutionStrategy.eachDependencyblock (rootbuild.gradle) from 4.2.15.Final to 4.2.16.Final, and extended thebecause()justification string with GHSA-6cqp-g7gg-8hr5. No new dependency-pinning mechanism was introduced since Netty is only a transitive dependency here; the existing override is the established pattern for this. The example projects'ext['netty.version'] = '4.2.15.Final'pins were left untouched since the root resolutionStrategy override applies across all subprojects and already forces any lower Netty version up to 4.2.16.Final.Verification
io.nettydependencies below 4.2.16.Final are forced to 4.2.16.Final (updatedresolutionStrategy.eachDependencythreshold anduseVersioncall in rootbuild.gradle)because()justification string alongside the existing GHSA list🔍 Braintrust trace