Skip to content

chore: pin NuGet transitives in build/ to clear 8 advisories - #585

Merged
jeremydmiller merged 1 commit into
mainfrom
fix/584-crypto-xml-advisories
Jul 29, 2026
Merged

chore: pin NuGet transitives in build/ to clear 8 advisories#585
jeremydmiller merged 1 commit into
mainfrom
fix/584-crypto-xml-advisories

Conversation

@jeremydmiller

Copy link
Copy Markdown
Member

Closes #584

What

build/Build.csproj pulled 8 advisories transitively through Nuke.Common 10.1.0:

Nuke.Common 10.1.0
  └─ NuGet.Packaging 6.12.1                      (NU1901, low:  GHSA-g4vj-cjjj-v7hg)
       └─ System.Security.Cryptography.Xml 9.0.0 (NU1903 x7, high)

Nuke.Common 10.1.0 is already the latest release, so this can't be fixed by bumping Nuke. Both transitives are pinned up directly instead:

  • System.Security.Cryptography.Xml9.0.18, the patched floor covering all seven high-severity advisories (9.0.15 clears only four of them).
  • NuGet.Packaging6.12.5, the patched release on the same 6.12.x line Nuke already builds against.

The issue only proposed the crypto pin and left the low-severity NuGet.Packaging one open pending Nuke. It turned out to be fixable the same way — 6.12.5 is a patch on the line Nuke targets, not a line move — so restore now comes back completely clean rather than one-warning clean.

Why it was invisible locally

build/Build.csproj is marked <Build Project="false" /> in jasperfx.slnx, so dotnet restore jasperfx.slnx skips it. Only ./build.sh restores it, which is why these showed up in CI logs but never in a local solution restore.

Risk

Contained. Nothing is shipped from build/ — it's the dev/CI-time Nuke orchestrator only, so adding dependencies there has zero consumer impact. build/ already opts out of central package management via its own Directory.Packages.props, so inline versions are the established pattern in that directory.

Verification

$ dotnet restore build/Build.csproj
  (no NU1901 / NU1903 — no warnings at all)

$ dotnet build build/Build.csproj
  Build succeeded. 0 Warning(s) 0 Error(s)

$ ./build.sh clean
  NUKE Execution Engine version 10.1.0 (OSX,.NETCoreApp,Version=v10.0)
  Clean  Succeeded

The Nuke host still bootstraps and runs against the pinned NuGet.Packaging. Full ./build.sh test runs in CI on this PR.

🤖 Generated with Claude Code

build/Build.csproj pulled 7 high-severity advisories (NU1903) on
System.Security.Cryptography.Xml 9.0.0 and 1 low (NU1901) on
NuGet.Packaging 6.12.1, both transitively through Nuke.Common 10.1.0.

Nuke.Common 10.1.0 is already the latest release, so bumping it isn't an
option - pin both transitives up directly instead. 9.0.18 is the patched
floor covering all seven crypto advisories (9.0.15 clears only four);
NuGet.Packaging 6.12.5 is the patched release on the same 6.12.x line
Nuke builds against.

These never showed up in a local solution restore because Build.csproj is
marked <Build Project="false" /> in jasperfx.slnx, so
`dotnet restore jasperfx.slnx` skips it entirely - they were only visible
in CI logs.

`dotnet restore build/Build.csproj` is now fully clean, and `./build.sh`
still bootstraps and runs.

Closes #584

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@jeremydmiller
jeremydmiller merged commit 36cb672 into main Jul 29, 2026
1 check 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.

7 high-severity advisories via Nuke.Common in build/Build.csproj

1 participant