Freigeben über


Microsoft Security Advisory 4092731

Aktualisieren auf azure Cloud Services Machine Key Generation Algorithmus

Veröffentlicht: 8. Mai 2018 | Aktualisiert am 29. Juni 2018

Version: 1.2

Kurzfassung

Microsoft veröffentlicht diese Sicherheitsempfehlung, um Informationen im Zusammenhang mit einem Update bereitzustellen, wie die Computerschlüssel für Azure Cloud Services generiert werden. Dieses Szenario kann sich auf Kunden auswirken, die Azure Cloud Services-Webrollen verwenden. Die Computerschlüssel für vorhandene Bereitstellungen wurden mit unzureichender Entropie generiert und verwenden veraltete Kryptografiealgorithmen.

Um dieses Problem zu beheben, hat Microsoft ein Update für den Algorithmus veröffentlicht, der zum Generieren von Computerschlüsseln in neuen Azure Cloud Services Web Role-Bereitstellungen verwendet wird, einschließlich der Verwendung kryptografisch starker Zufallszahlengenerierung. Alle vorhandenen Webrollen behalten ihre zuvor generierten Computerschlüssel bei, es sei denn, sie werden erneut bereitgestellt. Angesichts bestimmter detaillierter Informationen kann ein Angreifer computerschlüssel erraten, die vom veralteten Algorithmus erstellt wurden. Anfällige Computerschlüssel können unter bestimmten Umständen die Umgehung von Sicherheitsfeatures zulassen.

Diese Empfehlung enthält Anleitungen für Kunden, um zu ermitteln, ob sie von diesem Szenario betroffen sind, und was, falls vorhanden, Maßnahmen, die sie ergreifen müssen.

Betroffene Clouddienste

Azure-Bereitstellungen, die Webrollen verwenden, sind von diesem Problem betroffen. Die einzige Ausnahme ist, wenn Sie ihren eigenen Computerschlüssel in der Web.config im CS-Paket bereitgestellt haben. Azure Worker-Rollen, virtuelle Computer und alle anderen Azure-Angebote sind nicht betroffen.

Häufig gestellte Fragen

1. Gewusst wie wissen, ob ich betroffen bin?

Alle Azure Cloud Service-Webrollen sind von diesem Problem betroffen, es sei denn, Sie haben ihre eigenen Computerschlüssel in der Web.config im CS-Paket bereitgestellt. Azure Cloud Service Worker-Rollen, virtuelle Computer und alle anderen Azure-Angebote sind nicht betroffen.

ASP.NET verwendet Computerschlüssel für mehrere Zwecke, darunter:

  • Antimanipulation mit Webformularansichtsdaten
  • Generierung und Validierung von ASP.NET Webformular-Sitzungscookies
  • Anti-CSRF-Token
  • Verschlüsselung mit den Methoden machinekey.protect und machinekey.unprotect.

2. Gibt es Voraussetzungen für die Behebung meiner betroffenen Anwendung?

Ja, wenn Ihre Webrolle mit einer eingestellten Version von Azure SDK für .Net bereitgestellt wurde, wird der erweiterte Computerschlüsselgenerierungsalgorithmus nicht verwendet. Bitte verweisen Sie auf https://azure.microsoft.com/en-us/downloads/archive-net-downloads/ unterstützte Versionen. Wenn Sie ein Upgrade auf eine unterstützte Version durchführen möchten, klicken Sie auf den Link auf der zuvor referenzierten Website, um Ihr Projekt mit einer unterstützten SDK-Version herunterzuladen und erneut bereitzustellen. Nachdem Sie überprüft haben, dass Ihr Projekt mit einem unterstützten SDK bereitgestellt wird, führen Sie die zusätzlichen Schritte in dieser Empfehlung aus.

3. Gewusst wie meine betroffene Anwendung reparieren?

