Share via


Microsoft Security Advisory 4092731

Eseguire l'aggiornamento all'algoritmo di generazione di chiavi del computer di Azure Servizi cloud

Pubblicato: 8 maggio 2018 | Aggiornamento del 29 giugno 2018

Versione: 1.2

Schema riepilogativo

Microsoft rilascia questo avviso di sicurezza per fornire informazioni relative a un aggiornamento nel modo in cui vengono generate le chiavi del computer per Azure Servizi cloud. Questo scenario può influire sui clienti che usano i ruoli Web di Azure Servizi cloud. Le chiavi del computer nelle distribuzioni esistenti sono state generate con entropia insufficiente e usano algoritmi di crittografia deprecati.

Per risolvere questo problema, Microsoft ha rilasciato un aggiornamento all'algoritmo usato per generare chiavi del computer in nuove distribuzioni di ruolo Web di Azure Servizi cloud, incluso l'uso della generazione di numeri casuali crittograficamente sicuri. Tutti i ruoli Web esistenti manterranno le chiavi del computer generate in precedenza, a meno che non vengano ridistribuiti. Dato alcune informazioni dettagliate, un utente malintenzionato potrebbe essere in grado di indovinare le chiavi del computer create dall'algoritmo deprecato. Le chiavi del computer vulnerabili possono, in alcune circostanze, consentire il bypass delle funzionalità di sicurezza.

Questo avviso fornisce indicazioni per i clienti per identificare se sono interessati da questo scenario e cosa, se presente, azioni da intraprendere.

Servizi cloud interessati

Le distribuzioni di Azure che usano ruoli Web sono interessate da questo problema. L'unica eccezione è se è stata specificata la propria chiave del computer in Web.config nel pacchetto CS. I ruoli di lavoro di Azure, i Macchine virtuali e tutte le altre offerte di Azure non sono interessati.

Domande frequenti

1. Ricerca per categorie sapere se sono interessato?

Tutti i ruoli Web del servizio cloud di Azure sono interessati da questo problema, tranne se sono state fornite chiavi del computer personalizzate in Web.config nel pacchetto CS. I ruoli di lavoro del servizio cloud di Azure, i Macchine virtuali e tutte le altre offerte di Azure non sono interessati.

ASP.NET usa le chiavi del computer per diversi scopi, tra cui:

  • Antimanomissione dei dati dello stato di visualizzazione modulo Web
  • Generazione e convalida dei cookie di sessione di ASP.NET Web Form
  • Token anti-CSRF
  • Crittografia con i metodi machinekey.protect e machinekey.unprotect.

2. Esistono prerequisiti per la correzione dell'applicazione interessata?

Sì, se il ruolo Web è stato distribuito con una versione ritirata di Azure SDK per .Net, non userà l'algoritmo avanzato di generazione di chiavi del computer. Fare riferimento https://azure.microsoft.com/en-us/downloads/archive-net-downloads/ per le versioni supportate. Per eseguire l'aggiornamento a una versione supportata, fare clic sul collegamento nel sito a cui si fa riferimento in precedenza per scaricare e ridistribuire il progetto con una versione dell'SDK supportata. Dopo aver convalidato la distribuzione del progetto con un SDK supportato, seguire i passaggi aggiuntivi descritti in questo avviso.

3. Ricerca per categorie correggere l'applicazione interessata?

Per generare le nuove chiavi del computer, è necessario ridistribuire .cspkg e .cscfg come nuovo servizio cloud, distribuire il carico di lavoro nello slot di staging ed eseguire una distribuzione di scambio (scambio VIP) oppure inserire le proprie chiavi del computer e quindi eseguire un aggiornamento simultaneo. Un'operazione di distribuzione degli aggiornamenti tipica non sarà sufficiente. Di seguito vengono descritte le opzioni di mitigazione di alto livello e i passaggi dettagliati descritti di seguito:

Opzione 1: Distribuire il carico di lavoro in un nuovo servizio cloud. Aggiornare il CNAME per indirizzare il traffico al nuovo servizio cloud. Quando non viene eseguito alcun traffico verso il sito precedente, è possibile eliminare il vecchio servizio cloud.

Opzione 2: Distribuire il servizio cloud nello slot di staging ed eseguire una distribuzione di scambio.

