CVE-2026-96237
Patch Available.
This Vulnerability has been fixed in the Never-Ending Support (NES) version offered by HeroDevs.
Overview
.NET is a free, open-source, cross-platform framework for building modern apps and powerful cloud services. It consists of a runtime and a developer platform made up of tools, programming languages, and libraries for building many different types of applications.
A remote code execution vulnerability (CVE-2026-96237) has been identified in the .NET SDK's workload commands, whose package download and integrity-repair paths do not honor NuGet Package Source Mapping. An attacker who controls any feed in a developer's NuGet configuration could have a workload package acquired from that feed instead of the trusted feed the mapping names, potentially leading to code execution.
Per CWE-829: Inclusion of Functionality from Untrusted Control Sphere, the weakness is a product that imports, requires, or includes executable functionality from a source that is outside of the intended control sphere.
This issue affects every .NET 6 SDK on Windows, Linux and macOS, including the End-of-Life .NET 6.0 line covered by NES. Only developers and build machines that configure Package Source Mapping and run dotnet workload commands are exposed; without a mapping, NuGet already searches every configured feed by design.
Details
Module Info
- Product: .NET SDK
- Affected packages: .NET SDK workload installation and integrity checking (
dotnet workload install,updateandrepair, and the advertising-manifest updater) - Affected versions:
- .NET SDK
>= 6.0.100 <= 6.0.437
- .NET SDK
- Package manager: Windows Installer, Linux packages (.deb, .rpm), archives (.zip, .tar.gz)
- GitHub repository: https://github.com/dotnet/sdk
- Published packages: Download .NET (Linux, macOS, and Windows)
- Fixed in:
- NES for .NET 6.0.47 (.NET SDK 6.0.438)
Vulnerability Info
This High-severity vulnerability is found in the .NET SDK's NuGetPackageDownloader, which the workload commands use to fetch workload packs and manifests. Package Source Mapping lets a NuGet configuration pin each package ID to the feeds trusted to serve it, and dotnet restore enforces it. The workload downloader did not: it searched every enabled feed in the configuration. A developer who had mapped workload packages to a trusted feed could still receive them from any other configured feed, including one an attacker controls, in a dependency-confusion style substitution. Exploitation requires the attacker to control a configured feed and the user to run a workload command.
The fix makes the workload paths apply the mapping the same way restore does. When a mapping is configured, the downloader keeps only the feeds mapped to the package ID and fails with a clear error when none match, instead of falling back to every feed. The NES fix also closes a related workload mapping gap that later .NET SDK releases had already fixed.
This vulnerability has been present since at least .NET SDK 6.0.
Mitigation
.NET 6 is End-of-Life and will not receive any updates from Microsoft to address this issue. For more information see .NET and .NET Core official support policy.
Users of the affected components should apply one of the following mitigations:
- Upgrade to a supported .NET SDK, one of:
- .NET SDK 8.0.132 or later (8.0.1xx feature band) or 8.0.426 or later (8.0.4xx)
- .NET SDK 9.0.122 or later (9.0.1xx feature band) or 9.0.319 or later (9.0.3xx)
- .NET SDK 10.0.113 or later (10.0.1xx feature band) or 10.0.402 or later (10.0.4xx)
- Leverage a commercial support partner like HeroDevs for post-EOL security support, including NES for .NET 6.0.47 (.NET SDK 6.0.438) or later.
Credits
Ky0toFu (@ky0tofu), as credited in Microsoft's advisory.