Repository navigation
Conversation
Rebuilding a frozen upstream revision breaks as soon as an advisory for one of its
pinned packages reaches NuGet's vulnerability feed, because upstream turns audit
advisories into build errors (src/Directory.Build.props: NuGetAudit,
NuGetAuditMode=all, NuGetAuditLevel=moderate, TreatWarningsAsErrors). The v2.338.0
linux-arm rebuild hit exactly that (Runner CI run 38847871799):
src/Sdk/Sdk.csproj : error NU1902: Warning As Error: Package
'System.Security.Cryptography.Pkcs' 10.0.12 has a known moderate severity
vulnerability, GHSA-2fmv-rv2c-59x7
src/Sdk/Sdk.csproj : error NU1903: ... known high severity vulnerability,
GHSA-846f-f764-76mx
Both advisories were published on 2026-10-13 (CVE-2026-70162, CVE-2026-84008) and
are patched in System.Security.Cryptography.Pkcs 8.0.2 / 9.0.21 / 10.0.13.
Upstream moved its pins in actions#4777, which reached main via the patch
sync (canonical#242), but revisions cut before that keep the vulnerable pins: v2.338.0 pins
10.0.12, v2.337.0 10.0.11, v2.335.x/v2.336.0 10.0.7, v2.334.0 10.0.6,
v2.332.0/v2.333.1 10.0.2 and v2.330.0/v2.331.0 8.0.0 - all affected, so all of them
now fail to build (and the pins cannot be fixed in src/, which mirrors upstream).
Runner CI and Runner CD now move the affected pins to the patched versions before
building. The seds match only versions inside the affected ranges, so the step is
a no-op on main (already 10.0.13) and on any revision that already pins a patched
version. Packages that are not handled here still fail the build, so the NuGet
audit keeps its signal.
Verified on a v2.338.0 worktree with the linux-s390x patch applied: dotnet restore
fails with the NU1902/NU1903 errors above before the step runs, and
./dev.sh layout Release linux-s390x completes with exit 0 and no NU19x diagnostics
after it.
Member
Author
|
Upstream has fixed it and our sync has patched main. The only affected revision is releases/v2.338.0 which has already been released. Waiting for the fix to be released is the proper solution. Closing. |
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.
What fails
build (linux-s390x)on run 38847871799 / job 116802375689 (brancharm-tarball-fix-2.338.0) fails in Build & Layout Release:Root cause, in order:
System.Security.Cryptography.Pkcs10.0.12.src/Directory.Build.propsenablesNuGetAuditwithNuGetAuditMode=all/NuGetAuditLevel=moderateand setsTreatWarningsAsErrors=true, so any advisory for a pinned package becomes a hard restore error (NU1902/NU1903). The audit is architecture-independent, so all five matrix jobs fail, not only s390x.2026.10.15.05.26.01,…17.26.04). That is why the same revision built without problems on 2026-10-14 and cannot be built now — the failure is time-dependent, not caused by any branch content.10.0.13). Revisions cut before that keep the vulnerable pins and can no longer be built at all: v2.338.010.0.12, v2.337.010.0.11, v2.335.x/v2.336.010.0.7, v2.334.010.0.6, v2.332.0/v2.333.110.0.2, v2.330.0/v2.331.08.0.0.What this PR does
Adds one step, Bump NuGet packages with patched advisories, to
build.yml(Runner CI) andrelease.yml(Runner CD), right after "Update DotNet required version pin". It moves the affected pins insrc/Sdk/Sdk.csprojto the versions upstream already patched:Each sed only matches a version inside an affected range, so the step is a no-op on main (already 10.0.13) and on any revision that already pins a patched version. Packages that are not listed still fail the build, so the NuGet audit keeps its signal. No source change is committed and
src/keeps mirroring upstream.Why not a patch file
patches/runner-*-sdk8-*.patchcannot carry this fix:10.0.12conflicts as soon as upstream pins10.0.13(already the case on main) and would break the sync;An alternative, if we would rather never fail CI on advisories: a committed
src/Directory.Build.rspwith-p:WarningsNotAsErrors=NU1901%3BNU1902%3BNU1903%3BNU1904, which keeps advisories as warnings and leavessrc/untouched (MSBuild environment variables cannot override the values set inDirectory.Build.props, an rsp file can). I kept the bump because it also removes the vulnerability from the rebuilt tarball and keeps the audit fatal for everything else.Testing
dotnet restore src/Sdk/Sdk.csprojfails with the two NU1902/NU1903 errors../dev.sh layout Release linux-s390xin that worktree completes with exit code 0 and noNU19xdiagnostics.git diffempty).frozen revision fails
./dev.sh layout Release linux-x64with the same NU1902/NU1903 errors, andthe same command exits 0 with no
NU19xafter this step runs. The bump is therefore required byall five runtimes, not only by s390x/ppc64le/arm: the pinned restore is architecture-independent,
and in run 38847871799 the other four jobs were cancelled by the matrix fail-fast before they
could report the same error.
12.0.0, so nothing is rewritten or downgraded as upstream moves forward and the step fades out
on its own.
Notes
arm-tarball-fix-2.338.0already carries its own temporary bump (a98f1add) so its rebuild could finish; that commit is throwaway and is not part of this PR. This PR is what keeps future release and rebuild branches working without editingsrc/per branch.