Freigeben über


Microsoft Security Advisory 4021279

Sicherheitsrisiken in .NET Core, ASP.NET Core könnte rechteerweiterungen zulassen

Veröffentlicht: 9. Mai 2017 | Aktualisiert: 10. Mai 2017

Version: 1.1

Kurzfassung

Microsoft veröffentlicht diese Sicherheitsempfehlung, um Informationen zu Sicherheitsrisiken in öffentlichen .NET Core und ASP.NET Core bereitzustellen. Dieser Ratgeber enthält ebenso Anweisungen dazu, wie Entwickler ihre Anwendungen ordnungsgemäß aktualisieren können.

.NET Core & ASP.NET Core sind die nächste Generation von .NET, die ein vertrautes und modernes Framework für Web- und Cloudszenarien bereitstellen. Diese Produkte werden aktiv vom .NET- und ASP.NET-Team in Zusammenarbeit mit einer Community von Open Source-Entwicklern entwickelt, die unter Windows, Mac OS X und Linux ausgeführt werden. Als .NET Core veröffentlicht wurde, wurde die Versionsnummer auf 1.0.0 zurückgesetzt, um die Tatsache widerzuspiegeln, dass es sich um ein separates Produkt vom Vorgänger -.NET handelt.

Problem-CVEs und Beschreibung

CVE Beschreibung
CVE-2017-0247 Dienstverweigerung (Denial of Service)
CVE-2017-0248 Umgehung von Sicherheitsfeatures
CVE-2017-0249 Angriffe durch Rechteerweiterung
CVE-2017-0256 Spoofing

Betroffene Software

Die Sicherheitsrisiken wirken sich auf jedes Microsoft .NET Core-Projekt aus, wenn es die folgenden betroffenen Paketversionen verwendet.

Betroffenes Paket und version
Paketname Paketversionen Behobene Paketversionen
System.Text.Encodings.Web 4.0.0 4.3.0 4.0.1 4.3.1
System.Net.Http 4.1.1 4.3.1 4.1.2 4.3.2
System.Net.Http.WinHttpHandler 4.0.1 4.3.0 4.0.2 4.3.1
System.Net.Security 4.0.0 4.3.0 4.0.1 4.3.1
System.Net.WebSockets.Client 4.0.0 4.3.0 4.0.1 4.3.1
Microsoft.AspNetCore.Mvc 1.0.0, 1.0.1, 1.0.2, 1.0.3 1.1.0, 1.1.1, 1.1.2 1.0.4 1.1.3
Microsoft.AspNetCore.Mvc.Core 1.0.0, 1.0.1, 1.0.2, 1.0.3 1.1.0, 1.1.1, 1.1.2 1.0.4 1.1.3
Microsoft.AspNetCore.Mvc.Abstractions 1.0.0, 1.0.1, 1.0.2, 1.0.3 1.1.0, 1.1.1, 1.1.2 1.0.4 1.1.3
Microsoft.AspNetCore.Mvc.ApiExplorer 1.0.0, 1.0.1, 1.0.2, 1.0.3 1.1.0, 1.1.1, 1.1.2 1.0.4 1.1.3
Microsoft.AspNetCore.Mvc.Cors 1.0.0, 1.0.1, 1.0.2, 1.0.3 1.1.0, 1.1.1, 1.1.2 1.0.4 1.1.3
Microsoft.AspNetCore.Mvc.DataAnnotations 1.0.0, 1.0.1, 1.0.2, 1.0.3 1.1.0, 1.1.1, 1.1.2 1.0.4 1.1.3
Microsoft.AspNetCore.Mvc.Formatters.Json 1.0.0, 1.0.1, 1.0.2, 1.0.3 1.1.0, 1.1.1, 1.1.2 1.0.4 1.1.3
Microsoft.AspNetCore.Mvc.Formatters.Xml 1.0.0, 1.0.1, 1.0.2, 1.0.3 1.1.0, 1.1.1, 1.1.2 1.0.4 1.1.3
Microsoft.AspNetCore.Mvc.Localization 1.0.0, 1.0.1, 1.0.2, 1.0.3 1.1.0, 1.1.1, 1.1.2 1.0.4 1.1.3
Microsoft.AspNetCore.Mvc.Razor.Host 1.0.0, 1.0.1, 1.0.2, 1.0.3 1.1.0, 1.1.1, 1.1.2 1.0.4 1.1.3
Microsoft.AspNetCore.Mvc.Razor 1.0.0, 1.0.1, 1.0.2, 1.0.3 1.1.0, 1.1.1, 1.1.2 1.0.4 1.1.3
Microsoft.AspNetCore.Mvc.TagHelpers 1.0.0, 1.0.1, 1.0.2, 1.0.3 1.1.0, 1.1.1, 1.1.2 1.0.4 1.1.3
Microsoft.AspNetCore.Mvc.ViewFeatures 1.0.0, 1.0.1, 1.0.2, 1.0.3 1.1.0, 1.1.1, 1.1.2 1.0.4 1.1.3
Microsoft.AspNetCore.Mvc.WebApiCompatShim 1.0.0, 1.0.1, 1.0.2, 1.0.3 1.1.0, 1.1.1, 1.1.2 1.0.4 1.1.3