Um die neuen Computerschlüssel zu generieren, müssen Sie Ihre CSPKG- und CSCFG-Datei als neuen Clouddienst erneut bereitstellen, Ihre Workload im Staging-Slot bereitstellen und eine Swap-Bereitstellung (VIP Swap) durchführen oder eigene Computerschlüssel einfügen und dann ein gleichzeitiges Upgrade durchführen. Ein typischer Updatebereitstellungsvorgang reicht nicht aus. Im Folgenden werden die Allgemeinen Risikominderungsoptionen beschrieben, und die detaillierten Schritte werden nachfolgend beschrieben:

Option 1: Bereitstellen Ihrer Workload für einen neuen Clouddienst. Aktualisieren Sie Ihren CNAME so, dass der Datenverkehr auf Ihren neuen Clouddienst verweist. Wenn null Datenverkehr zur alten Website wechselt, können Sie den alten Clouddienst löschen.

Option 2: Stellen Sie Ihren Clouddienst für den Stagingplatz bereit und führen Sie eine Swap-Bereitstellung aus.

Option 3: Generieren Sie ihre eigenen Computerschlüssel in Web.config, und führen Sie eine gleichzeitige Aktualisierung durch. Dadurch werden alle Instanzen gleichzeitig aktualisiert und daher zu Ausfallzeiten der Anwendung führen.

Es wird empfohlen, Option 1 zu verwenden, um Ausfallzeiten zu vermeiden. Außerdem wird empfohlen, die Entschärfung während geringer Auslastungszeiträume durchzuführen, da Sitzungen unterbrochen werden können, während sich die Computerschlüssel ändern.

Hinweis: Die IP-Adresse Ihrer Anwendung ändert sich, sobald Sie die neuen Computerschlüssel mit Option 1 und Option 2 erhalten.

4. Ich habe den Computerschlüssel verwendet, um persistente Daten mit MachineKey.Encode()/MachineKey.Protect() zu verschlüsseln. Gewusst wie die Daten wiederherstellen?

