Sdílet prostřednictvím


Poradce microsoftu pro zabezpečení 4092731

Aktualizace algoritmu strojového klíče služby Azure Cloud Services

Publikováno: 8. května 2018 | Aktualizováno 29. června 2018

Verze: 1.2

Shrnutí

Společnost Microsoft vydává toto poradce pro zabezpečení, aby poskytovala informace související s aktualizací způsobem generování klíčů počítače pro Azure Cloud Services. Tento scénář může mít vliv na zákazníky, kteří používají webové role Azure Cloud Services. Klíče počítače v existujících nasazeních byly generovány s nedostatečným entropií a používáním zastaralých kryptografických algoritmů.

Microsoft vydal aktualizaci algoritmu používaného ke generování klíčů počítače v nových nasazeních webových rolí Azure Cloud Services, včetně použití kryptograficky silného náhodného generování čísel. Všechny existující webové role si zachovají dříve vygenerované klíče počítače, pokud se nenasadí znovu. Vzhledem k určitým podrobným informacím může útočník uhodnout klíče počítače vytvořené zastaralým algoritmem. Ohrožené klíče počítače můžou za určitých okolností umožňovat obejití funkcí zabezpečení.

Toto poradenství poskytuje zákazníkům pokyny k určení, jestli jsou ovlivněny tímto scénářem, a co (pokud existuje) akcí, které potřebují provést.

Ovlivněné cloudové služby

Tento problém má vliv na nasazení Azure, která používají webové role. Jedinou výjimkou je, pokud jste v balíčku CS zadali vlastní klíč počítače v souboru Web.config. Role pracovních procesů Azure, virtuální počítače a všechny ostatní nabídky Azure nejsou ovlivněné.

Nejčastější dotazy

1. Návody vědět, jestli jsem ovlivněn?

Tento problém má vliv na všechny webové role cloudové služby Azure, s výjimkou případů, kdy jste v balíčku CS zadali vlastní klíče počítače v souboru Web.config. Role pracovního procesu cloudové služby Azure, virtuální počítače a všechny ostatní nabídky Azure nejsou ovlivněny.

ASP.NET používá klíče počítače pro několik účelů, mezi které patří:

  • Ochrana proti manipulaci s daty zobrazení webového formuláře
  • Generování a ověřování souborů cookie relace webového formuláře ASP.NET
  • Tokeny proti CSRF
  • Šifrování pomocí metod machinekey.protect a machinekey.unprotect

2. Existují nějaké požadavky na opravu ovlivněné aplikace?

Ano, pokud byla vaše webová role nasazena s vyřazenou verzí sady Azure SDK pro .Net, nebude používat vylepšený algoritmus generování klíčů počítače. Projděte si prosím informace https://azure.microsoft.com/en-us/downloads/archive-net-downloads/ o podporovaných verzích. Pokud chcete upgradovat na podporovanou verzi, klikněte na odkaz na dříve odkazovaný web a stáhněte a znovu nasaďte projekt s podporovanou verzí sady SDK. Jakmile ověříte, že je projekt nasazený s podporovanou sadou SDK, postupujte podle dalších kroků v tomto poradci.

3. Návody opravit ovlivněnou aplikaci?

Pokud chcete vygenerovat nové klíče počítače, musíte znovu nasadit soubory .cspkg a .cscfg jako novou cloudovou službu, nasadit úlohu do přípravného slotu a provést prohození (prohození VIRTUÁLNÍCH IP adres) nebo vložit vlastní klíče počítače a pak provést souběžný upgrade. Typická operace nasazení aktualizací nebude stačit. Následující popis popisuje možnosti zmírnění vysoké úrovně a podrobné kroky jsou popsány níže:

Možnost 1: Nasazení úlohy do nové cloudové služby Aktualizujte CNAME tak, aby odkazovat provoz na novou cloudovou službu. Když do starého webu nejdou žádné přenosy, můžete odstranit starou cloudovou službu.

Možnost 2: Nasazení cloudové služby do přípravného slotu a provedení prohození nasazení

Možnost 3: Vygenerujte vlastní klíče počítače v souboru Web.config a proveďte souběžnou aktualizaci. Tím se aktualizují všechny instance najednou, a proto způsobí výpadek aplikace.

Doporučujeme použít možnost 1 , abyste se vyhnuli výpadkům. Doporučujeme také provést zmírnění rizik během období nízkého využití, protože během změny klíčů počítače může dojít k narušení relací.

Poznámka: IP adresa aplikace se změní, jakmile získáte nové klíče počítače s možností 1 a možností 2.

4. Použil(a) jsem klíč počítače k šifrování trvalých dat pomocí MachineKey.Encode()/MachineKey.Protect(). Návody obnovit data?

