$ the-wire · showcase
CVE-2026-69304 opens in ASP.NET Core; caching and validation APIs shift
By RepoJournal · Filed · About .NET
Microsoft issued a security advisory for an ASP.NET Core denial of service vulnerability, while new PRs stop request reordering in output caching and replace the validation message formatter.
Microsoft published CVE-2026-69304, a denial of service vulnerability in ASP.NET Core. Apply the advisory's update before your next deploy. [1]
Output and response caching no longer sort headers and query parameters when calculating the cache key. A cache-entry lookup used to depend on sorted values, which reordered requests on a miss or collision. The change stops that sorting, preserving original order in the key. [2] Also, the minimal-API validation message formatter interface `IValidationMessageFormatter` is dropped in favor of the base class method `ValidationAttribute.FormatMessage` now in the BCL. The interface's purpose is superseded, so code using `IValidationMessageFormatter` must migrate to the new BCL API. [3]
In Blazor, `Microsoft.AspNetCore.Components.AI` now ships through the standard ASP.NET Core release cadence while retaining independent `0.x` versioning. Previously it was not part of the standard release process. [4]
On the F# side, `parallelLimit`, `parallelDoLimit`, `sequential`, `sequentialDo` are added to `Async` and `Task` modules, and `Task.startAsyncImmediate` is added. These implement proposed helpers that were missing for controlling concurrency in async and task workflows. [5] A compiler micro-optimization inlines free-variable type-parameter folds, removing per-call partial-application closures in one of the hottest traversals, which should reduce allocation during type checking. [6]
In `dotnet/skills`, the MSTest migration skill now covers NUnit 3/4, classifying all 48 attributes in NUnit's official index, and static source-to-test pairing expands to Kotlin, Swift, PowerShell, and C++. These changes keep test projects from silently changing framework behavior during migration and broaden generated-test coverage to those languages. [7] [8]
The MAUI performance harness now pins NuGet configs consistently across commit discovery and workload installation. Previously, after .NET 12 was added, discovery could use branch-HEAD configs while installation fell back to .NET 11 feeds, so installation was not pinned to the selected package versions. The fix shares manifest resolution and uses the working-directory NuGet.config. [9]
Action items
- → Apply the CVE-2026-69304 advisory update to your ASP.NET Core deployments dotnet/aspnetcore [immediate]
- → Review any code using IValidationMessageFormatter and migrate to ValidationAttribute.FormatMessage dotnet/aspnetcore [plan]
- → Monitor output caching behavior for changes in cache-key computation dotnet/aspnetcore [monitor]
- → Adopt new Async/Task helpers (parallelLimit, sequential, startAsyncImmediate) where they fit dotnet/fsharp [plan]
References
- [1] Microsoft Security Advisory CVE-2026-69304 – ASP.NET Core Denial of Service Vulnerability dotnet/aspnetcore ↗
- [2] Stop output/response caching from reordering request values ↗ dotnet/aspnetcore
- [3] Replace IValidationMessageFormatter with ValidationAttribute.FormatMessage ↗ dotnet/aspnetcore
- [4] [Blazor] Ship Components.AI with the .NET release cadence ↗ dotnet/aspnetcore
- [5] feat(Task, Async): parallelLimit, sequential, startAsyncImmediate ↗ dotnet/fsharp
- [6] [MicroPerf] Inline the free-variable typar foldBacks (#20385) ↗ dotnet/fsharp
- [7] Add NUnit to MSTest migration skill ↗ dotnet/skills
- [8] Expand static test pairing to more languages ↗ dotnet/skills
- [9] Fix MAUI NuGet config pinning when workload feeds fall back ↗ dotnet/performance