Wenn der MachineKey zum Verschlüsseln von Daten (mithilfe von MachineKey.Encode()/MachineKey.Protect() verwendet wurde, muss der alte Computerschlüssel und die in der Web.config definierten Algorithmen verwendet werden, um die Daten zu entschlüsseln ( durch Aufrufen von MachineKey.Decode()/MachineKey.Unprotect() bzw. MachineKey.Unprotect() ), bevor die Entschärfungsschritte ausgeführt werden. Nach Abschluss der Entschärfungsschritte verwenden alle Aufrufe von MachineKey.Encode()/MachineKey.Protect() und MachineKey.Decode()/MachineKey.Unprotect() den aktualisierten Computerschlüssel und -algorithmen aus der Web.config.

5. Gewusst wie wissen, dass meine Anwendung den neuen Computerschlüsselalgorithmus verwendet?

Wenn Sie nur über eine Bereitstellung in Ihrem Clouddienst verfügen, genügt die Überprüfung, ob das Azure Machine Key-Zertifikat auf der Registerkarte "Zertifikat" Ihres Clouddiensts im Azure-Verwaltungsportal angezeigt wird. Wenn dieses Zertifikat vorhanden ist, verwendet Ihre Bereitstellung den Computerschlüsselalgorithmus.

Wenn Sie über zwei Bereitstellungen in Ihrem Clouddienst (Produktion und Staging) verfügen, müssen Sie den Remotedesktop in Ihre Webrollen integrieren und die IIS-Konfiguration betrachten. Wenn das Computerschlüsselzertifikat angezeigt wird, verwenden Sie den neuen Computerschlüsselalgorithmus. Sie müssen dies in jeder Bereitstellung auf eine Webrolle überprüfen. Wenn Sie keine Verbindung mit der VM herstellen können, übermitteln Sie bitte ein Supportticket (Anweisungen in #7), und unser Supportteam kann ihnen helfen zu bestätigen, ob Ihre Bereitstellungen den neuen Computerschlüssel verwenden.

Azure Certificates

6. Was ist das Zertifikat "Microsoft Azure Service Management for MachineKey"?

Dies ist das Zertifikat, das zum Verschlüsseln der Computerschlüssel zusammen mit dem erweiterten Algorithmus verwendet wird.

7. Wer verwaltet das Zertifikat "Microsoft Azure Service Management for MachineKey", und was geschieht, wenn es abläuft?

Azure verwaltet dieses Zertifikat. Kunden müssen sich keine Gedanken über das Ablaufdatum dieses Zertifikats machen, da es einmal zum Generieren der neuen Computerschlüssel mit dem neuen Algorithmus verwendet wird. Das Ablaufdatum hat keine Auswirkungen.

8. Kann das Zertifikat gelöscht oder aus dem virtuellen Computer entfernt werden?

Nein, das Zertifikat kann nicht entfernt werden.

9. Wenn ich Fragen zu den Abhilfemaßnahmen habe, was kann ich tun?

Bitte übermitteln Sie einen Supportfall unter Cloud Services mit Ihrem Standardmäßigen Eskalationsprozess. Führen Sie die folgenden Schritte aus, um im Azure-Portal eskalieren zu können:

  1. Wechseln Sie im Azure-Portal zu "Hilfe + Support ".
  2. Wählen Sie den Typ des technischen Problems aus.
  3. Wählen Sie Ihr Abonnement aus, und wählen Sie dann den Dienst für Clouddienste (Webrollen/Workerrollen) in Services aus.
  4. Klicken Sie auf "Weiter", wählen Sie "MachineKey Certificate Update" als Problemtyp aus, und füllen Sie dann die Details des Supporttickets aus.

Detaillierte Schritte zum Ausführen der Entschärfung

Option 1: Erneute Bereitstellung Ihres Clouddiensts.

  1. Durchführen einer erneuten Bereitstellung über das Portal:

    1. Erstellen Sie einen neuen Clouddienst mit Ihrem .cspkg und .cscfg. Ausführlichere Informationen finden Sie hier.
    2. Aktualisieren Sie den CName- oder A-Eintrag so, dass der Datenverkehr auf den neuen Clouddienst verweist.
    3. Löschen Sie Ihren alten Clouddienst, nachdem Ihr Datenverkehr auf den neuen Clouddienst verweist.
  2. Durchführen einer erneuten Bereitstellung über PowerShell:

    1. Erstellen Sie einen neuen Clouddienst mit Ihrem .cspkg und .cscfg. Ausführlichere Informationen finden Sie hier.

      Beispiel: New-AzureService -ServiceName "yourServiceName" -Label "MyTestService" -Location "South Central US"

    2. Erstellen Sie eine neue Bereitstellung mit Ihrer CSPKG- und CSCFG-Datei. Ausführlichere Informationen finden Sie hier.

      Beispiel: New-AzureDeployment -ServiceName "yourServiceName" -Slot "Production" -Package "YourCspkgFile.cspkg" -Configuration "YourConfigFile.cscfg"

    3. Aktualisieren Sie den CName- oder A-Eintrag so, dass der Datenverkehr auf den neuen Clouddienst verweist.

    4. Löschen Sie Ihren vorherigen Clouddienst, der keine Computerschlüssel aktualisiert hat, nachdem Ihr Datenverkehr auf den neuen Clouddienst verweist. Ausführlichere Informationen finden Sie hier.

      Beispiel: Remove-AzureService -ServiceName "yourOldServiceName"

  3. Durchführen einer erneuten Bereitstellung über die Rest-API:

    1. Erstellen Sie einen neuen Clouddienst. Ausführlichere Informationen finden Sie hier.

      Beispiel: https://management.core.windows.net/<subscription-id>/services/hostedservices

    2. Erstellen Sie eine neue Bereitstellung mithilfe der API zum Erstellen einer Bereitstellung. Wenn Sie Ihre CSPKG- und CSCFG-Datei finden müssen, können Sie die Get-Package-API aufrufen.

      Beispiel: https://management.core.windows.net/<subscription-id>/services/hostedservices/<cloudservice-name>/deploymentslots/production

    3. Löschen Sie Ihren vorherigen Clouddienst, der keine Computerschlüssel aktualisiert hat, nachdem Ihr Datenverkehr auf den neuen Clouddienst verweist. Ausführlichere Informationen finden Sie hier.

      Beispiel: https://management.core.windows.net/<subscription-id>/services/hostedservices/<old-cloudservice-name>

Option 2: Bereitstellung austauschen.

Die Verwendung von Option 2 erfordert, dass Sie über einen leeren Stagingplatz verfügen. Wenn Sie derzeit über eine Bereitstellung im Stagingplatz verfügen, können Sie sie löschen und dann die folgenden Schritte ausführen:

  1. Durchführen der Swap-Bereitstellung über das Portal:

    1. Aktualisieren Sie Ihre Cloud Service-Bereitstellung, indem Sie Ihre CSPKG- und CSCFG-Datei im Staging-Slot hochladen. Dies enthält das neue Zertifikat, um die Computerschlüssel zu generieren. Ausführlichere Informationen finden Sie hier.

    2. Tauschen Sie Ihre Produktions- und Stagingslots. Ausführlichere Informationen finden Sie hier.

    3. Löschen Sie ihren Stagingplatz mit Ihrer vorherigen Produktionsbereitstellung. Details finden Sie hier

  2. Führen Sie die Swap Deployment über PowerShell aus.

    1. Stellen Sie Ihre cspkg und cscfg im Staging-Slot bereit. Ausführlichere Informationen finden Sie hier.

      Beispiel: New-AzureDeployment -ServiceName "yourServiceName" -Slot "Staging" -Package "YourCspkgFile.cspkg" -Configuration "YourConfigFile.cscfg"

    2. Tauschen Sie Ihre Produktions- und Stagingslots. Ausführlichere Informationen finden Sie hier.

      Beispiel: Move-AzureDeployment -ServiceName "yourServiceName"

    3. Löschen Sie ihren Stagingplatz mit Ihrer vorherigen Produktionsbereitstellung.

      Beispiel: Remove-AzureDeployment -ServiceName "yourServiceName" -Slot "Staging"

  3. Durchführen der Swap-Bereitstellung über die Rest-API:

    1. Erstellen Sie eine neue Bereitstellung im Stagingplatz mithilfe der Erstellungsbereitstellungs-API. Wenn Sie Ihre CSPKG- und CSCFG-Datei finden müssen, können Sie die Get-Package-API aufrufen.

      Beispiel: https://management.core.windows.net/<subscription-id>/services/hostedservices/<cloudservice-name>/deploymentslots/staging

    2. Tauschen Sie Ihre Produktions- und Stagingplätze mithilfe der Swap Deployment aus.

      Beispiel: https://management.core.windows.net/<subscription-id>/services/hostedservices/<cloudservice-name>

    3. Löschen des Stagingplatzes mit ihrer vorherigen Produktionsbereitstellung

      Beispiel: https://management.core.windows.net/<subscription-id>/services/hostedservices/<cloudservice-name>/deploymentslots/staging

Option 3: Generieren Sie ihre eigenen Computerschlüssel in der Web.config, und führen Sie eine gleichzeitige Bereitstellung aus.

  1. Generieren eines neuen XML-Elements für Computerschlüssel in PowerShell (siehe Anhang A).

  2. Aktualisieren Sie Ihre WebConfig mit den neuen Computerschlüsseln. Weitere Informationen finden Sie in den Anweisungen.

  3. Packen Sie Ihren Clouddienst neu.

  4. Führen Sie eine Upgradebereitstellung mithilfe der CSCFG-Datei aus, die die neuen Computerschlüssel enthält. Der Modus muss auf "gleichzeitig" festgelegt werden, oder dies kann dazu führen, dass sich die Anwendung in einem fehlerhaften Zustand befindet.

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 (8. Mai 2018): Empfehlung veröffentlicht.
  • V1.1 (24. Mai 2018): Faq #4 hinzugefügt, um zu erläutern, wie persistente Daten wiederhergestellt werden, nachdem die Daten mit MachineKey.Encode()/MachineKey.Protect() verschlüsselt wurden. Dies ist nur eine Informationsänderung.
  • V1.2 (29. Juni 2018): Geänderte Verweise des Azure-Gastbetriebssystems auf Azure Cloud Services