Richtlijnen voor het beperken van op silicium gebaseerde microarchitectuur en speculatieve beveiligingsproblemen aan de zijkant van het kanaal
Van toepassing op: ✔️ Virtuele Linux-machines voor Windows-VM's ✔️ ✔️ Flexibele schaalsets Uniform-schaalsets ✔️
Dit artikel bevat richtlijnen voor een nieuwe klasse microarchitectuur op basis van silicium en speculatieve beveiligingsproblemen in side-channel-uitvoering die van invloed zijn op veel moderne processors en besturingssystemen. Dit omvat Intel, AMD en ARM. Specifieke details voor deze op silicium gebaseerde beveiligingsproblemen vindt u in de volgende beveiligingsadviezen en CVE's:
- ADV180002 - Richtlijnen voor het beperken van speculatieve beveiligingsproblemen in side-channel
- ADV180012 - Microsoft Guidance for Speculative Store Bypass
- ADV180013 - Microsoft Guidance for Rogue System Register Read
- ADV180016 - Microsoft Guidance for Lazy FP State Restore
- ADV180018 - Microsoft Guidance to mitigate L1TF variant
- ADV190013 - Microsoft-richtlijnen voor het beperken van beveiligingsproblemen met microarchitecturale gegevensampling
- ADV220002 - Microsoft Guidance on Intel Processor MMIO Stale Data Vulnerabilities
- CVE-2022-23816 - Verwarring van AMD CPU-vertakkingstype
- CVE-2022-21123 - Verwarring van AMD CPU-vertakkingstype
De openbaarmaking van deze CPU-beveiligingsproblemen heeft geresulteerd in vragen van klanten die meer duidelijkheid zoeken.
Microsoft heeft oplossingen geïmplementeerd voor al onze cloudservices. De infrastructuur die Azure uitvoert en klantworkloads van elkaar isoleert, wordt beveiligd. Dit betekent dat een potentiële aanvaller die dezelfde infrastructuur gebruikt, uw toepassing niet kan aanvallen met behulp van deze beveiligingsproblemen.
Azure gebruikt waar mogelijk onderhoud met geheugenbehoud om de impact van de klant te minimaliseren en de noodzaak voor opnieuw opstarten te elimineren. Azure blijft deze methoden gebruiken bij het maken van systeemomvattende updates voor de host en het beveiligen van onze klanten.
Meer informatie over hoe beveiliging wordt geïntegreerd in elk aspect van Azure, is beschikbaar op de azure-site met beveiligingsdocumentatie .
Notitie
Sinds dit document voor het eerst is gepubliceerd, zijn er meerdere varianten van deze beveiligingsklasse bekendgemaakt. Microsoft blijft sterk investeren in het beschermen van onze klanten en het bieden van richtlijnen. Deze pagina wordt bijgewerkt naarmate we verdere oplossingen blijven vrijgeven.
Klanten die niet-vertrouwde code op hun VM uitvoeren, moeten actie ondernemen om deze beveiligingsproblemen te beschermen door hieronder te lezen voor meer richtlijnen over alle beveiligingsproblemen.
Andere klanten moeten deze beveiligingsproblemen evalueren vanuit een diepgaande verdedigingsperspectief en rekening houden met de gevolgen voor beveiliging en prestaties van hun gekozen configuratie.
Uw besturingssystemen up-to-date houden
Hoewel een update van het besturingssysteem niet vereist is om uw toepassingen die worden uitgevoerd op Azure te isoleren van andere Azure-klanten, is het altijd een best practice om uw software up-to-date te houden. De nieuwste beveiligingsupdates voor Windows bevatten oplossingen voor deze beveiligingsproblemen. Op dezelfde manier hebben Linux-distributies meerdere updates uitgebracht om deze beveiligingsproblemen op te lossen. Hier volgen onze aanbevolen acties om uw besturingssysteem bij te werken:
Aanbod | Aanbevolen actie |
---|---|
Azure Cloud Services | Schakel automatisch bijwerken in of zorg ervoor dat u het nieuwste gastbesturingssystemen uitvoert. |
Virtuele Azure Linux-machines | Installeer updates van uw besturingssysteemprovider. Zie Linux verderop in dit document voor meer informatie. |
Virtuele Azure Windows-machines | Installeer het nieuwste beveiligingspakket. |
Andere Azure PaaS-services | Er is geen actie nodig voor klanten die deze services gebruiken. Azure houdt uw besturingssysteemversies automatisch up-to-date. |
Aanvullende richtlijnen als u niet-vertrouwde code uitvoert
Klanten die niet-vertrouwde gebruikers toestaan willekeurige code uit te voeren, willen mogelijk enkele extra beveiligingsfuncties implementeren binnen hun virtuele Azure-machines of cloudservices. Deze functies beschermen tegen de openbaarmakingsvectoren binnen processen die door verschillende speculatieve uitvoeringsproblemen worden beschreven.
Voorbeeldscenario's waarbij meer beveiligingsfuncties worden aanbevolen:
- U staat code toe die u niet vertrouwt om te worden uitgevoerd binnen uw VIRTUELE machine.
- U kunt bijvoorbeeld een van uw klanten toestaan een binair bestand of script te uploaden dat u vervolgens in uw toepassing uitvoert.
- U staat gebruikers toe die u niet vertrouwt zich aan te melden bij uw VIRTUELE machine met behulp van accounts met beperkte bevoegdheden.
- U kunt bijvoorbeeld een gebruiker met beperkte bevoegdheden aanmelden bij een van uw VM's met behulp van extern bureaublad of SSH.
- U staat niet-vertrouwde gebruikers toegang toe tot virtuele machines die zijn geïmplementeerd via geneste virtualisatie.
- U bepaalt bijvoorbeeld de Hyper-V-host, maar wijst de VM's toe aan niet-vertrouwde gebruikers.
Klanten die geen scenario met niet-vertrouwde code implementeren, hoeven deze extra beveiligingsfuncties niet in te schakelen.
Extra beveiliging inschakelen
U kunt meer beveiligingsfuncties inschakelen binnen uw VIRTUELE machine of cloudservice als u niet-vertrouwde code uitvoert. Zorg er parallel voor dat uw besturingssysteem up-to-date is om beveiligingsfuncties in te schakelen binnen uw VM of cloudservice
Windows
Uw doelbesturingssysteem moet up-to-date zijn om deze extra beveiligingsfuncties in te schakelen. Hoewel er standaard talloze oplossingen zijn ingeschakeld, moeten de extra functies die hier worden beschreven, handmatig worden ingeschakeld en kunnen dit gevolgen hebben voor de prestaties.
Optie 1
Stap 1: Volg de instructies in KB4072698 om te controleren of beveiligingen zijn ingeschakeld met behulp van de Module SpeculatieControl PowerShell.
Notitie
Als u deze module eerder hebt gedownload, moet u de nieuwste versie installeren.
Als u ingeschakelde beveiligingen tegen deze beveiligingsproblemen wilt valideren, raadpleegt u De uitvoer van het PowerShell-script Get-SpeculatieControlSettings.
Als beveiligingen niet zijn ingeschakeld, neemt u contact op met De ondersteuning van Azure om aanvullende besturingselementen in te schakelen op uw Azure-VM.
Stap 2: Volg de instructies in KB4072698 om KVAS -ondersteuning (Kernel Virtual Address Shadowing) en Branch Target Injection (BTI) in te Session Manager
schakelen. Opnieuw opstarten is vereist.
Stap 3: Voor implementaties die gebruikmaken van geneste virtualisatie (alleen D3 en E3): Deze instructies zijn van toepassing op de VIRTUELE machine die u als Hyper-V-host gebruikt.
- Volg de instructies in KB4072698 om beveiligingen in te schakelen met behulp van de
MinVmVersionForCpuBasedMitigations
registersleutels. - Stel het type
Core
hypervisorplanner in op door de instructies hier te volgen.
Optie 2
Hyperthreading uitschakelen op de virtuele machine : klanten die niet-vertrouwde code uitvoeren op een virtuele machine met hyperthreads, kunnen ervoor kiezen om hyperthreading uit te schakelen of over te stappen op een niet-hyperthreaded VM-grootte. Raadpleeg dit document voor een lijst met hyperthreaded VM-grootten (waarbij de verhouding van vCPU naar Core 2:1 is). Als u wilt controleren of hyperthreading is ingeschakeld voor uw virtuele machine, raadpleegt u het onderstaande script met behulp van de Windows-opdrachtregel vanuit de VIRTUELE machine.
Typ wmic
het type om de interactieve interface in te voeren. Typ vervolgens de volgende opdracht om de hoeveelheid fysieke en logische processors op de virtuele machine weer te geven.
CPU Get NumberOfCores,NumberOfLogicalProcessors /Format:List
Als het aantal logische processors groter is dan fysieke processors (kernen), is hyperthreading ingeschakeld. Als u een hyperthreaded VM uitvoert, neemt u contact op met De ondersteuning van Azure om hyperthreading uitgeschakeld te krijgen. Zodra hyperthreading is uitgeschakeld, moet de ondersteuning volledig opnieuw worden opgestart. Raadpleeg het aantal kerngeheugens om te begrijpen waarom het aantal VM-kernen is afgenomen.
Optie 3
Voor CVE-2022-23816 en CVE-2022-21123 (AMD CPU Branch Type Verwarring), volgt u optie 1 en optie 2 hierboven.
Linux
Voor het inschakelen van de set extra beveiligingsfuncties binnen moet het doelbesturingssysteem volledig up-to-date zijn. Sommige oplossingen worden standaard ingeschakeld. In de volgende sectie worden de functies beschreven die standaard zijn uitgeschakeld en/of afhankelijk zijn van hardwareondersteuning (microcode). Als u deze functies inschakelt, kan dit gevolgen hebben voor de prestaties. Raadpleeg de documentatie van uw besturingssysteemprovider voor meer instructies
Stap 1: Hyperthreading uitschakelen op de VIRTUELE machine : klanten die niet-vertrouwde code uitvoeren op een hyperthreaded VM, moeten hyperthreading uitschakelen of naar een niet-hyperthreaded VM gaan. Raadpleeg dit document voor een lijst met hyperthreaded VM-grootten (waarbij de verhouding van vCPU naar Core 2:1 is). Als u wilt controleren of u een hyperthreaded VM uitvoert, voert u de lscpu
opdracht uit op de Virtuele Linux-machine.
Als Thread(s) per core = 2
hyperthreading is ingeschakeld.
Als Thread(s) per core = 1
hyperthreading is uitgeschakeld.
Voorbeelduitvoer voor een virtuele machine waarvoor hyperthreading is ingeschakeld:
CPU Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
Byte Order: Little Endian
CPU(s): 8
On-line CPU(s) list: 0-7
Thread(s) per core: 2
Core(s) per socket: 4
Socket(s): 1
NUMA node(s): 1
Als u een hyperthreaded VM uitvoert, neemt u contact op met De ondersteuning van Azure om hyperthreading uitgeschakeld te krijgen. Zodra hyperthreading is uitgeschakeld, moet de ondersteuning volledig opnieuw worden opgestart. Raadpleeg het aantal kerngeheugens om te begrijpen waarom het aantal VM-kernen is afgenomen.
Stap 2: Raadpleeg de documentatie van uw besturingssysteemprovider om te beperken tegen een van de onderstaande CPU-geheugenproblemen:
Aantal kernen
Wanneer een hyperthreaded VM wordt gemaakt, wijst Azure 2 threads per kern toe. Deze worden vCPU's genoemd. Wanneer hyperthreading is uitgeschakeld, verwijdert Azure een thread en wordt één thread met kernen (fysieke kernen) weergegeven. De verhouding tussen vCPU en CPU is 2:1, dus zodra hyperthreading is uitgeschakeld, lijkt het CPU-aantal in de VIRTUELE machine met de helft te zijn afgenomen. Een D8_v3 VM is bijvoorbeeld een hyperthreaded VM die wordt uitgevoerd op 8 vCPU's (2 threads per kern x 4 kernen). Wanneer hyperthreading is uitgeschakeld, zullen CPU's worden neergezet op 4 fysieke kernen met 1 thread per kern.
Volgende stappen
Zie de Documentatie voor Azure-beveiliging voor meer informatie over de integratie van beveiliging in elk aspect van Azure.