Häufig gestellte Fragen zu Beratungen

Gewusst wie wissen, ob ich betroffen bin?
.NET Core und ASP.NET Core verfügen über zwei Arten von Abhängigkeiten: direkt und transitiv. Wenn Ihr Projekt eine direkte oder transitive Abhängigkeit von einem der zuvor aufgeführten Pakete und Versionen aufweist, sind Sie davon betroffen.

Hinweis

Im Rahmen des Patchings ASP.NET Core MVC aktualisieren wir jedes Microsoft.AspNetCore.Mvc.*-Paket. Wenn Sie beispielsweise eine Abhängigkeit von Microsoft.AspNetCore.Mvc haben, sollten Sie zuerst auf die entsprechende Version aktualisieren (1.0.x sollte auf 1.0.4 aktualisiert werden, 1.1.x sollte auf 1.1.3 aktualisiert werden), und es aktualisiert auch alle anderen anfälligen Microsoft.AspNetCore.Mvc-Abhängigkeiten.

.NET Core Project-Formate

.NET Core verfügt über zwei verschiedene Projektdateiformate, je nachdem, welche Software das Projekt erstellt hat.

  1. project.json ist das ursprüngliche Format, das in .NET Core 1.0 und Microsoft Visual Studio 2015 enthalten ist.
  2. csproj ist das in Microsoft Visual Studio 2017 verwendete Format.

Sie müssen sicherstellen, dass Sie die richtigen Aktualisierungsanweisungen für Ihren Projekttyp befolgen.

Direkte Abhängigkeiten

Direkte Abhängigkeiten sind Abhängigkeiten, bei denen Sie ihrem Projekt speziell ein Paket hinzufügen. Wenn Sie beispielsweise das Microsoft.AspNetCore.Mvc-Paket zu Ihrem Projekt hinzufügen, haben Sie eine direkte Abhängigkeit von Microsoft.AspNetCore.Mvc genommen.

Direkte Abhängigkeiten können durch Überprüfen ihrer project.json- oder csproj-Datei ermittelt werden.

Transitive Abhängigkeiten

Transitive Abhängigkeiten treten auf, wenn Sie ihrem Projekt ein Paket hinzufügen, das wiederum auf einem anderen Paket basiert. Wenn Sie beispielsweise das Microsoft.AspNetCore.Mvc-Paket zu Ihrem Projekt hinzufügen, hängt es vom Microsoft.AspNetCore.Mvc.Core-Paket (unter anderem) ab. Ihr Projekt hat eine direkte Abhängigkeit von Microsoft.AspNetCore.Mvc und einer transitiven Abhängigkeit vom Microsoft.AspNetCore.Mvc.Core-Paket.

Transitive Abhängigkeiten können im Visual Studio-Projektmappen-Explorer-Fenster überprüft werden, das die Suche unterstützt, oder indem sie die project.lock.json Datei im Stammverzeichnis Ihres Projekts für project.json Projekte oder die project.assets.json Datei im Obj-Verzeichnis Ihres Projekts für csproj-Projekte überprüfen. Diese Dateien sind die autoritative Liste aller Pakete, die von Ihrem Projekt verwendet werden und sowohl direkte als auch transitive Abhängigkeiten enthalten.

Gewusst wie meine betroffene Anwendung reparieren?

Sie müssen sowohl direkte Abhängigkeiten korrigieren als auch alle transitiven Abhängigkeiten überprüfen und beheben. Die betroffenen Pakete und Versionen im vorherigen Abschnitt "Betroffene Software" enthalten jedes anfällige Paket, die anfälligen Versionen und die gepatchten Versionen.

