Microsoft Security Advisory 4092731

Frissítés az Azure Cloud Services gépkulcs-generáló algoritmusára

Közzétéve: 2018. május 8. | Frissítve: 2018. június 29.

Verzió: 1.2

Vezetői összefoglaló

A Microsoft kiadja ezt a biztonsági tanácsadást, amely a gépkulcsok Azure Cloud Serviceshez való létrehozásának módjával kapcsolatos frissítéssel kapcsolatos információkat nyújt. Ez a forgatókönyv hatással lehet az Azure Cloud Services webes szerepköröket használó ügyfelekre. A meglévő üzemelő példányokon a gépkulcsok nem megfelelő entrópiával és elavult titkosítási algoritmusokkal lettek létrehozva.

A probléma megoldásához a Microsoft kiadott egy frissítést az új Azure Cloud Services webszerepkör-telepítések gépkulcsainak létrehozásához használt algoritmushoz, beleértve a kriptográfiailag erős véletlenszerű számgenerálás használatát is. Az összes meglévő webes szerepkör megtartja a korábban létrehozott gépkulcsokat, kivéve, ha újra üzembe helyezi őket. Bizonyos részletes információk birtokában a támadó képes lehet kitalálni az elavult algoritmus által létrehozott gépkulcsokat. A sebezhető gépkulcsok bizonyos körülmények között lehetővé tehetik a biztonsági funkciók megkerülését.

Ez a tanácsadás útmutatást nyújt az ügyfelek számára annak megállapításához, hogy ez a forgatókönyv érinti-e őket, és hogy milyen műveleteket kell végrehajtaniuk.

Érintett felhőszolgáltatások

A webszerepköröket használó Azure-üzemelő példányokra hatással van ez a probléma. Az egyetlen kivétel az, ha saját gépkulcsot adott meg a Web.config fájlban a CS-csomagban. Az Azure-feldolgozói szerepköröket, a virtuális gépeket és az összes többi Azure-ajánlatot nem érinti.

Gyakori kérdések

1. Hogyan tudom, hogy érintett vagyok-e?

Ez a probléma minden Azure Cloud Service-webszerepkörre hatással van, kivéve, ha saját gépkulcsokat adott meg a Web.configban a CS-csomagban. Az Azure Cloud Service-feldolgozói szerepköröket, a virtuális gépeket és az összes többi Azure-ajánlatot nem érinti.

ASP.NET több célra is használ gépkulcsokat, például:

  • Webes űrlapnézetek adatainak illetéktelen illetéktelen beavatkozása
  • ASP.NET webűrlap munkamenet-cookie-jainak létrehozása és érvényesítése
  • CSRF-jogkivonatok
  • Titkosítás a machinekey.protect és machinekey.unprotect metódusokkal.

2. Vannak előfeltételek az érintett alkalmazás kijavításához?

Igen, ha a webszerepkör az Azure SDK for .Net egy kivezetett verziójával lett üzembe helyezve, akkor nem használja a továbbfejlesztett gépkulcs-generáló algoritmust. A támogatott verziókra hivatkozzon https://azure.microsoft.com/en-us/downloads/archive-net-downloads/ . Ha támogatott verzióra szeretne frissíteni, kattintson a korábban hivatkozott webhelyen található hivatkozásra a projekt letöltéséhez és ismételt üzembe helyezéséhez egy támogatott SDK-verzióval. Miután igazolta, hogy a projekt támogatott SDK-val van üzembe helyezve, kövesse a jelen tanácsadás további lépéseit.

3. Hogyan kijavítani az érintett alkalmazást?

Az új gépkulcsok létrehozásához újra üzembe kell helyeznie a .cspkg-t és a .cscfg-et új felhőszolgáltatásként, üzembe kell helyeznie a számítási feladatát az előkészítési ponton, és el kell végeznie a felcserélést (VIP Swap), vagy be kell szúrnia a saját gépkulcsait, majd egyidejű frissítést kell végrehajtania. Egy tipikus frissítéstelepítési művelet nem lesz elegendő. Az alábbiakban a magas szintű kockázatcsökkentési lehetőségeket ismertetjük, és a részletes lépéseket az alábbiakban ismertetjük:

1. lehetőség: A számítási feladat üzembe helyezése egy új felhőszolgáltatásban. Frissítse a CNAME-t, hogy a forgalmat az új felhőszolgáltatásra irányíthassa. Ha nincs forgalom a régi helyre, törölheti a régi felhőszolgáltatást.

2. lehetőség: Helyezze üzembe a Cloud Service-t az előkészítési ponton, és végezzen el egy felcserélési üzembe helyezést.

3. lehetőség: Saját gépkulcsok létrehozása a Web.config-ban, és egyidejű frissítés végrehajtása. Ez az összes példányt egyszerre frissíti, ezért az alkalmazás leállását fogja okozni.

