Skip to content

fix(deps): bump the maven smoke fixture's commons-io past GHSA-78wr-2p64-hpwj - #1457

Closed
John-David Dalton (jdalton) wants to merge 1 commit into
mainfrom
fix/commons-io-cve
Closed

fix(deps): bump the maven smoke fixture's commons-io past GHSA-78wr-2p64-hpwj#1457
John-David Dalton (jdalton) wants to merge 1 commit into
mainfrom
fix/commons-io-cve

Conversation

@jdalton

@jdalton John-David Dalton (jdalton) commented Aug 1, 2026

Copy link
Copy Markdown
Collaborator

This clears the one open Dependabot alert on the repo. The Maven smoke-test fixture pinned commons-io 2.11.0, which falls in the vulnerable range for GHSA-78wr-2p64-hpwj (a denial-of-service on untrusted input to XmlStreamReader, affecting >= 2.0, < 2.14.0). It is now 2.22.0, the current release.

This is test-fixture code, not anything we ship, so there is no runtime exposure — but the alert is real and stays open until the pinned version moves.

While bumping it I noticed the version was written in five places: once in app/pom.xml and four times inside smoke-test.sh (the assertion in each of its two Python blocks, and the GAV scope file it writes). A future bump had four chances to go half-done and leave the assertions looking for a version the build no longer produces. The script now reads it from a single COMMONS_IO_VERSION variable and passes it into both Python blocks as an argument, so a bump is one edit in the pom and one in the script.

Validation
  • bash -n smoke-test.sh — clean.
  • Built the fixture end to end with the new version, using a throwaway local repository so the result did not depend on anything already cached: mvn --batch-mode -Dmaven.repo.local=$(mktemp -d) compile in .../maven-compat/project exits 0, and commons-io-2.22.0.jar resolves from Central.
  • The rewritten assertion blocks were exercised against synthetic records.tsv input: they pass on well-formed records, and still fail correctly when commons-io is absent and when a test dependency wrongly lands in a prod root.
  • Correction to an earlier version of this description: it said smoke-test.sh could not be run here because the Coana extension jar is "built elsewhere". That was wrong — scripts/maven-extension/build-jar.sh builds it from this repo. The follow-up PR stacked on this branch runs the full smoke test end to end against that jar, and both phases pass.

One thing worth knowing if you go looking: after a build, the local repository still contains commons-io 2.11.0. That is not this fixture. maven-resources-plugin and maven-site-plugin declare 2.11.0 among their own dependencies, so Maven fetches it to run the build itself. Dependabot alerts on the manifest's declared dependency, which is what this PR changes.


Note

Low Risk
Test fixture dependency and script assertions only; no production code or security-sensitive runtime paths.

Overview
Bumps the Maven compatibility smoke fixture’s commons-io dependency from 2.11.0 to 2.22.0, clearing the Dependabot alert for GHSA-78wr-2p64-hpwj. This is test-only fixture code, not shipped runtime.

The smoke script previously hard-coded that version in several places (Python checks and the populateFilesFor GAV file). It now uses a single COMMONS_IO_VERSION variable (must stay aligned with app/pom.xml) and passes it into both Python assertion blocks so future bumps need only two edits.

Reviewed by Cursor Bugbot for commit 71cadc3. Configure here.

Relationship to the other PRs

Supersedes #1449 (Dependabot's 2.11.0 → 2.14.0). That PR edits only the pom, which would leave smoke-test.sh's four hardcoded copies of the old version asserting against a jar the build no longer produces. This PR goes to the current release instead of the minimum patched version, and removes the duplication that made the trap possible.

Paired with #1458, which ports the same fix to v1.x. That branch has its own copy of the fixture with the identical pin. Dependabot only scans the default branch, so the v1.x copy never appeared in the security tab despite the branch being actively developed.

@socket-security-staging

socket-security-staging Bot commented Aug 1, 2026

Copy link
Copy Markdown

Review the following changes in direct dependencies. Learn more about Socket for GitHub.

Diff Package Supply Chain
Security
Vulnerability Quality Maintenance License
Updatedmaven/​commons-io/​commons-io@​2.11.0 ⏵ 2.22.034 -2100 +1690100100

View full report

@socket-security-staging

socket-security-staging Bot commented Aug 1, 2026

Copy link
Copy Markdown

Warning

Review the following alerts detected in dependencies.

According to your organization's Security Policy, it is recommended to resolve "Warn" alerts. Learn more about Socket for GitHub.

Action Severity Alert  (click "▶" to expand/collapse)
Warn High
Obfuscated code: maven commons-io:commons-io is 90.0% likely obfuscated

Confidence: 0.90

Location: Package overview

From: packages/cli/src/commands/manifest/scripts/test/maven-compat/project/app/pom.xmlmaven/commons-io/commons-io@2.22.0

ℹ Read more on: This package | This alert | What is obfuscated code?

Next steps: Take a moment to review the security alert above. Review the linked package source code to understand the potential risk. Ensure the package is not malicious before proceeding. If you're unsure how to proceed, reach out to your security team or ask the Socket team for help at support@socket.dev.

Suggestion: Packages should not obfuscate their code. Consider not using packages with obfuscated code.

Mark the package as acceptable risk. To ignore this alert only in this pull request, reply with the comment @SocketSecurity-Staging ignore maven/commons-io/commons-io@2.22.0. You can also ignore all packages with @SocketSecurity-Staging ignore-all. To ignore an alert for all future pull requests, use Socket's Dashboard to change the triage state of this alert.

View full report

@socket-security

socket-security Bot commented Aug 1, 2026

Copy link
Copy Markdown

Review the following changes in direct dependencies. Learn more about Socket for GitHub.

Diff Package Supply Chain
Security
Vulnerability Quality Maintenance License
Updatedmaven/​commons-io/​commons-io@​2.11.0 ⏵ 2.22.034 -2100 +1690100100

View full report

…p64-hpwj

The maven-compat fixture pinned commons-io 2.11.0, which is in the
vulnerable range for the XmlStreamReader denial-of-service advisory
(>= 2.0, < 2.14.0). Bumped to 2.22.0.

The smoke test repeated that version in four places, so a pom-only bump
would have left its assertions hunting for a jar the build no longer
produces. The assertions now match on groupId:artifactId and ignore the
version, and the scoped-materialization run derives its GAV from the
records the first run emitted. No version is written in the test at all;
the poms are the only place one appears.
@jdalton

Copy link
Copy Markdown
Collaborator Author

Closing — this change is already on the target branch. The fixture now pins commons-io 2.22.0 and the smoke test carries no hardcoded version, which is exactly what this PR did; a diff of the touched paths against the base is empty.

The follow-up that replaces those external artifacts with generated stubs is still open and has been rebased so it no longer depends on this branch.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

1 participant