Wenn Sie ASP.NET Core MVC in Ihren Projekten verwenden, sollten Sie zuerst die Microsoft.AspNetCore.Mvc-Version entsprechend der vorherigen tabelle der betroffenen Versionen aktualisieren. Wenn Sie derzeit Version 1.0.0, 1.0.1, 1.0.2 oder 1.0.3 verwenden, sollten Sie Die Paketversion auf 1.0.4 aktualisieren. Wenn Sie Version 1.1.0, 1.1.1 oder 1.1.2 verwenden, sollten Sie Die Paketversion auf 1.1.3 aktualisieren. Dadurch werden alle MVC-Pakete auf die festen Versionen aktualisiert.

Beheben von direkten Abhängigkeiten – project.json/VS2015

Öffnen Sie ihre project.json Datei im Editor. Suchen Sie nach dem Abschnitt "Abhängigkeiten". Im Folgenden finden Sie ein Beispiel für einen Abschnitt zu Abhängigkeiten:

    "dependencies": {
        "Microsoft.NETCore.App": {
          "version": "1.0.1",
          "type": "platform"
        },
        "Microsoft.AspNetCore.Server.Kestrel": "1.0.1",
        "Microsoft.AspNetCore.Mvc ": "1.0.1",
         
      }

In diesem Beispiel gibt es drei direkte Abhängigkeiten: Microsoft.NETCore.App, Microsoft.AspNetCore.Server.Kestrel und Microsoft.AspNetCore.Mvc.

Microsoft.NetCore.App ist die Plattform, auf die die Anwendung ausgerichtet ist, sollten Sie dies ignorieren. Die anderen Pakete machen ihre Version rechts vom Paketnamen verfügbar. In unserem Beispiel sind unsere Nicht-Plattformpakete Version 1.0.1.

Überprüfen Sie Ihre direkten Abhängigkeiten für jede Instanz der zuvor aufgeführten Pakete und Versionen. Im vorherigen Beispiel besteht eine direkte Abhängigkeit von einem der anfälligen Pakete, Microsoft.AspNetCore.Mvc, Version 1.0.1.

Um auf das feste Paket zu aktualisieren, ändern Sie die Versionsnummer so, dass sie das entsprechende Paket für Ihre Version ist. In diesem Beispiel würde Microsoft.AspNetCore.Mvc auf 1.0.4 aktualisiert.

Speichern Sie nach dem Aktualisieren der anfälligen Paketversionen Ihre project.json Datei.

Der Abschnitt "Abhängigkeiten" in unserem Beispiel project.json würde nun wie folgt aussehen:

      "dependencies": {
        "Microsoft.NETCore.App": {
          "version": "1.0.1",
          "type": "platform"
        },
        "Microsoft.AspNetCore.Server.Kestrel": "1.0.1",
        "Microsoft.AspNetCore.Mvc": "1.0.4",
          
      }

Wenn Sie Visual Studio verwenden und die aktualisierte project.json Datei speichern, stellt Visual Studio die neue Paketversion wieder her. Sie können die Wiederherstellungsergebnisse sehen, indem Sie das Ausgabefenster (STRG+ALT+O) öffnen und die Ausgabe aus der Dropdownliste in Paket-Manager ändern.

Wenn Sie Visual Studio nicht verwenden, öffnen Sie eine Befehlszeile, und wechseln Sie zu Ihrem Projektverzeichnis. Führen Sie den Befehl "dotnet restore " aus, um ihre neue Abhängigkeit wiederherzustellen.

Nachdem Sie alle Ihre direkten Abhängigkeiten behoben haben, müssen Sie auch Ihre transitiven Abhängigkeiten überprüfen.

Beheben von direkten Abhängigkeiten – csproj/VS2017

Öffnen Sie die Datei "projectname.csproj" im Editor, oder klicken Sie mit der rechten Maustaste auf das Projekt in Visual Studio 2017, und wählen Sie "Projektname.csproj bearbeiten" im Inhaltsmenü aus, wobei Projektname der Name Ihres Projekts ist. Suchen Sie nach PackageReference-Knoten. Im Folgenden sehen Sie eine Beispielprojektdatei:


    <project sdk="Microsoft.NET.Sdk.Web">
