Vägledning för att minimera kiselbaserade sårbarheter för mikroarkitektur och spekulativ körning i sidokanal
Gäller för: ✔️ Virtuella Linux-datorer ✔️ med virtuella Windows-datorer ✔️ – flexibla skalningsuppsättningar ✔️ Enhetliga skalningsuppsättningar
Den här artikeln innehåller vägledning för en ny klass av kiselbaserade sårbarheter för mikroarkitektur och spekulativ körning på sidokanal som påverkar många moderna processorer och operativsystem. Detta inkluderar Intel, AMD och ARM. Specifik information om dessa kiselbaserade sårbarheter finns i följande säkerhetsrekommendationer och CVE:er:
- ADV180002 – Vägledning för att minska sårbarheter vid spekulativ körning på sidokanal
- ADV180012 – Microsofts vägledning för förbikoppling av spekulativ lagring
- ADV180013 – Microsoft Guidance for Rogue System Register Read
- ADV180016 – Microsoft Guidance for Lazy FP State Restore
- ADV180018 – Microsofts vägledning för att minska L1TF-varianten
- ADV190013 – Microsofts vägledning för att minska sårbarheter för mikroarchitectural datasampling
- ADV220002 – Microsofts vägledning om inaktuella datasårbarheter för Intel Processor MMIO
- CVE-2022-23816 – FÖRgreningstyp för AMD-processor
- CVE-2022-21123 – FÖRVIRRING AV AMD CPU-grentyp
Avslöjandet av dessa cpu-sårbarheter har resulterat i frågor från kunder som söker mer klarhet.
Microsoft har distribuerat åtgärder i alla våra molntjänster. Infrastrukturen som kör Azure och isolerar kundarbetsbelastningar från varandra skyddas. Det innebär att en potentiell angripare som använder samma infrastruktur inte kan attackera ditt program med hjälp av dessa säkerhetsrisker.
Azure använder minnesbevarande underhåll när det är möjligt för att minimera kundernas påverkan och eliminera behovet av omstarter. Azure fortsätter att använda dessa metoder när du gör systemomfattande uppdateringar av värden och skyddar våra kunder.
Mer information om hur säkerhet integreras i alla aspekter av Azure finns på webbplatsen för Dokumentation om Azure Security .
Kommentar
Sedan det här dokumentet först publicerades har flera varianter av den här sårbarhetsklassen avslöjats. Microsoft fortsätter att vara starkt investerad i att skydda våra kunder och ge vägledning. Den här sidan uppdateras när vi fortsätter att släppa ytterligare korrigeringar.
Kunder som kör obetrodd kod i sin virtuella dator måste vidta åtgärder för att skydda mot dessa sårbarheter genom att läsa nedan för mer vägledning om alla sårbarheter.
Andra kunder bör utvärdera dessa sårbarheter ur ett djupskyddsperspektiv och överväga säkerhets- och prestandakonsekvenserna av den valda konfigurationen.
Hålla operativsystemen uppdaterade
En OS-uppdatering krävs inte för att isolera dina program som körs på Azure från andra Azure-kunder, men det är alltid en bra idé att hålla programvaran uppdaterad. De senaste säkerhetsuppdateringarna för Windows innehåller åtgärder för dessa säkerhetsrisker. På samma sätt har Linux-distributioner släppt flera uppdateringar för att åtgärda dessa säkerhetsrisker. Här är våra rekommenderade åtgärder för att uppdatera operativsystemet:
Erbjudande | Rekommenderad åtgärd |
---|---|
Azure Cloud Services | Aktivera automatisk uppdatering eller se till att du kör det senaste gästoperativsystemet. |
Virtuella Azure Linux-datorer | Installera uppdateringar från operativsystemets provider. Mer information finns i Linux senare i det här dokumentet. |
Virtuella Azure Windows-datorer | Installera den senaste samlade säkerheten. |
Andra Azure PaaS-tjänster | Det krävs ingen åtgärd för kunder som använder dessa tjänster. Azure håller automatiskt dina OS-versioner uppdaterade. |
Ytterligare vägledning om du kör kod som inte är betrodd
Kunder som tillåter obetrodda användare att köra godtycklig kod kanske vill implementera några extra säkerhetsfunktioner i sina virtuella Azure-datorer eller Molntjänster. Dessa funktioner skyddar mot de vektorer för avslöjande inom processen som flera sårbarheter för spekulativ körning beskriver.
Exempelscenarier där fler säkerhetsfunktioner rekommenderas:
- Du tillåter att kod som du inte litar på körs i den virtuella datorn.
- Du kan till exempel tillåta att en av dina kunder laddar upp en binär fil eller ett skript som du sedan kör i ditt program.
- Du tillåter användare som du inte litar på att logga in på den virtuella datorn med hjälp av konton med låg behörighet.
- Du kan till exempel tillåta att en lågprivilegierad användare loggar in på en av dina virtuella datorer med fjärrskrivbord eller SSH.
- Du ger ej betrodda användare åtkomst till virtuella datorer som implementeras via kapslad virtualisering.
- Du kan till exempel styra Hyper-V-värden, men allokera de virtuella datorerna till ej betrodda användare.
Kunder som inte implementerar ett scenario med obetrodd kod behöver inte aktivera dessa extra säkerhetsfunktioner.
Aktivera ytterligare säkerhet
Du kan aktivera fler säkerhetsfunktioner i den virtuella datorn eller molntjänsten om du kör kod som inte är betrodd. Se parallellt till att operativsystemet är uppdaterat för att aktivera säkerhetsfunktioner i den virtuella datorn eller molntjänsten
Windows
Måloperativsystemet måste vara uppdaterat för att aktivera dessa extra säkerhetsfunktioner. Även om många åtgärder är aktiverade som standard måste de extra funktioner som beskrivs här aktiveras manuellt och kan orsaka prestandapåverkan.
Alternativ 1
Steg 1: Följ anvisningarna i KB4072698 för att kontrollera att skydd är aktiverat med hjälp av PowerShell-modulen SpeculationControl .
Kommentar
Om du tidigare har laddat ned den här modulen måste du installera den senaste versionen.
Information om hur du verifierar aktiverat skydd mot dessa sårbarheter finns i Förstå Get-SpeculationControlSettings PowerShell-skriptutdata.
Om skyddet inte är aktiverat kontaktar du Azure Support för att aktivera ytterligare kontroller på den virtuella Azure-datorn.
Steg 2: Om du vill aktivera stöd för Kernel Virtual Address Shadowing (KVAS) och BTI (Branch Target Injection) följer du anvisningarna i KB4072698 för att aktivera skydd med hjälp av Session Manager
registernycklarna. En omstart krävs.
Steg 3: För distributioner som använder kapslad virtualisering (endast D3 och E3): Dessa instruktioner gäller i den virtuella dator som du använder som Hyper-V-värd.
- Följ anvisningarna i KB4072698 för att aktivera skydd med hjälp av
MinVmVersionForCpuBasedMitigations
registernycklarna. - Ange typ av hypervisor-schemaläggare till genom att
Core
följa anvisningarna här.
Alternativ 2
Inaktivera hypertrådning på den virtuella datorn – Kunder som kör obetrodd kod på en hypertrådad virtuell dator kan välja att inaktivera hypertrådning eller flytta till en icke-hypertrådad VM-storlek. Referera till det här dokumentet för en lista över hypertrådade VM-storlekar (där förhållandet mellan vCPU och Core är 2:1). Om du vill kontrollera om den virtuella datorn har hypertrådning aktiverat läser du skriptet nedan med hjälp av Windows-kommandoraden inifrån den virtuella datorn.
Skriv wmic
för att ange det interaktiva gränssnittet. Skriv sedan följande kommando för att visa mängden fysiska och logiska processorer på den virtuella datorn.
CPU Get NumberOfCores,NumberOfLogicalProcessors /Format:List
Om antalet logiska processorer är större än fysiska processorer (kärnor) aktiveras hypertrådning. Om du kör en hypertrådad virtuell dator kontaktar du Azure Support för att inaktivera hypertrådning. När hypertrådning har inaktiverats kräver supporten en fullständig omstart av den virtuella datorn. Se Antal kärnor för att förstå varför antalet virtuella datorer minskade.
Alternativ 3
För CVE-2022-23816 och CVE-2022-21123 (AMD CPU Branch Type Confusion) följer du både alternativ 1 och alternativ 2 ovan.
Linux
Om du aktiverar uppsättningen extra säkerhetsfunktioner inuti måste måloperativsystemet vara helt uppdaterat. Vissa åtgärder aktiveras som standard. I följande avsnitt beskrivs de funktioner som är inaktiverade som standard och/eller beroende av maskinvarustöd (mikrokod). Aktivering av dessa funktioner kan orsaka prestandapåverkan. Mer information finns i dokumentationen för operativsystemets leverantör
Steg 1: Inaktivera hypertrådning på den virtuella datorn – Kunder som kör obetrodd kod på en hypertrådad virtuell dator måste inaktivera hypertrådning eller flytta till en icke-hypertrådad virtuell dator. Referera till det här dokumentet för en lista över hypertrådade VM-storlekar (där förhållandet mellan vCPU och Core är 2:1). Kontrollera om du kör en hypertrådad virtuell dator genom att lscpu
köra kommandot på den virtuella Linux-datorn.
Om Thread(s) per core = 2
har hypertrådning aktiverats.
Om Thread(s) per core = 1
har hypertrådning inaktiverats.
Exempelutdata för en virtuell dator med hypertrådning aktiverat:
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
Om du kör en hypertrådad virtuell dator kontaktar du Azure Support för att inaktivera hypertrådning. När hypertrådning har inaktiverats kräver supporten en fullständig omstart av den virtuella datorn. Se Antal kärnor för att förstå varför antalet virtuella datorer minskade.
Steg 2: Information om hur du minskar risken för cpu-baserat minne finns i dokumentationen för operativsystemets leverantör:
Antal kärnor
När en hypertrådad virtuell dator skapas allokerar Azure två trådar per kärna – dessa kallas vCPU:er. När hypertrådning är inaktiverat tar Azure bort en tråd och öppnar upp enkla trådade kärnor (fysiska kärnor). Förhållandet mellan vCPU och CPU är 2:1, så när hypertrådning har inaktiverats verkar cpu-antalet på den virtuella datorn ha minskat med hälften. Till exempel är en D8_v3 virtuell dator en hypertrådad virtuell dator som körs på 8 virtuella processorer (2 trådar per kärna x 4 kärnor). När hypertrådning är inaktiverat sjunker processorer till 4 fysiska kärnor med 1 tråd per kärna.
Nästa steg
Mer information om hur säkerhet integreras i alla aspekter av Azure finns i Dokumentation om Azure-säkerhet.