Javasoljuk, hogy az állásidő elkerülése érdekében használja az 1 . lehetőséget. Azt is javasoljuk, hogy az alacsony kihasználtsági időszakokban végezze el a kockázatcsökkentést, mert a munkamenetek megszakadhatnak a gépkulcsok módosítása során.

Megjegyzés: Az alkalmazás IP-címe megváltozik, miután beszerezte az új gépkulcsokat az 1. és a 2. lehetőséggel.

4. A gépkulcsot használva titkosítottam az állandó adatokat a MachineKey.Encode()/MachineKey.Protect() használatával. Hogyan helyreállítani az adatokat?

Ha a MachineKey-t az adatok titkosítására használták (MachineKey.Encode()/MachineKey.Protect() használatával, akkor a megoldási lépések végrehajtása előtt a web.configban definiált régi gépkulcsot és algoritmusokat kell használni az adatok visszafejtéséhez (a MachineKey.Decode()/MachineKey.Unprotect() meghívásával). A kockázatcsökkentési lépések elvégzése után a MachineKey.Encode()/MachineKey.Protect() és a MachineKey.Decode()/MachineKey.Unprotect() hívásai a web.config frissített gépkulcsát és algoritmusait fogják használni.

5. Hogyan tudom, hogy az alkalmazásom az új gépkulcs-algoritmust használja?

Ha csak egy üzemelő példánya van a felhőszolgáltatásban, elegendő az Azure Management Portalon ellenőriznie, hogy megjelenik-e az Azure Machine Key-tanúsítvány a felhőszolgáltatás Tanúsítvány lapján. Ha ez a tanúsítvány jelen van, az üzembe helyezés a gépkulcs-algoritmust használja.

Ha két üzemelő példánya van a felhőszolgáltatásban (éles és átmeneti), távoli asztalra kell helyeznie a webes szerepköröket, és meg kell néznie az IIS-konfigurációt. Ha megjelenik a gépkulcstanúsítvány, az új gépkulcs-algoritmust használja. Ezt az ellenőrzést minden üzemelő példányban egy webes szerepkörnek kell elvégeznie. Ha nem tud csatlakozni a virtuális géphez, küldjön egy támogatási jegyet (a 7. helyen található utasításokat), és a támogatási csapatunk segíthet ellenőrizni, hogy az üzemelő példányok az új gépkulcsot használják-e.

Azure Certificates

6. Mi a "Microsoft Azure Service Management for MachineKey" tanúsítvány?

Ez az a tanúsítvány, amely a gépkulcsok és a továbbfejlesztett algoritmus titkosítására szolgál.

7. Ki kezeli a "Microsoft Azure Service Management for MachineKey" tanúsítványt, és mi történik, ha lejár?

Az Azure kezeli ezt a tanúsítványt. Az ügyfeleknek nem kell aggódniuk a tanúsítvány lejárati dátuma miatt, mert egyszer használják az új gépkulcsok létrehozásához az új algoritmussal. A lejárati dátum nem okoz semmilyen hatást.

8. Törölhető vagy eltávolítható a tanúsítvány a virtuális gépről?

Nem, a tanúsítvány nem távolítható el.

9. Ha kérdéseim vannak a kockázatcsökkentési lépésekkel kapcsolatban, mit tehetek?

Küldjön egy támogatási esetet a Cloud Servicesben a szokásos eszkalációs folyamattal. Az Azure Portalon való eszkaláláshoz kövesse az alábbi lépéseket:

  1. Nyissa meg a Súgó + támogatás lehetőséget az Azure Portalon.
  2. Válassza ki a technikai probléma típusát.
  3. Válassza ki az előfizetését, majd válassza ki a Cloud Services (webes szerepkörök/feldolgozói szerepkörök) szolgáltatást a Szolgáltatásokban.
  4. Kattintson a Tovább gombra, válassza a MachineKey tanúsítványfrissítése lehetőséget a probléma típusaként, majd töltse ki a támogatási jegy részleteit.

A kockázatcsökkentés végrehajtásának részletes lépései

1. lehetőség: A felhőszolgáltatás újbóli üzembe helyezése.

  1. Végezzen újratelepítést a Portálon keresztül:

    1. Hozzon létre egy új felhőszolgáltatást a .cspkg és a .cscfg használatával. A részleteket itt találja.
    2. Frissítse a CName vagy A rekordot , hogy a forgalmat az új felhőszolgáltatásra irányíthassa.
    3. Törölje a régi felhőszolgáltatást, miután a forgalom az új felhőszolgáltatásra mutat.
  2. Ismételt üzembe helyezés végrehajtása a PowerShell-lel:

    1. Hozzon létre egy új felhőszolgáltatást a .cspkg és a .cscfg használatával. A részleteket itt találja.

      Példa: New-AzureService -ServiceName "yourServiceName" -Label "MyTestService" -Location "South Central US"

    2. Hozzon létre egy új üzembe helyezést a .cspkg és a .cscfg használatával. A részleteket itt találja.

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

    3. Frissítse a CName vagy A rekordot , hogy a forgalmat az új felhőszolgáltatásra irányíthassa.

    4. Törölje a korábbi felhőszolgáltatást, amely nem rendelkezik frissített gépkulcsokkal, miután a forgalom az új Felhőszolgáltatásra mutat. A részleteket itt találja.

      Példa: Remove-AzureService -ServiceName "yourOldServiceName"

  3. Ismételt üzembe helyezés végrehajtása a Rest API-val:

    1. Hozzon létre egy új felhőszolgáltatást. A részleteket itt találja.

      Példa: https://management.core.windows.net/<előfizetés-azonosító>/szolgáltatások/hostedservices

    2. Hozzon létre egy új üzembe helyezést az üzembe helyezési API létrehozásával. Ha meg kell keresnie a .cspkg-t és a .cscfg-et, meghívhatja a Get-Package API-t).

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

    3. Törölje a korábbi felhőszolgáltatást, amely nem rendelkezik frissített gépkulcsokkal, miután a forgalom az új Felhőszolgáltatásra mutat. A részleteket itt találja.

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