<propertygroup>
<targetframework>netcoreapp1.1</targetframework>
</propertygroup>
<propertygroup>
<packagetargetfallback>$(PackageTargetFallback);portable-net45+win8+wp8+wpa81;</packagetargetfallback>
</propertygroup>
<itemgroup>
<packagereference include="Microsoft.AspNetCore" version="1.1.1">
</packagereference><packagereference include="Microsoft.AspNetCore.Mvc" version="1.1.2">
</packagereference></itemgroup>
<itemgroup>
<dotnetclitoolreference include="Microsoft.VisualStudio.Web.CodeGeneration.Tools" version="1.0.0 ">
</dotnetclitoolreference></itemgroup>
</project>

Das Beispiel verfügt über zwei direkte Paketabhängigkeiten, wie von den beiden PackageReference-Elementen gesehen. Der Name des Pakets befindet sich im Include-Attribut, und die Paketversionsnummer befindet sich im Versionsattribut, das rechts vom Paketnamen verfügbar gemacht wird. Das Beispiel zeigt zwei Pakete Microsoft.AspNetCore, Version 1.1.1, und Microsoft.AspNetCore.Mvc.Core, Version 1.1.2.

Überprüfen Sie die PackageReference-Elemente für jede Instanz der zuvor aufgeführten Pakete und Versionen. Im vorherigen Beispiel besteht eine direkte Abhängigkeit von einem der anfälligen Pakete, Microsoft.AspNetCore.Mvc, Version 1.1.2.

Um auf das feste Paket zu aktualisieren, ändern Sie die Versionsnummer in das entsprechende Paket für Ihre Version. In diesem Beispiel würde Microsoft.AspNetCore.Mvc auf 1.1.3 aktualisiert.

Speichern Sie nach dem Aktualisieren der anfälligen Paketversion ihre csproj-Datei.

Das Beispiel csproj würde nun wie folgt aussehen:


    <project sdk="Microsoft.NET.Sdk.Web">
<propertygroup>
<targetframework>netcoreapp1.1</targetframework>
</propertygroup>
<propertygroup>
<packagetargetfallback>$(PackageTargetFallback);portable-net45+win8+wp8+wpa81;</packagetargetfallback>
</propertygroup>
<itemgroup>
<packagereference include="Microsoft.AspNetCore" version="1.1.1">
</packagereference><packagereference include="Microsoft.AspNetCore.Mvc.Core" version="1.1.3">
</packagereference></itemgroup>
<itemgroup>
<dotnetclitoolreference include="Microsoft.VisualStudio.Web.CodeGeneration.Tools" version="1.0.0 ">
</dotnetclitoolreference></itemgroup>
</project>

Wenn Sie Visual Studio verwenden und die aktualisierte csproj-Datei speichern, stellt Visual Studio die neue Paketversion wieder her. Sie können die Wiederherstellungsergebnisse sehen, indem Sie das Ausgabefenster (STRG+ALT+O) öffnen und die Ausgabe aus der Dropdownliste in Paket-Manager ändern.

Wenn Sie Visual Studio nicht verwenden, öffnen Sie eine Befehlszeile, und wechseln Sie in Ihr Projektverzeichnis. Führen Sie den Befehl "dotnet restore " aus, um ihre neue Abhängigkeit wiederherzustellen.

Kompilieren Sie Ihre Anwendung neu.

Wenn nach einer erneuten Kompilierung eine Warnung zu Abhängigkeitskonflikten angezeigt wird, müssen Sie ihre anderen direkten Abhängigkeiten auf die entsprechende Version aktualisieren. Wenn Ihr Projekt beispielsweise auf Microsoft.AspNetCore.Routing mit der Versionsnummer 1.0.1 verweist, wenn Sie Ihr Microsoft.AspNetCore.Mvc-Paket auf 1.0.4 aktualisieren, löst die Kompilierung Folgendes aus:

NU1012-Abhängigkeitskonflikt. Microsoft.AspNetCore.Mvc.Core 1.0.4 erwartete Microsoft.AspNetCore.Routing >= 1.0.4, erhielt jedoch 1.0.1

Um dies zu beheben, bearbeiten Sie die Version für das erwartete Paket, indem Sie Ihr csproj oder project.json auf die gleiche Weise aktualisieren, wie Sie die anfälligen Paketversionen aktualisiert haben.

Nachdem Sie alle Ihre direkten Abhängigkeiten behoben haben, müssen Sie auch Ihre transitiven Abhängigkeiten überprüfen.

Überprüfen transitiver Abhängigkeiten

