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.
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:
- Nyissa meg a Súgó + támogatás lehetőséget az Azure Portalon.
- Válassza ki a technikai probléma típusát.
- 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.
- 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.
Végezzen újratelepítést a Portálon keresztül:
- Hozzon létre egy új felhőszolgáltatást a .cspkg és a .cscfg használatával. A részleteket itt találja.
- Frissítse a CName vagy A rekordot , hogy a forgalmat az új felhőszolgáltatásra irányíthassa.
- Törölje a régi felhőszolgáltatást, miután a forgalom az új felhőszolgáltatásra mutat.
Ismételt üzembe helyezés végrehajtása a PowerShell-lel:
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"
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"
Frissítse a CName vagy A rekordot , hogy a forgalmat az új felhőszolgáltatásra irányíthassa.
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"
Ismételt üzembe helyezés végrehajtása a Rest API-val:
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
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
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:
Végezze el a felcserélési üzembe helyezést a Portálon keresztül:
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.
Cserélje fel az éles és az előkészítési pontokat. A részleteket itt találja.
Törölje az előkészítési pontot az előző éles üzembe helyezéssel. Részletek itt
Hajtsa végre az üzembe helyezés felcserélése a PowerShell-lel.
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"
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"
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"
Hajtsa végre a swap üzembe helyezést a Rest API-val:
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
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>
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.
Új gépkulcs XML-elemének létrehozása a PowerShellben (lásd az A függeléket).
Frissítse a WebConfigot az új gépkulcsokkal. Lásd az utasításokat.
Csomagolja újra a felhőszolgáltatást.
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