Skip to content

Microsoft Security Advisory CVE-2021-26701 | .NET Core Remote Code Execution Vulnerability #49377

Closed
@rbhanda

Description

@rbhanda
Collaborator

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

.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

CVE-2021-26701

Revisions

V1.0 (March 09, 2021): Advisory published.

Version 1.0

Last Updated 2021-03-09

Activity

ghost added
untriagedNew issue has not been triaged by the area owner
on Mar 9, 2021
omajid

omajid commented on Mar 9, 2021

@omajid
Member

https://msrc.microsoft.com/update-guide/en-US/vulnerability/CVE-2021-26701#securityUpdates seems a little strange...

  • It says the updates for .NET Core 2.1, 3.1 and .NET 5 were released in February
  • The link to release notes is broken
kevbry

kevbry commented on Mar 10, 2021

@kevbry

Assuming this affects anyone running asp.net core 2.1 apps on full framework? Will updated dependent packages be released referencing the fixed version?

added a commit that references this issue on Mar 10, 2021
added a commit that references this issue on Mar 10, 2021
johnkors

johnkors commented on Mar 10, 2021

@johnkors
$ dotnet --list-runtimes
Microsoft.AspNetCore.App 3.1.3 [/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App]
Microsoft.NETCore.App 3.1.3 [/usr/local/share/dotnet/shared/Microsoft.NETCore.App]
<Project Sdk="Microsoft.NET.Sdk.Web">
  <PropertyGroup>
    <TargetFramework>netcoreapp3.1</TargetFramework>
  </PropertyGroup>
  <ItemGroup>
    <PackageReference Include="System.Text.Encodings.Web" Version="4.6.0" />
  </ItemGroup>
</Project>
$ 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

drewgillies commented on Mar 10, 2021

@drewgillies

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

johnkors commented on Mar 10, 2021

@johnkors

So basically there is a delay going between these stages:

  1. Reported as CVE https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-26701
  2. GitHub issue announcement, with affected & fix (like the one here)
  3. It appears as a GitHub advisory, shows in CLI

Thanks, @drewgillies !

drewgillies

drewgillies commented on Mar 10, 2021

@drewgillies

You're welcome! Hopefully we'll have something in place soon.

miguelcrpinto

miguelcrpinto commented on Mar 10, 2021

@miguelcrpinto

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

benbhall commented on Mar 10, 2021

@benbhall
Contributor

A couple of things might need some clarifying.

  1. 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?

  2. Removing vulnerability from applications:

Upgrading your package and redeploying your app should be sufficient to address this vulnerability.

and later on:

To fix the issue, please install the latest version of .NET 5.0, .NET Core 3.1 or .NET Core 2.1.
...
Once you have installed the updated runtime or SDK, restart your apps for the update to take effect.

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

added this to the 8.0.0 milestone on Dec 27, 2022
iSeiryu

iSeiryu commented on Jan 13, 2023

@iSeiryu

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

snickler commented on Jan 13, 2023

@snickler
Contributor

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.

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

iSeiryu commented on Jan 14, 2023

@iSeiryu

@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-1253267

snickler

snickler commented on Jan 14, 2023

@snickler
Contributor

@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-1253267

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

OptimusPi commented on Feb 1, 2023

@OptimusPi

@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-1253267

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

I have the same issue, and if I search for System.Text.Encodings.Web there are two references <4.5.1

"Microsoft.AspNetCore.Http.Abstractions/2.1.1": {
        "type": "package",
        "dependencies": {
          "Microsoft.AspNetCore.Http.Features": "2.1.1",
          "System.Text.Encodings.Web": "4.5.0"
        },
        "compile": {
          "lib/netstandard2.0/Microsoft.AspNetCore.Http.Abstractions.dll": {}
        },
        "runtime": {
          "lib/netstandard2.0/Microsoft.AspNetCore.Http.Abstractions.dll": {}
        }
      },

and

"Microsoft.AspNetCore.WebUtilities/2.1.1": {
        "type": "package",
        "dependencies": {
          "Microsoft.Net.Http.Headers": "2.1.1",
          "System.Text.Encodings.Web": "4.5.0"
        },
        "compile": {
          "lib/netstandard2.0/Microsoft.AspNetCore.WebUtilities.dll": {}
        },
        "runtime": {
          "lib/netstandard2.0/Microsoft.AspNetCore.WebUtilities.dll": {}
        }
      },

Where is "Microsoft.AspNetCore.Http": "2.1.22" referenced?

Microsoft.ApplicationInsights.AspNetCore/2.21.0
Microsoft.AspNetCore.Hosting/2.1.1
Microsoft.AspNetCore.Mvc.Core/1.0.4
Microsoft.AspNetCore.Mvc.Core/2.1.0
Microsoft.Azure.WebJobs.Extensions.Http/3.0.2
etc.

Seems to come from the package ApplicationInsights AspNetCore:

"Microsoft.ApplicationInsights.AspNetCore/2.21.0": {
        "dependencies": {
          "Microsoft.ApplicationInsights": "2.21.0",
          "Microsoft.ApplicationInsights.DependencyCollector": "2.21.0",
          "Microsoft.ApplicationInsights.EventCounterCollector": "2.21.0",
          "Microsoft.ApplicationInsights.PerfCounterCollector": "2.21.0",
          "Microsoft.ApplicationInsights.WindowsServer": "2.21.0",
          "Microsoft.ApplicationInsights.WindowsServer.TelemetryChannel": "2.21.0",
          "Microsoft.AspNetCore.Hosting": "2.1.1",
          "Microsoft.AspNetCore.Http": "2.1.22",
          "Microsoft.Extensions.Configuration.Json": "3.1.6",
          "Microsoft.Extensions.Logging.ApplicationInsights": "2.21.0",
          "System.Text.Encodings.Web": "4.7.2"
        },

What should I do?

iSeiryu

iSeiryu commented on Feb 14, 2023

@iSeiryu

@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

private readonly RequestDelegate _next;

RequestDelegate comes from Microsoft.AspNetCore.Http.Abstractions.

DibyaRanjan1

DibyaRanjan1 commented on Feb 22, 2023

@DibyaRanjan1

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.

Capture

KalleOlaviNiemitalo

KalleOlaviNiemitalo commented on Feb 22, 2023

@KalleOlaviNiemitalo

@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

DibyaRanjan1 commented on Feb 22, 2023

@DibyaRanjan1

@KalleOlaviNiemitalo, Thank you. I have updated the dependency to 6.26.0.

missraphie

missraphie commented on Jul 18, 2023

@missraphie

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.

image

Thank you

ghost locked as resolved and limited conversation to collaborators on Sep 10, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    Relationships

    None yet

      Development

      No branches or pull requests

        Participants

        @iSeiryu@omajid@johnkors@Plasma@kevbry

        Issue actions

          Microsoft Security Advisory CVE-2021-26701 | .NET Core Remote Code Execution Vulnerability · Issue #49377 · dotnet/runtime