Opzione 3: generare chiavi del computer personalizzate in Web.config ed eseguire un aggiornamento simultaneo. In questo modo tutte le istanze verranno aggiornate contemporaneamente e pertanto causeranno tempi di inattività dell'applicazione.

È consigliabile usare l'opzione 1 per evitare tempi di inattività. È anche consigliabile eseguire la mitigazione durante periodi di utilizzo ridotti, perché le sessioni possono essere interrotte durante la modifica delle chiavi del computer.

Nota: l'indirizzo IP dell'applicazione cambierà dopo aver ottenuto le nuove chiavi del computer con l'opzione 1 e l'opzione 2.

4. Ho usato la chiave del computer per crittografare i dati persistenti usando MachineKey.Encode()/MachineKey.Protect(). Ricerca per categorie recuperare i dati?

Se machineKey è stato usato per crittografare i dati ( usando MachineKey.Encode()/MachineKey.Protect() , è necessario usare la chiave e gli algoritmi del computer precedenti definiti nel file web.config per decrittografare i dati ( chiamando rispettivamente MachineKey.Decode()/MachineKey.Unprotect() prima di eseguire i passaggi di mitigazione. Al termine della procedura di mitigazione, tutte le chiamate a MachineKey.Encode()/MachineKey.Protect() e MachineKey.Decode()/MachineKey.Unprotect() useranno la chiave e gli algoritmi del computer aggiornati da web.config.

5. Ricerca per categorie sapere che l'applicazione sta usando il nuovo algoritmo di chiave del computer?

Se nel servizio cloud è presente una sola distribuzione, verificare che nella scheda Certificato del servizio cloud nel portale di gestione di Azure sia sufficiente visualizzare il certificato di Chiave di Azure. Se questo certificato è presente, la distribuzione usa l'algoritmo di chiave del computer.

Se sono presenti due distribuzioni nel servizio cloud (produzione e gestione temporanea), sarà necessario eseguire il desktop remoto nei ruoli Web ed esaminare la configurazione di IIS. Se viene visualizzato il certificato della chiave del computer, si usa il nuovo algoritmo di chiave del computer. È necessario eseguire questo controllo per un ruolo Web in ogni distribuzione. Se non è possibile connettersi alla macchina virtuale, inviare un ticket di supporto (istruzioni nel numero 7) e il team di supporto può verificare se le distribuzioni usano la nuova chiave del computer.

Azure Certificates

6. Che cos'è il certificato "Gestione dei servizi di Microsoft Azure per MachineKey"?

Si tratta del certificato usato per crittografare le chiavi del computer insieme all'algoritmo avanzato.

7. Chi gestisce il certificato "Gestione dei servizi di Microsoft Azure per MachineKey" e cosa accade quando scade?

Azure gestisce questo certificato. I clienti non devono preoccuparsi della data di scadenza di questo certificato perché viene usata una volta per generare le nuove chiavi del computer con il nuovo algoritmo. La data di scadenza non causerà alcun impatto.

8. Il certificato può essere eliminato o rimosso dalla macchina virtuale?

No, il certificato non può essere rimosso.

9. Se ho domande sui passaggi di mitigazione, cosa posso fare?

Inviare un caso di supporto in Servizi cloud usando il processo di escalation standard. Per eseguire l'escalation nel portale di Azure, seguire questa procedura:

  1. Passare a Guida e supporto nel portale di Azure.
  2. Selezionare il tipo di problema tecnico .
  3. Selezionare la sottoscrizione e quindi selezionare il servizio Servizi cloud (ruoli Web/ruoli di lavoro) in Servizi.
  4. Fare clic su Avanti , scegliere Aggiornamento certificato MachineKey come tipo di problema e quindi compilare i dettagli del ticket di supporto.

Procedura dettagliata per eseguire la mitigazione

Opzione 1: ridribuire il servizio cloud.

  1. Eseguire una ridistribuzione tramite il portale:

    1. Creare un nuovo servizio cloud con .cspkg e .cscfg. Vedere i dettagli qui.
    2. Aggiornare il record CName o A per indirizzare il traffico al nuovo servizio cloud.
    3. Eliminare il servizio cloud precedente dopo che il traffico punta al nuovo servizio cloud.
  2. Eseguire una ridistribuzione tramite PowerShell:

    1. Creare un nuovo servizio cloud con .cspkg e .cscfg. Vedere i dettagli qui.

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

    2. Creare una nuova distribuzione con .cspkg e .cscfg. Vedere i dettagli qui.

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

    3. Aggiornare il record CName o A per indirizzare il traffico al nuovo servizio cloud.

    4. Eliminare il servizio cloud precedente che non dispone di chiavi del computer aggiornate dopo che il traffico punta al nuovo servizio cloud. Vedere i dettagli qui.

      Esempio: Remove-AzureService -ServiceName "yourOldServiceName"

  3. Eseguire una ridistribuzione tramite l'API REST:

    1. Creare un nuovo servizio cloud Vedere i dettagli qui.

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

    2. Creare una nuova distribuzione usando l'API di creazione della distribuzione. Se è necessario trovare .cspkg e .cscfg, è possibile chiamare l'API Get-Package.

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

    3. Eliminare il servizio cloud precedente che non dispone di chiavi del computer aggiornate dopo che il traffico punta al nuovo servizio cloud. Vedere i dettagli qui.

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

Opzione 2: Scambia distribuzione.

L'uso dell'opzione 2 richiede che sia disponibile uno slot di staging vuoto. Se si dispone di una distribuzione nello slot di staging, è possibile eliminarla e quindi seguire questa procedura:

  1. Eseguire la distribuzione dello scambio tramite il portale:

    1. Aggiornare la distribuzione del servizio cloud caricando .cspkg e .cscfg nello slot di staging. Questo conterrà il nuovo certificato per generare le chiavi del computer. Vedere i dettagli qui.

    2. Scambiare gli slot di produzione e di gestione temporanea. Vedere i dettagli qui.

    3. Eliminare lo slot di staging con la distribuzione di produzione precedente. Vedere i dettagli qui

  2. Eseguire la distribuzione dello scambio tramite PowerShell.

    1. Distribuire cspkg e cscfg nello slot di staging. Vedere i dettagli qui.

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

    2. Scambiare gli slot di produzione e di gestione temporanea. Vedere i dettagli qui.

      Esempio: Move-AzureDeployment -ServiceName "yourServiceName"

    3. Eliminare lo slot di staging con la distribuzione di produzione precedente.

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

  3. Eseguire la distribuzione dello scambio tramite l'API REST:

    1. Creare una nuova distribuzione nello slot di staging usando l'API di creazione della distribuzione. Se è necessario trovare .cspkg e .cscfg, è possibile chiamare l'API Get-Package.

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

    2. Scambiare gli slot di produzione e di gestione temporanea usando La distribuzione di scambio.

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

    3. Eliminare lo slot di staging con la distribuzione di produzione precedente

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

Opzione 3: generare chiavi del computer personalizzate in Web.config ed eseguire una distribuzione simultanea.

  1. Generare un nuovo elemento XML della chiave del computer in PowerShell (vedere Appendice A).

  2. Aggiornare WebConfig con le nuove chiavi del computer. Vedere le istruzioni.

  3. Ripacchetto del servizio cloud.

  4. Eseguire una distribuzione di aggiornamento usando il file con estensione cscfg che contiene le nuove chiavi del computer. La modalità deve essere impostata su simultanea, altrimenti l'applicazione potrebbe trovarsi in uno stato non integro.

Dichiarazione di non responsabilità

Le informazioni fornite in questo avviso vengono fornite "così com'è" senza garanzia di alcun tipo. Microsoft dichiara tutte le garanzie, espresse o implicite, incluse le garanzie di commerciabilità e idoneità per uno scopo specifico. In nessun caso, Microsoft Corporation o i suoi fornitori saranno responsabili di qualsiasi danno, incluso diretto, indiretto, accidentale, consequenziale, perdita di profitti aziendali o danni speciali, anche se Microsoft Corporation o i suoi fornitori sono stati informati della possibilità di tali danni. Alcuni stati non consentono l'esclusione o la limitazione della responsabilità per danni consequenziali o accidentali, pertanto la limitazione precedente potrebbe non essere applicata.

Revisioni

  • V1.0 (8 maggio 2018): Avviso pubblicato.
  • V1.1 (24 maggio 2018): aggiunta delle domande frequenti n. 4 per spiegare come ripristinare i dati persistenti dopo la crittografia dei dati usando MachineKey.Encode()/MachineKey.Protect(). Si tratta solo di una modifica informativa.
  • V1.2 (29 giugno 2018): Riferimenti modificati del sistema operativo guest di Azure in Azure Servizi cloud