Pokud byl MachineKey použit k šifrování dat (pomocí MachineKey.Encode()/MachineKey.Protect() ) starý klíč počítače a algoritmy definované v souboru web.config musí být použity k dešifrování dat (zavoláním MachineKey.Decode()/MachineKey.Unprotect() před provedením kroků pro zmírnění rizik. Po dokončení kroků pro zmírnění rizik budou všechna volání MachineKey.Encode()/MachineKey.Protect() a MachineKey.Decode()/MachineKey.Unprotect() používat aktualizovaný klíč počítače a algoritmy z web.config.

5. Návody vědět, že moje aplikace používá nový algoritmus klíče počítače?

Pokud máte v cloudové službě jenom jedno nasazení, zkontrolujte, jestli na kartě Certifikát cloudové služby na portálu pro správu Azure nestačí certifikát Klíče počítače Azure. Pokud je tento certifikát k dispozici, vaše nasazení používá algoritmus klíče počítače.

Pokud máte ve své cloudové službě dvě nasazení (produkční a přípravná), budete muset ke svým webovým rolím vzdálenou plochu připojit a podívat se na konfiguraci služby IIS. Pokud se zobrazí certifikát klíče počítače, používáte nový algoritmus klíče počítače. Budete muset provést kontrolu jedné webové role v každém nasazení. Pokud se k virtuálnímu počítači nemůžete připojit, vytvořte lístek podpory (pokyny v #7) a náš tým podpory vám může pomoct ověřit, jestli vaše nasazení používají nový klíč počítače.

Azure Certificates

6. Co je certifikát Microsoft Azure Service Management for MachineKey?

Jedná se o certifikát, který se používá k šifrování klíčů počítače společně s vylepšeným algoritmem.

7. Kdo spravuje certifikát Microsoft Azure Service Management for MachineKey a co se stane, když vyprší jeho platnost?

Azure tento certifikát spravuje. Zákazníci nemusí mít obavy o datum vypršení platnosti tohoto certifikátu, protože se používá jednou k vygenerování nových klíčů počítače pomocí nového algoritmu. Datum vypršení platnosti nezpůsobí žádný dopad.

8. Může být certifikát z virtuálního počítače odstraněn nebo odebrán?

Ne, certifikát nelze odebrat.

9. Pokud mám otázky týkající se kroků pro zmírnění rizik, co můžu dělat?

Pomocí standardního procesu eskalace odešlete případ podpory ve službě Cloud Services. Pokud chcete eskalovat na webu Azure Portal, postupujte takto:

  1. Na webu Azure Portal přejděte do nápovědy a podpory .
  2. Vyberte typ technického problému.
  3. Vyberte své předplatné a pak ve službách vyberte službu Cloud Services (webové role nebo role pracovního procesu).
  4. Klepněte na tlačítko Další , zvolte MachineKey Certificate Update jako typ problému a pak vyplňte podrobnosti o lístku podpory.

Podrobné kroky pro zmírnění rizik

Možnost 1: Opětovné nasazení cloudové služby

  1. Opětovné nasazení prostřednictvím portálu:

    1. Vytvořte novou cloudovou službu pomocí souboru .cspkg a .cscfg. Podrobnosti najdete tady.
    2. Aktualizujte záznam CName nebo A tak, aby odkazovat provoz na novou cloudovou službu.
    3. Po nasměrování provozu na novou cloudovou službu odstraňte starou cloudovou službu.
  2. Proveďte opětovné nasazení prostřednictvím PowerShellu:

    1. Vytvořte novou cloudovou službu pomocí souboru .cspkg a .cscfg. Podrobnosti najdete tady.

      Příklad: New-AzureService -ServiceName "yourServiceName" -Label "MyTestService" -Location "Usa – středojižní"

    2. Vytvořte nové nasazení pomocí souboru .cspkg a .cscfg. Podrobnosti najdete tady.

      Příklad: New-AzureDeployment -ServiceName "yourServiceName" -Slot "Production" -Package "YourCspkgFile.cspkg" -Configuration "YourConfigFile.cscfg"

    3. Aktualizujte záznam CName nebo A tak, aby odkazovat provoz na novou cloudovou službu.

    4. Odstraňte předchozí cloudovou službu, která po nasměrování provozu na novou cloudovou službu neaktualizovala klíče počítače. Podrobnosti najdete tady.

      Příklad: Remove-AzureService -ServiceName "yourOldServiceName"

  3. Proveďte opětovné nasazení prostřednictvím rozhraní REST API:

    1. Vytvořte novou cloudovou službu. Podrobnosti najdete tady.

      Příklad: https://management.core.windows.net/<subscription-id>/services/hostedservices

    2. Vytvořte nové nasazení pomocí rozhraní API pro vytvoření nasazení. Pokud potřebujete najít soubor .cspkg a .cscfg, můžete volat rozhraní GET-Package API).

      Příklad: https://management.core.windows.net/<subscription-id>/services/hostedservices/<cloudservice-name>/deploymentslots/production

    3. Odstraňte předchozí cloudovou službu, která po nasměrování provozu na novou cloudovou službu neaktualizovala klíče počítače. Podrobnosti najdete tady.

      Příklad: https://management.core.windows.net/<subscription-id>/services/hostedservices/<old-cloudservice-name>

Možnost 2: Prohození nasazení

Použití možnosti 2 vyžaduje, abyste měli prázdný přípravný slot. Pokud aktuálně máte nasazení v přípravném slotu, můžete ho odstranit a pak postupovat takto:

  1. Nasazení prohození proveďte prostřednictvím portálu:

    1. Aktualizujte nasazení cloudové služby tak, že do přípravného slotu nahrajete soubor .cspkg a .cscfg. Bude obsahovat nový certifikát pro vygenerování klíčů počítače. Podrobnosti najdete tady.

    2. Prohoďte produkční a přípravné sloty. Podrobnosti najdete tady.

    3. Odstraňte přípravný slot s předchozím produkčním nasazením. Podrobnosti najdete tady.

  2. Proveďte prohození nasazení přes PowerShell.

    1. Nasaďte cspkg a cscfg do přípravného slotu. Podrobnosti najdete tady.

      Příklad: New-AzureDeployment -ServiceName "yourServiceName" -Slot "Staging" -Package "YourCspkgFile.cspkg" -Configuration "YourConfigFile.cscfg"

    2. Prohoďte produkční a přípravné sloty. Podrobnosti najdete tady.

      Příklad: Move-AzureDeployment -ServiceName "yourServiceName"

    3. Odstraňte přípravný slot s předchozím produkčním nasazením.

      Příklad: Remove-AzureDeployment -ServiceName "yourServiceName" -Slot "Staging"

  3. Proveďte prohození nasazení prostřednictvím rozhraní REST API:

    1. Vytvořte nové nasazení v přípravném slotu pomocí rozhraní API pro vytvoření nasazení. Pokud potřebujete najít soubor .cspkg a .cscfg, můžete volat rozhraní GET-Package API).

      Příklad: https://management.core.windows.net/<subscription-id>/services/hostedservices/<cloudservice-name>/deploymentslots/staging

    2. Prohození produkčních a přípravných slotů pomocí prohození nasazení

      Příklad: https://management.core.windows.net/<subscription-id>/services/hostedservices/<cloudservice-name>

    3. Odstranění přípravného slotu s předchozím produkčním nasazením

      Příklad: https://management.core.windows.net/<subscription-id>/services/hostedservices/<cloudservice-name>/deploymentslots/staging

