Repository navigation
Move to .NET SDK 10.0.402 and runtime 10.0.13 - #388
Merged
WilliamSmithEdward merged 1 commit intoOct 13, 2026
Merged
Conversation
.NET 10.0.13 (13 October 2026) is a security release with 44 CVEs, including CVE-2026-105016, a remote code execution vulnerability in Microsoft QUIC that MSRC rates Critical for .NET installed on Windows. Runtime 10.0.13 bundles msquic.dll 2.5.11; 10.0.12 bundled 2.5.10. The one-week cooldown is skipped for this release. global.json and the workflows' dotnet-version pins move to SDK 10.0.402. The MAUI workload set stays at 10.0.401: a workload set belongs to the 10.0.400 feature band, and none was published for 10.0.402. The shipped dependency minimums move from 10.0.12 to 10.0.13: System.Threading.RateLimiting (core), System.Text.Json (core .NET Standard 2.0 asset), and Microsoft.Extensions.DependencyInjection and Microsoft.Extensions.Hosting.Abstractions (DI package). Every lock file is regenerated with SDK 10.0.402, and each change is a 10.0.12 to 10.0.13 move, including the implicit Microsoft.NET.ILLink.Tasks and ILCompiler references. The MAUI locks need the workload to regenerate, so they mirror the same two entries with the hashes NuGet recorded in the core lock. coverlet.MTP's Microsoft.Extensions.Configuration dependencies stay at the 10.0.12 it requests. The test probes that pin an exact runtime (RuntimeCloseProbe, AppContainerSmoke and the native dependency probe template) move to 10.0.13, so they exercise the runtime the repository now builds with. The docs record what the release contains. The macOS accept fix for dotnet/runtime#121848 (backport #133567) ships in 10.0.13; EmbedIO keeps its IPv6 accept worker. The System.Net.Quic send-buffer fix (dotnet/runtime#135591) is not in 10.0.13. CONTRIBUTING, SECURITY, the MAUI validation guide and the changelog describe the new pins.
WilliamSmithEdward
force-pushed
the
codex/upgrade-dotnet-10.0.13
branch
from
October 13, 2026 21:50
a4ff58e to
f9d3c79
Compare
WilliamSmithEdward
merged commit Oct 13, 2026
e63a70e
into
codex/managed-http-engine
41 checks passed
This was referenced Oct 13, 2026
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.
Deliberate move to the .NET 10.0.13 security release, following the SDK pin in #385. The one-week cooldown is skipped at William's direction because the release carries security fixes.
Why
.NET 10.0.13 (13 October 2026) ships SDK 10.0.402 and lists 44 CVEs. The one most relevant here is CVE-2026-105016, a remote code execution vulnerability in Microsoft QUIC. MSRC rates it Critical for .NET 8 to 11 installed on Windows, where .NET bundles MsQuic. Runtime 10.0.13 bundles
msquic.dll2.5.11.159415436; 10.0.12 bundled 2.5.10.154561281. I read both versions from the official SDK zip, whose SHA-512 matchedreleases.json.Changes
global.jsonand every workflowdotnet-versionpin move to 10.0.402.rollForwardstaysdisable.android-smoke.yml,mac-catalyst.yml,scripts/maui_https_ci.ps1). Workload sets belong to the 10.0.400 feature band, and none was published for 10.0.402: the newest sets on nuget.org are10.401.0and10.401.1. Moving the set is a separate, validated step, so the MAUI apps keep runtime 10.0.12 (see Known gaps). The iOS app reports 10.0.12 in this PR's run, as it did on the engine head.System.Threading.RateLimiting, both core targets.System.Text.Json, core .NET Standard 2.0 asset.Microsoft.Extensions.DependencyInjectionandMicrosoft.Extensions.Hosting.Abstractions, DI package.Microsoft.NET.ILLink.Tasksand theILCompilerpackages in the AOT smoke.ILLink.Tasks,RateLimiting) using the content hashes NuGet recorded in the core lock. Their old 10.0.12 hashes matched the core lock's, so the method is consistent. CI's locked restores of the MAUI jobs check them.coverlet.MTPkeeps its ownMicrosoft.Extensions.Configuration*dependencies at the 10.0.12 it requests (test-only, lowest-applicable resolution).test/EmbedIO.HttpsCertificateshas no package dependencies, and re-evaluation rewrote its lock from format version 1 to version 2, the format NuGet writes now.RuntimeCloseProbe(csproj and its two version checks),AppContainerSmokeand the native dependency probe template move to runtime 10.0.13, so they exercise the runtime the repository now builds with.What 10.0.13 contains (checked against the public
v10.0.13tag)5e9f5ef8) is an ancestor ofv10.0.13. EmbedIO keeps its macOS IPv6 accept worker. Removing it is a separate decision that needs macOS evidence, and applications can still run on earlier runtimes.docs/user-reports/mac-accept-reset.mdrecords this.System.Net.Quicsend-buffer fix, dotnet/runtime#135591 (mergecba3c1d6, 13 October). It is not inv10.0.13, and a search found norelease/10.0backport. The HTTP/3 memory limitation and Track System.Net.Quic send-buffer retention and native-provider endurance #278 are unchanged. The HTTP/3 guide, the endurance record and the changelog now say so.libmsquic(CI pins 2.6.2), which a runtime update does not change. MSRC lists no Linux or macOS product for CVE-2026-105016.Rebased onto #387 (c9eb1d2)
git range-diffagainst the tested a4ff58e shows no other difference. The test-count floor, 6052, comes from the base.dotnet format whitespace test/EmbedIO.RuntimeCloseProbe --folder --verify-no-changes, the only project with C# changesscripts/check_analyzer_suppressions.pygit diff --check!stood in for it and found none. CI's static-analysis job runs the AnalyzerGuard.Validation (local, Windows, private official SDK 10.0.402, heavy slot,
-m:1)--no-http-cache.dotnet restore --locked-modepasses for every project with a committed lock that restores without a MAUI workload.scripts/test_analyzer_suppressions.py,scripts/test_analyzer_inventory.py,scripts/test_merge_review.py,scripts/check_analyzer_suppressions.pydotnet run --project tools/EmbedIO.AnalyzerGuard -c Release --no-restore -- .dotnet format whitespace EmbedIO.sln --verify-no-changesdotnet build EmbedIO.sln -c Release -p:RunAnalyzers=true -p:EnforceCodeStyleInBuild=true: 0 warnings, 0 errors.AppContainerSmokealso builds and passes format verification.dotnet pack EmbedIO.sln -c Release, thenscripts/check_packages.py: all five packages verified. The nuspec dependency groups read 10.0.13 as listed above.RuntimeCloseProbebinds to runtime 10.0.13: itsruntimeconfig.jsonnames 10.0.13 withrollForward: Disable, and it starts on the private SDK, which carries only 10.0.13.git diff --checkis clean.Known gaps
Microsoft.NET.Workload.Mono.ToolChain.Current10.0.112, which installs the 10.0.12 Mono packs. Workload set 10.0.402, published on nuget.org at 20:22Z today, lists 10.0.113 (runtime 10.0.13). It also moves the iOS, Mac Catalyst, macOS and tvOS SDK packs to 27.0.10722, the dotnet/macios ".NET 10 - Xcode 27.0 support" release, while the macOS jobs select Xcode 26.6. It also moves Android to 36.1.118. Adopting it is a separate, validated step that includes the Xcode move. The weekly updater in the follow-up PR watches for workload sets and would propose it.test/EmbedIO.Conformance/docker/Dockerfilestill pins themcr.microsoft.com/dotnet/sdk:10.0.401image digest. At 20:27Z MCR returned 404 forsdk:10.0.402, and the floatingsdk:10.0tag still served the 10.0.401 digest. Until the digest moves, the manual conformance container can't build this branch, becauseglobal.jsondisables roll-forward. No workflow uses that image. I'll move the digest in a follow-up once MCR publishes the 10.0.402 image.The roll-forward residual from #385 is now deliberate:
setup-dotnetinstalls the latest LTS runtime, 10.0.13, and that is the runtime the repository pins.Part of engine program #181 and umbrella PR #182. GitHub Projects are intentionally unused.