2. lehetőség: Üzembe helyezés felcserélése.

A 2. lehetőség használatához üres előkészítési pontra van szükség. Ha az előkészítési ponton jelenleg üzemel egy üzemelő példány, törölheti azt, majd kövesse az alábbi lépéseket:

  1. Végezze el a felcserélési üzembe helyezést a Portálon keresztül:

    1. Frissítse a Cloud Service üzembe helyezését a .cspkg és a .cscfg feltöltésével az előkészítési ponton. Ez tartalmazza a gépkulcsok létrehozásához szükséges új tanúsítványt. A részleteket itt találja.

    2. Cserélje fel az éles és az előkészítési pontokat. A részleteket itt találja.

    3. Törölje az előkészítési pontot az előző éles üzembe helyezéssel. Részletek itt

  2. Hajtsa végre az üzembe helyezés felcserélése a PowerShell-lel.

    1. Helyezze üzembe a cspkg-t és a cscfg-et az előkészítési ponton. A részleteket itt találja.

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

    2. Cserélje fel az éles és az előkészítési pontokat. A részleteket itt találja.

      Példa: Move-AzureDeployment -ServiceName "yourServiceName"

    3. Törölje az előkészítési pontot az előző éles üzembe helyezéssel.

      Példa: Remove-AzureDeployment -ServiceName "yourServiceName" -Slot "Előkészítés"

  3. Hajtsa végre a swap üzembe helyezést a Rest API-val:

    1. Hozzon létre egy új üzembe helyezést az előkészítési ponton a létrehozási üzembehelyezési API használatával. Ha meg kell keresnie a .cspkg-t és a .cscfg-et, meghívhatja a Get-Package API-t).

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

    2. Az éles és átmeneti tárolóhelyek felcserélése az üzembe helyezés felcserélésével.

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

    3. Az előkészítési pont törlése az előző éles üzembe helyezéssel

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

3. lehetőség: Saját gépkulcsok létrehozása a Web.config-ban, és egyidejű üzembe helyezés végrehajtása.

  1. Új gépkulcs XML-elemének létrehozása a PowerShellben (lásd az A függeléket).

  2. Frissítse a WebConfigot az új gépkulcsokkal. Lásd az utasításokat.

  3. Csomagolja újra a felhőszolgáltatást.

  4. Végezzen frissítéstelepítést az új gépkulcsokat tartalmazó .cscfg fájl használatával. A módnak egyidejűnek kell lennie, vagy ez az alkalmazás nem megfelelő állapotú állapotát okozhatja.

Felelősséget kizáró nyilatkozat

A jelen tanácsadásban megadott információk bármilyen garanciális szavatosság nélkül". A Microsoft kizár minden kifejezett vagy vélelmezett garanciát, beleértve a kereskedelmi forgalomra és az adott célra való alkalmasságra vonatkozó szavatosságot. A Microsoft Corporation vagy beszállítói semmilyen esetben sem vonhatók felelősségre semmilyen kárért, beleértve a közvetlen, közvetett, járulékos, következményi, üzleti nyereség elvesztését vagy különleges károkat, még akkor sem, ha a Microsoft Corporationt vagy szállítóit értesítették az ilyen károk lehetőségéről. Egyes államok nem teszik lehetővé a következményi vagy járulékos károkért való felelősség kizárását vagy korlátozását, így a fenti korlátozás nem alkalmazható.

Változatok

  • 1.0-s verzió (2018. május 8.): Tanácsadói közzététel.
  • V1.1 (2018. május 24.): Hozzáadva a 4. gyakori kérdéseket, hogy elmagyarázza, hogyan állíthatók helyre az állandó adatok az adatok MachineKey.Encode()/MachineKey.Protect() használatával történő titkosítása után. Ez csak tájékoztató jellegű változás.
  • 1.2-s verzió (2018. június 29.): Az Azure Guest OS módosított hivatkozásai Azure Cloud Servicesre