Description
Microsoft Security Advisory CVE-2021-26701 | .NET Core Remote Code Execution Vulnerability
Executive summary
Microsoft is releasing this security advisory to provide information about a vulnerability in .NET 5.0, .NET Core 3.1, and .NET Core 2.1. This advisory also provides guidance on what developers can do to update their applications to remove this vulnerability.
A remote code execution vulnerability exists in .NET 5 and .NET Core due to how text encoding is performed.
Announcement
Announcement for this issue can be found at dotnet/announcements#178
Mitigation factors
Microsoft has not identified any mitigating factors for this vulnerability.
Affected software
The vulnerable package is System.Text.Encodings.Web . Upgrading your package and redeploying your app should be sufficient to address this vulnerability.
Vulnerable package versions:
Any .NET 5, .NET Core, or .NET Framework based application that uses the System.Text.Encodings.Web package with a vulnerable version listed below.
Package Name | Vulnerable Versions | Secure Versions |
---|---|---|
System.Text.Encodings.Web | 4.0.0 - 4.5.0 4.6.0-4.7.1 5.0.0 |
4.5.1 4.7.2 5.0.1 |
Please validate that each of the .NET versions you are using is in support. Security updates are only provided for supported .NET versions.
How do I know if I am affected?
If you have a runtime or SDK with a version listed in affected software, you're exposed to the vulnerability.
How do I fix the issue?
To fix the issue, please install the latest version of .NET 5.0, .NET Core 3.1 or .NET Core 2.1. If you have installed one or more .NET Core SDKs through Visual Studio, Visual Studio will prompt you to update Visual Studio, which will also update your .NET Core SDKs.
You can list the versions you have installed by running the dotnet --info
command. You should see an output like the following:
.NET Core SDK (reflecting any global.json):
Version: 3.1.100
Commit: cd82f021f4
Runtime Environment:
OS Name: Windows
OS Version: 10.0.18363
OS Platform: Windows
RID: win10-x64
Base Path: C:\Program Files\dotnet\sdk\3.1.100\
Host (useful for support):
Version: 3.1.0
Commit: 65f04fb6db
.NET Core SDKs installed:
3.1.100 [C:\Program Files\dotnet\sdk]
.NET Core runtimes installed:
Microsoft.AspNetCore.App 3.1.0 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
Microsoft.NETCore.App 3.1.0 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
Microsoft.WindowsDesktop.App 3.1.0 [C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App]
To install additional .NET Core runtimes or SDKs:
https://aka.ms/dotnet-download
-
If you're using .NET 5.0, you should download and install Runtime 5.0.4 or SDK 5.0.104 (for Visual Studio 2019 v16.8) from https://dotnet.microsoft.com/download/dotnet-core/5.0.
-
If you're using .NET Core 3.1, you should download and install Runtime 3.1.13 or SDK 3.1.113 (for Visual Studio 2019 v16.4) or 3.1.407 (for Visual Studio 2019 v16.5 or later) from https://dotnet.microsoft.com/download/dotnet-core/3.1.
-
If you're using .NET Core 2.1, you should download and install Runtime 2.1.26 or SDK 2.1.522 (for Visual Studio 2019 v15.9) or 2.1.814 from https://dotnet.microsoft.com/download/dotnet-core/2.1.
.NET 5.0, .NET Core 3.1 and .NET Core 2.1 updates are also available from Microsoft Update. To access this either type "Check for updates" in your Windows search, or open Settings, choose Update & Security and then click Check for Updates.
Once you have installed the updated runtime or SDK, restart your apps for the update to take effect.
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.
Other Information
Reporting Security Issues
If you have found a potential security issue in .NET Core or .NET 5, please email details to secure@microsoft.com. Reports may qualify for the Microsoft .NET Core & .NET 5 Bounty. Details of the Microsoft .NET Bounty Program including terms and conditions are at https://aka.ms/corebounty.
Support
You can ask questions about this issue on GitHub in the .NET GitHub organization. The main repos are located at https://github.com/dotnet/runtime and https://github.com/dotnet/aspnet/. The Announcements repo (https://github.com/dotnet/Announcements) will contain this bulletin as an issue and will include a link to a discussion issue. You can ask questions in the linked discussion issue.
Disclaimer
The information provided in this advisory is provided "as is" without warranty of any kind. Microsoft disclaims all warranties, either express or implied, including the warranties of merchantability and fitness for a particular purpose. In no event shall Microsoft Corporation or its suppliers be liable for any damages whatsoever including direct, indirect, incidental, consequential, loss of business profits or special damages, even if Microsoft Corporation or its suppliers have been advised of the possibility of such damages. Some states do not allow the exclusion or limitation of liability for consequential or incidental damages so the foregoing limitation may not apply.
External Links
Revisions
V1.0 (March 09, 2021): Advisory published.
Version 1.0
Last Updated 2021-03-09
Activity
omajid commentedon Mar 9, 2021
https://msrc.microsoft.com/update-guide/en-US/vulnerability/CVE-2021-26701#securityUpdates seems a little strange...
kevbry commentedon Mar 10, 2021
Assuming this affects anyone running asp.net core 2.1 apps on full framework? Will updated dependent packages be released referencing the fixed version?
Upgrade dotnet for CVE-2021-26701
Upgrade dotnet for CVE-2021-26701
johnkors commentedon Mar 10, 2021
$ dotnet list package --vulnerable The following sources were used: https://api.nuget.org/v3/index.json The given project `VulnerableApp` has no vulnerable packages given the current sources
Shouldn't the new .NET 5 SDK feature
dotnet list package --vulnerable
report these..? Delay?Or is this the scenario where the runtime hijacks and uses a runtime version of said package instead of what is defined in csproj, and hence not reporting it?
cc @JonDouglas @drewgillies
drewgillies commentedon Mar 10, 2021
Hi @johnkors --the issue here is that there are no package vulnerabilities registered on GitHub for this CVE: https://github.com/advisories?query=CVE-2021-26701
Until a GitHub vulnerability advisory exists, the NuGet tools (including those included in the dotnet CLI) will have no information to present. But when we have an advisory in place it will surface in the tools.
[I've edited this comment down to something simpler because some of the finer points are still under discussion, but essentially this is why you don't see the advisory in the CLI--because it's not presented in GitHub]
johnkors commentedon Mar 10, 2021
So basically there is a delay going between these stages:
Thanks, @drewgillies !
drewgillies commentedon Mar 10, 2021
You're welcome! Hopefully we'll have something in place soon.
miguelcrpinto commentedon Mar 10, 2021
This announcement is a bit confusing... In the executive summary it mentions only ".NET 5.0, .NET Core 3.1, and .NET Core 2.1", then in the "Affected software" you mention "Any .NET 5, .NET Core, or .NET Framework based application".
Why was ".NET Framework" added in the "Affected software" section? Does this mean that .NET Framework applications are also vulnerable or only .Net Core Applications that target the .NET Framework?
benbhall commentedon Mar 10, 2021
A couple of things might need some clarifying.
Affected software: System.Text.Encodings.Web is tied to .NET Core, included out of the box in the runtime with
Microsoft.NETCore.App
so, the advisory is justified in being released under the headline of for .NET 5 and Core banner. However, it is also being used in .NET Framework applications via the NuGet package. Framework is mentioned once under Affected software but is there a risk of it being missed by not appearing in the headline?Removing vulnerability from applications:
and later on:
We could clarify that Framework is fixed via NuGet package update and deploy.
Then Core is just the runtime update and restart? I'm sure there are probably scenarios where Core applications are pulling the NuGet in directly too.
EDIT Apologies for some repetition. Wrote this then went into a meeting without adding comment and missed @miguelcrpinto comment.
104 remaining items
iSeiryu commentedon Jan 13, 2023
It's even an issue in .NET 7.
An older version of
System.Text.Encodings.Web
is used by https://www.nuget.org/packages/Microsoft.AspNetCore.Http.Abstractions/ which has not been updated since 2018 and still targets .NET Standard 2.0. It can be fixed by updating the transitive dependency.snickler commentedon Jan 13, 2023
Hmm, you shouldn't need to reference the Microsoft.AspNetCore.Http.Abstractions NuGet package in .NET 7, unless the project that needs it is targeting netstandard2.x?. If you need that namespace in a project that isn't an ASPNET-based one, add a FrameworkReference to it.
https://learn.microsoft.com/en-us/aspnet/core/migration/22-to-30?view=aspnetcore-3.1&tabs=visual-studio#framework-reference
iSeiryu commentedon Jan 14, 2023
@snickler We have a fairly empty solution with a few projects. Each project targets
net7.0
. Snyk flags the repository with this vulnerability https://security.snyk.io/vuln/SNYK-DOTNET-SYSTEMTEXTENCODINGSWEB-1253267snickler commentedon Jan 14, 2023
Which direct NuGet Packages are being referenced, if you don't mind me asking? I'm wondering if something you're referencing is referencing AspNetCore.Http.Abstractions transitively when it shouldn't
OptimusPi commentedon Feb 1, 2023
I have the same issue, and if I search for System.Text.Encodings.Web there are two references <4.5.1
and
Where is "Microsoft.AspNetCore.Http": "2.1.22" referenced?
Seems to come from the package ApplicationInsights AspNetCore:
What should I do?
iSeiryu commentedon Feb 14, 2023
@snickler Sorry for taking that long to reply, I don't have a direct access to the source code that has this issue.
They use this approach to global error handling: https://code-maze.com/global-error-handling-aspnetcore/
It has this line
RequestDelegate
comes fromMicrosoft.AspNetCore.Http.Abstractions
.DibyaRanjan1 commentedon Feb 22, 2023
Hi
We are getting a critical warning in our project after integrating it with the SYNK tool. Can anyone from MS upgrade the dependency of as well.
Internally It has a dependency with System.Text.Encodings.Web@4.7.1 . I think , you may need to migrate System.Text.Encodings.Web to @4.7.2, @5.0.1 . Attached the screen shot from Synk.
KalleOlaviNiemitalo commentedon Feb 22, 2023
@DibyaRanjan1, the vulnerable System.Text.Encodings.Web dependency seems to have been fixed in Microsoft.IdentityModel.Protocols.OpenIdConnect 6.26.0. See AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet#1985, AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet#1997.
DibyaRanjan1 commentedon Feb 22, 2023
@KalleOlaviNiemitalo, Thank you. I have updated the dependency to 6.26.0.
missraphie commentedon Jul 18, 2023
Hi,
we are getting a critical warning in our project after integrating it with SNYK. Can anyone from MS update the dependency.
Dependency tree: Microsoft.NET.Sdk.Functions@4.1.1 › Microsoft.Azure.WebJobs.Extensions.Http@3.0.2 › Microsoft.AspNetCore.Http@2.1.0 › Microsoft.AspNetCore.Http.Abstractions@2.1.0 › System.Text.Encodings.Web@4.5.0
You can find in the attached SNYK screenshot the relevant information.
Thank you