CVE-2026-84008
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 denial of service vulnerability (CVE-2026-84008) has been identified in .NET's CMS/PKCS#7 signed-message support, SignedCms in System.Security.Cryptography.Pkcs. Microsoft describes the issue as SignedCms.CheckSignature repeatedly reparsing attacker-controlled X.509 data, causing unauthenticated quadratic CPU exhaustion.
Per CWE-407: Inefficient Algorithmic Complexity, an algorithm in a product has an inefficient worst-case computational complexity that may be detrimental to system performance and can be triggered by an attacker.
This issue affects .NET 6 on all platforms, including NES for .NET releases through 6.0.46. System.Security.Cryptography.Pkcs ships in-box in the Windows Desktop shared framework and in the ASP.NET Core shared framework's runtime, and as a standalone NuGet package. Applications are exposed when they decode and verify CMS or PKCS#7 signed messages from untrusted sources with SignedCms. Microsoft's advisory lists the System.Security.Cryptography.Pkcs package for 8.0, 9.0, 10.0 and the 11.0 previews as affected; .NET 6 is past end of life and is not assessed there.
Additionally, if you've deployed self-contained applications targeting any of the impacted versions, these applications are also vulnerable and must be recompiled and redeployed.
Details
Module Info
- Product: .NET
- Affected packages: Microsoft.WindowsDesktop.App and Microsoft.AspNetCore.App (in-box copies of System.Security.Cryptography.Pkcs); System.Security.Cryptography.Pkcs (standalone NuGet package)
- Affected versions:
- Microsoft.AspNetCore.App, Microsoft.WindowsDesktop.App
>= 6.0.0 <= 6.0.46 - System.Security.Cryptography.Pkcs
>= 6.0.0 <= 6.0.5
- Microsoft.AspNetCore.App, Microsoft.WindowsDesktop.App
- Package manager: NuGet, Windows Installer, Docker
- GitHub repository: https://github.com/dotnet/runtime
- Published packages: Download .NET (Linux, macOS, and Windows); System.Security.Cryptography.Pkcs on NuGet
- Fixed in: NES for .NET 6.0.47 (System.Security.Cryptography.Pkcs 6.0.5.1)
Vulnerability Info
This High-severity vulnerability is found in the SignedCms and SignerInfo classes of System.Security.Cryptography.Pkcs as shipped for .NET 6. To verify a signer, SignerInfo located its certificate through SignedCms.Certificates, which decodes every certificate in the message into a new collection on each call. CheckSignature does this once per signer, so a message with many signers and many certificates cost a number of certificate parses proportional to the square of its size. HeroDevs measured verification of a 400-signer message on .NET 6.0.36 at about 7.6 seconds, quadrupling each time the signer count doubled.
NES for .NET 6.0.47 applies Microsoft's fix. SignedCms decodes the certificate set once and reuses it until the set changes, and above 10 certificates it looks signers up through dictionaries keyed exactly as the original linear search, so verification returns the same certificate as before. The same message now verifies in well under a tenth of a second.
This vulnerability has been present since at least .NET 6.0 and likely earlier.
Mitigation
.NET 6 is End-of-Life and will not receive any updates 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 affected applications to one of:
- NES for .NET 6.0.47 or later
- System.Security.Cryptography.Pkcs 8.0.2 or later (.NET 8)
- System.Security.Cryptography.Pkcs 9.0.21 or later (.NET 9)
- System.Security.Cryptography.Pkcs 10.0.13 or later (.NET 10)
- Microsoft's advisory also directs .NET 8, 9 and 10 users to install the October runtime (8.0.32, 9.0.21 or 10.0.13), which updates the in-box copy.
- Leverage a commercial support partner like HeroDevs for post-EOL security support, including NES for .NET 6.0.47 or later. Applications with an explicit System.Security.Cryptography.Pkcs package reference should also move it to 6.0.5.1 from the NES feed, because NuGet otherwise keeps resolving Microsoft's unpatched 6.0.5.
Credits
Dr.-Ing Ashar Javed (@soaj1664ashar), as credited in Microsoft's advisory.