Es gibt zwei Möglichkeiten, transitive Abhängigkeiten anzuzeigen. Sie können entweder die Projektmappen-Explorer von Visual Studio verwenden, oder Sie können Ihre project.lock.json (project.json/VS2015) oder project.assets.json-Datei (csproj/VS2017) überprüfen.

Verwenden von Visual Studio Projektmappen-Explorer (VS2015)

Wenn Sie Visual Studio 2015 verwenden möchten, öffnen Sie Ihr Projekt in Visual Studio 2015, und drücken Sie dann STRG+; um die Suche in Projektmappen-Explorer zu aktivieren. Suchen Sie nach jedem der anfälligen Paketnamen, und notieren Sie sich die Versionsnummern aller gefundenen Ergebnisse.

Wenn Sie beispielsweise in einem Beispielprojekt, das einen Verweis auf Microsoft.AspNetCore.Mvc.Mvc enthält, nach Microsoft.AspNetCore.Mvc suchen, werden die folgenden Ergebnisse in Visual Studio 2015 angezeigt.

Abbildung 1: Durchsuchen von Verweisen in Visual Studio 2015

Die Suchergebnisse werden als Struktur angezeigt. In diesen Ergebnissen können Sie sehen, dass verweise auf Microsoft.AspNetCore.Mvc, Version 1.0.1, die anfällige Version gefunden wurden.

Der erste Eintrag unter der Überschrift "Verweise" bezieht sich auf das Zielframework, das Ihre Anwendung verwendet. Dies wird sein. NETCoreApp, . NETStandard oder . NET-Framework-vX.Y.Z (wobei X.Y.Z eine tatsächliche Versionsnummer ist), je nachdem, wie Sie Ihre Anwendung konfiguriert haben. Unter Ihrem Zielframework ist die Liste der Pakete, von denen Sie direkt eine Abhängigkeit genommen haben. In diesem Beispiel verwendet die Anwendung eine Abhängigkeit von Microsoft.AspNetCore.Mvc. Microsoft.AspNetCore.Mvc verfügt wiederum über Blattknoten, die ihre Abhängigkeiten und ihre Versionen auflisten. In diesem Fall benötigt das Microsoft.AspNetCore.Mvc-Paket eine Abhängigkeit von einer anfälligen Version von Microsoft.AspNetCore.Mvc.Core und zahlreichen anderen Paketen.

Manuelles Überprüfen von project.lock.json (project.json/VS2015)

Öffnen Sie die project.lock.json Datei in Ihrem Editor. Es wird empfohlen, einen Editor zu verwenden, der json versteht und es Ihnen ermöglicht, Knoten zu reduzieren und zu erweitern, um diese Datei zu überprüfen. Sowohl Visual Studio als auch Visual Studio Code bieten diese Funktionalität.

Wenn Sie Visual Studio verwenden, befindet sich die project.lock.json Datei "unter" der project.json Datei. Klicken Sie links neben der project.json-Datei auf das rechte, zeigende Dreieck, um die Lösungsstruktur zu erweitern, um die project.lock.json Datei verfügbar zu machen. Abbildung 1 unten zeigt ein Projekt mit der erweiterten project.json Datei, um die project.lock.json Datei anzuzeigen.

Abbildung 2: project.lock.json Dateispeicherort

Durchsuchen Sie die project.lock.json Datei nach der Zeichenfolge "Microsoft.AspNetCore.Mvc.Core/1.1.0". Wenn Ihre project.lock.json Datei diese Zeichenfolge enthält, haben Sie eine Abhängigkeit vom anfälligen Paket.

Beheben transitiver Abhängigkeiten (project.json/VS2015)

Wenn Sie keinen Verweis auf anfällige Pakete gefunden haben, sind keine Ihrer direkten Abhängigkeiten von anfälligen Paketen abhängig, oder Sie haben das Problem bereits behoben, indem Sie die direkten Abhängigkeiten aktualisieren.

Wenn ihre transitive Abhängigkeitsüberprüfung Verweise auf eines der anfälligen Pakete gefunden hat, müssen Sie dem aktualisierten Paket eine direkte Abhängigkeit zum aktualisierten Paket project.json hinzufügen, um die transitive Abhängigkeit außer Kraft zu setzen. Öffnen Sie Ihre project.json, und suchen Sie den Abschnitt "Abhängigkeiten". Zum Beispiel:


      "dependencies": {
        "Microsoft.NETCore.App": {
          "version": "1.0.1",
          "type": "platform"
        },
        "Microsoft.AspNetCore.Server.Kestrel": "1.1.0",
        "Microsoft.AspNetCore.Mvc": "1.1.0"
      }