Možnost 3: Vygenerujte vlastní klíče počítače v souboru Web.config a proveďte souběžné nasazení.

  1. Generování nového elementu XML klíče počítače v PowerShellu (viz příloha A).

  2. Aktualizujte webConfig pomocí nových klíčů počítače. Viz pokyny.

  3. Znovu zabalte cloudovou službu.

  4. Proveďte nasazení upgradu pomocí souboru .cscfg, který obsahuje nové klíče počítače. Režim musí být nastavený na souběžný nebo to může způsobit, že vaše aplikace bude ve špatném stavu.

Právní doložka

Informace uvedené v tomto poradenství jsou poskytovány "tak, jak jsou" bez záruky jakéhokoli druhu. Společnost Microsoft odmítá všechny záruky, ať už výslovné nebo předpokládané, včetně záruk prodejnosti a vhodnosti pro určitý účel. V žádném případě společnost Microsoft Corporation nebo její dodavatelé nenese odpovědnost za jakékoli škody, včetně přímých, nepřímých, náhodných, následných, ztrát obchodních zisků nebo zvláštních škod, a to i v případě, že společnost Microsoft Corporation nebo její dodavatelé byli upozorněni na možnost těchto škod. Některé státy neumožňují vyloučení nebo omezení odpovědnosti za následné nebo náhodné škody, takže výše uvedené omezení nemusí platit.

Revize

  • V1.0 (8. května 2018): Poradce publikováno.
  • V1.1 (24. května 2018): Přidali jsme nejčastější dotazy č. 4, které vysvětlují, jak obnovit trvalá data po zašifrování dat pomocí MachineKey.Encode()/MachineKey.Protect(). Jedná se pouze o informační změnu.
  • V1.2 (29. června 2018): Změna odkazů hostovaného operačního systému Azure na Azure Cloud Services