Für jedes der gefährdeten Pakete, die ihre Suche zurückgegeben hat, müssen Sie der aktualisierten Version eine direkte Abhängigkeit hinzufügen, indem Sie sie der project.json-Datei hinzufügen. Dazu fügen Sie dem Abschnitt "Abhängigkeiten" eine neue Zeile hinzu, die auf die feste Version verweist. Wenn ihre Suche z. B. einen transitiven Verweis auf die anfällige System.Net.Security Version 4.0.0 angezeigt hat, fügen Sie einen Verweis auf die entsprechende feste Version 4.0.1 hinzu. Bearbeiten Sie die project.json Datei wie folgt:


      "dependencies": {
        "Microsoft.NETCore.App": {
          "version": "1.0.1",
          "type": "platform"
        },
        "System.Net.Security": "4.0.1",
        "Microsoft.AspNetCore.Server.Kestrel": "1.1.0",
        "Microsoft.AspNetCore.Mvc": "1.1.1"
      }

Nachdem Sie den festen Paketen direkte Abhängigkeiten hinzugefügt haben, speichern Sie ihre project.json Datei.

Wenn Sie Visual Studio verwenden, speichern Sie die aktualisierte project.json Datei, und Visual Studio stellt die neuen Paketversionen wieder her. Sie können die Wiederherstellungsergebnisse sehen, indem Sie das Ausgabefenster (STRG+ALT+O) öffnen und die Ausgabe aus der Dropdownliste in Paket-Manager ändern.

Wenn Sie Visual Studio nicht verwenden, öffnen Sie eine Befehlszeile, und wechseln Sie in Ihr Projektverzeichnis. Führen Sie den Befehl "dotnet restore " aus, um ihre neuen Abhängigkeiten wiederherzustellen.

Verwenden von Visual Studio Projektmappen-Explorer (VS2017)

Wenn Sie Projektmappen-Explorer verwenden möchten, öffnen Sie Ihr Projekt in Visual Studio 2017, und drücken Sie dann STRG+;, um die Suche in Projektmappen-Explorer zu aktivieren. Suchen Sie nach jedem der anfälligen Paketnamen, und notieren Sie sich die Versionsnummern aller gefundenen Ergebnisse.

Beispielsweise zeigt die Suche nach Microsoft.AspNetCore.Mvc.Core in einem Beispielprojekt, das ein Paket enthält, das eine Abhängigkeit von Microsoft.AspNetCore.Mvc verwendet, die folgenden Ergebnisse in Visual Studio 2017.

Abbildung 3: Durchsuchen von Verweisen in Visual Studio 2017

Die Suchergebnisse werden als Struktur angezeigt. In diesen Ergebnissen sehen Sie, dass wir Verweise auf Microsoft.AspNetCore.Mvc.Core, Version 1.1.2, gefunden haben.

Unter dem Knoten "Abhängigkeiten" befindet sich ein NuGet-Knoten. Unter dem NuGet-Knoten ist die Liste der Pakete, von denen Sie direkt eine Abhängigkeit genommen haben, und deren Versionen. In diesem Beispiel verwendet die Anwendung eine direkte Abhängigkeit von Microsoft.AspNetCore.Mvc. Microsoft.AspNetCore.Mvc verfügt wiederum über Blattknoten, die ihre Abhängigkeiten und ihre Versionen auflisten. Im Beispiel verwendet das Microsoft.AspNetCore.Mvc-Paket eine Abhängigkeit von einer Version von Microsoft.AspNetCore.Mvc.ApiExplorer, die wiederum eine Abhängigkeit von einer anfälligen Version von Microsoft.AspNetCore.Mvc.Core akzeptiert.

Manuelles Überprüfen von project.assets.json (VS2017)

Öffnen Sie die project.assets.json Datei aus dem Obj-Verzeichnis Ihres Projekts in Ihrem Editor. Es wird empfohlen, einen Editor zu verwenden, der json versteht und es Ihnen ermöglicht, Knoten zu reduzieren und zu erweitern, um diese Datei zu überprüfen. Sowohl Visual Studio als auch Visual Studio Code bieten diese Funktionalität.

Durchsuchen Sie die project.assets.json Datei nach den einzelnen Paketnamen in der Tabelle für anfällige Pakete, gefolgt von einem /. Die Suche nach Microsoft.AspNetCore.Mvc würde z. B. die Verwendung einer Suchzeichenfolge von "Microsoft.AspNetCore.Mvc/" beinhalten. Wenn Ihre project.assets.json Datei diese Zeichenfolge enthält und die vollständige Versionsnummer (die Nummer nach dem /in allen Suchtreffern) mit einer der zuvor aufgeführten anfälligen Versionen übereinstimmt, haben Sie eine Abhängigkeit vom anfälligen Paket.

Beheben transitiver Abhängigkeiten (csproj/VS2017)

Wenn Sie keinen Verweis auf anfällige Pakete gefunden haben, sind keine Ihrer direkten Abhängigkeiten von anfälligen Paketen abhängig, oder Sie haben das Problem bereits behoben, indem Sie die direkten Abhängigkeiten aktualisieren.

Wenn Ihre transitive Abhängigkeitsüberprüfung Verweise auf eines der anfälligen Pakete gefunden hat, müssen Sie dem aktualisierten Paket eine direkte Abhängigkeit zu Ihrer csproj-Datei hinzufügen, um die transitive Abhängigkeit außer Kraft zu setzen. Öffnen Sie die Datei "projectname.csproj" im Editor, oder klicken Sie mit der rechten Maustaste auf das Projekt in Visual Studio 2017, und wählen Sie "Projektname.csproj bearbeiten" im Inhaltsmenü aus, wobei Projektname der Name Ihres Projekts ist. Suchen Sie nach PackageReference-Knoten, z. B.:


    <project sdk="Microsoft.NET.Sdk.Web">
<propertygroup>
<targetframework>netcoreapp1.1</targetframework>
</propertygroup>
<propertygroup>
<packagetargetfallback>$(PackageTargetFallback);portable-net45+win8+wp8+wpa81;</packagetargetfallback>
</propertygroup>
<itemgroup>
<packagereference include="Microsoft.AspNetCore" version="1.1.1">
</packagereference><packagereference include="Microsoft.AspNetCore.Mvc" version="1.1.3">
</packagereference></itemgroup>
<itemgroup>
<dotnetclitoolreference include="Microsoft.VisualStudio.Web.CodeGeneration.Tools" version="1.0.0">
</dotnetclitoolreference></itemgroup>
</project>

Für jedes der gefährdeten Pakete, die ihre Suche zurückgegeben hat, müssen Sie der aktualisierten Version eine direkte Abhängigkeit hinzufügen, indem Sie sie der csproj-Datei hinzufügen. Dazu fügen Sie dem Abschnitt "Abhängigkeiten" eine neue Zeile hinzu, die auf die feste Version verweist. Wenn ihre Suche beispielsweise einen transitiven Verweis auf die anfällige System.Net.Security Version 4.3.0 angezeigt hat, fügen Sie einen Verweis auf die entsprechende feste Version 4.3.1 hinzu.


    <project sdk="Microsoft.NET.Sdk.Web">
<propertygroup>
<targetframework>netcoreapp1.1</targetframework>
</propertygroup>
<propertygroup>
<packagetargetfallback>$(PackageTargetFallback);portable-net45+win8+wp8+wpa81;</packagetargetfallback>
</propertygroup>
<itemgroup>
<packagereference include="System.Net.Security" version="4.3.1">
</packagereference><packagereference include="Microsoft.AspNetCore" version="1.1.1">
</packagereference><packagereference include="Microsoft.AspNetCore.Mvc" version="1.1.3">
</packagereference></itemgroup>
<itemgroup>
<dotnetclitoolreference include="Microsoft.VisualStudio.Web.CodeGeneration.Tools" version="1.0.0">
</dotnetclitoolreference></itemgroup>

Nachdem Sie den direkten Abhängigkeitsverweis hinzugefügt haben, speichern Sie die csproj-Datei.

Wenn Sie Visual Studio verwenden, speichern Sie die aktualisierte Csproj-Datei, und Visual Studio stellt die neuen Paketversionen wieder her. Sie können die Wiederherstellungsergebnisse sehen, indem Sie das Ausgabefenster (STRG+ALT+O) öffnen und die Ausgabe aus der Dropdownliste in Paket-Manager ändern.

Wenn Sie Visual Studio nicht verwenden, öffnen Sie eine Befehlszeile, und wechseln Sie zu Ihrem Projektverzeichnis. Führen Sie den Befehl "dotnet restore" aus, um ihre neuen Abhängigkeiten wiederherzustellen.

Neuerstellen der Anwendung

Erstellen Sie schließlich Ihre Anwendung neu, testen Sie dies wie gewohnt, und stellen Sie sie mithilfe Ihres bevorzugten Bereitstellungsmechanismus erneut zur Bereitstellung.

Sonstige Informationen

Melden von Sicherheitsproblemen

  • Wenn Sie ein potenzielles Sicherheitsproblem in .NET Core gefunden haben, senden Sie bitte eine E-Mail an. Berichte können sich für die .NET Core Bug Bounty qualifizieren. Details zur .NET Core Bug Bounty einschließlich der Allgemeinen Geschäftsbedingungen sind unter https:.

Microsoft Active Protections Program (MAPP)

Um den Sicherheitsschutz für Kunden zu verbessern, stellt Microsoft Sicherheitsrisiken für wichtige Sicherheitssoftwareanbieter im Voraus jeder monatlichen Sicherheitsupdateversion bereit. Sicherheitssoftwareanbieter können diese Sicherheitsrisikoinformationen dann verwenden, um Kunden über ihre Sicherheitssoftware oder Geräte, z. B. Antivirensoftware, netzwerkbasierte Angriffserkennungssysteme oder hostbasierte Angriffsschutzsysteme, aktualisierte Schutzmaßnahmen bereitzustellen. Um festzustellen, ob aktive Schutzmaßnahmen von Sicherheitssoftwareanbietern verfügbar sind, besuchen Sie bitte die aktiven Schutzwebsites, die von Programmpartnern bereitgestellt werden, die in Microsoft Active Protections Program (MAPP)-Partnern aufgeführt sind.

Feedback

Unterstützung

  • Sie können Fragen zu diesem Problem auf GitHub in .NET Core oder ASP.NET Core-Organisationen stellen. Diese befinden sich unter </https:>https: und </https:https:>. Das Ankündigungs-Repository für jedes Produkt (https://github.com/dotnet/Announcements und https://github.com/aspnet/Announcements) enthält diese Empfehlung als Problem und enthält einen Link zu einem Diskussionsproblem, in dem Sie Fragen stellen können.
  • Kunden im USA und Kanada können technischen Support vom Sicherheitssupport erhalten. Weitere Informationen finden Sie unter Microsoft-Hilfe und -Support.
  • Internationale Kunden können Support von ihren lokalen Microsoft-Tochtergesellschaften erhalten. Weitere Informationen finden Sie unter "Internationaler Support". * Microsoft TechNet Security bietet zusätzliche Informationen zur Sicherheit in Microsoft-Produkten.

Danksagungen

Microsoft danke ihnen für die Zusammenarbeit mit uns, um Kunden zu schützen:

  • David Fernandez of Sidertia Solutions for reporting the ASP.NET Core Denial of Service Vulnerability (CVE-2017-0247)
  • Mikhail Shcherbakov zur Meldung der ASP.NET Kernspoofing-Sicherheitsanfälligkeit (CVE-2017-0256)

Haftungsausschluss

Die in dieser Empfehlung bereitgestellten Informationen werden ohne Jegliche Garantie bereitgestellt. Microsoft lehnt alle Gewährleistungen ab, entweder ausdrücklich oder impliziert, einschließlich der Gewährleistungen der Händlerbarkeit und Eignung für einen bestimmten Zweck. In keinem Fall haftet die Microsoft Corporation oder seine Lieferanten für jegliche Schäden, einschließlich direkter, indirekter, zufälliger, Folgeschäden, Verlust von Geschäftsgewinnen oder sonderschäden, auch wenn die Microsoft Corporation oder ihre Lieferanten über die Möglichkeit solcher Schäden informiert wurden. Einige Staaten lassen den Ausschluss oder die Haftungsbeschränkung für Folge- oder Nebenschäden nicht zu, sodass die vorstehende Einschränkung möglicherweise nicht gilt.

Revisionen

  • V1.0 (9. Mai 2017): Empfehlung veröffentlicht.
  • V1.1 (10. Mai 2017): Empfehlung überarbeitet, um eine Tabelle mit Ausgabe-CVEs und deren Beschreibungen einzuschließen. Dies ist nur eine Informationsänderung.

Seite generiert 2017-05-10 13:08-07:00. </https:>