Meltdown (sårbarhet)

Meltdown är en sårbarhet för sidokanalläckor i  hårdvara som finns i ett antal mikroprocessorer, särskilt de som tillverkas av Intel och ARM-arkitekturen . Meltdown använder bugg för implementering av spekulativ kommandoexekveringpå vissa Intel- och ARM-processorer (men inte AMD [1] [2] ), vilket gör att processorn ignorerar sidbehörigheter när den spekulativt utför minnesläsinstruktioner.

Sårbarheten tillåter en lokal angripare (när ett specialprogram startas) att få obehörig läsåtkomst till privilegierat minne (minne som används av operativsystemets kärna). [3] [4] [5] .

Attacken tilldelades CVE - sårbarhets-ID CVE-2017-5754 [6] .

Historik

Meltdown-attacken upptäcktes oberoende av forskare vid Google Project Zero , Cyberus Technology och Graz University of Technology i mitten av 2017 och har varit under sluten diskussion och patchning i flera månader. Publiceringen av detaljer och korrigeringar var planerad till den 9 januari 2018, men detaljerna om sårbarheten offentliggjordes den 4 januari 2018 samtidigt som Spectre- attacken , på grund av publiceringar av The Register [7] journalister som fick reda på om KAISER/KPTI-fixarna från Linux-kärnans sändlista [8] .

Kort beskrivning

Förmågan att attackera genereras av tre mekanismer som gör att du kan snabba upp processorn, och var och en av dessa mekanismer individuellt skapar inte en sårbarhet:

Moderna högpresterande mikroprocessorer har förmågan att exekvera ny kod utan att vänta på att de tidigare åtgärderna ska slutföras. Till exempel, om en greninstruktion väntar på att ta emot data från huvudminnet för att fatta ett beslut, kan en ledig processor vara upptagen med att exekvera en av grenriktningarna (och i vissa arkitekturer, även båda grenarna) i hopp om att få resultatet av beräkningen klar när resultatet av grenen är känt. Denna teknik kallas spekulativt utförande. Om gissningen lyckas ändrar den spekulativt exekverade koden de synliga värdena för registren (arkitektoniskt tillstånd) och exekveringen fortsätter. Om exekveringsgrenen antogs felaktigt, ändrar inte instruktionerna från den processorns synliga tillstånd, och den faktiska exekveringen kommer att återgå till grenpunkten.

På grund av särdragen hos vissa implementeringar, under spekulativ exekvering, utförs faktiskt minnesåtkomst oberoende av åtkomsträttigheterna för den exekverande processen till detta minne; detta gör att kommandon kan utföras utan att vänta på svar från minneskontrollern . Om denna gren av spekulativ exekvering senare visar sig vara korrekt, kommer ett felaktigt minnesåtkomstundantag att kastas. Om grenen kasseras som felaktig, kommer inget undantag att kastas; men variabler som laddas in i cachen under grenexekveringen kommer att finnas kvar i cachen. Därför föreslog författarna till attacken en metod för att analysera förekomsten av data i cachen (baserat på åtkomsttiden till dem), som, om attacken är korrekt konstruerad, kan ge en uppfattning om vad som hände i den kasserade spekulativ exekveringsgren och innehållet i mer privilegierat minne.

Mekanism

Attacken kan utföras ungefär enligt följande. [9]

För att läsa bit 0 från det skyddade minnesområdet Ap , angriparen:

  1. Rensar cacheminnet för adresserna A0 u och A1 u (från angriparens läs-/skrivadressutrymme)
  2. Grenar sig enligt ett tillstånd som angriparen känner till
  3. I en kodgren som, enligt konvention, aldrig bör exekveras (men kommer att exekveras vid spekulativ exekvering):
  4. Läser värdet V(A p ) från det skyddade minnesområdet på adressen Ap
  5. Genom att utföra en bitvis operation på värdet V( Ap ) erhålls adressen A0u eller A1u
  6. Läser minne på given adress (A0 u eller A1 u )

Under normal exekvering orsakar steg 4 ett säkerhetsfel, men under spekulativ exekvering på sårbara arkitekturer ignoreras detta fel tillfälligt, och fortsätter med steg 5 och 6. Som ett resultat laddas ett av värdena in i cachen - från adress A0 u eller A1 u . Efter att ha tagit reda på grentillståndet avbryter processorn alla resultat från steg 4, 5 och 6, men tillståndet för cachen förblir oförändrat.

Därefter räcker det för angriparen att läsa "deras" adresser A0 u och A1 u , och mäta åtkomsttiden till dem. Och baserat på mätningarna, bestäm vilken bit (0 eller 1) som lästes från det skyddade minnesområdet Ap .

Genom att upprepa denna algoritm för andra bitar av värdet V(A p ), kan du få hela innehållet i det skyddade minnesområdet som helhet.

Inflytande

Enligt forskarna är "alla Intel-mikroprocessorer som implementerar out-of-order exekvering potentiellt mottagliga för attacker, det vill säga vilken processor som helst sedan 1995 (med undantag för Intel Itanium och Intel Atom som släpptes före 2013)." [tio]

Sårbarheten förväntas påverka världens största molnleverantörer , i synnerhet Amazon Web Services (AWS) [11] , Google Cloud Platform , Microsoft Azure . Molnleverantörer tillåter olika användare att köra sina applikationer på delade fysiska servrar. Eftersom program kan behandla känsliga användardata används säkerhets- och isoleringsåtgärderna som tillhandahålls av processorn för att förhindra obehörig åtkomst till privilegierat minne (används av OS-kärnan). Meltdown-attacken, när den används på system som inte implementerar programvaruskydd (patchar), låter dig kringgå vissa minnesisoleringsåtgärder och få läsåtkomst till operativsystemets minne.

En av författarna till sårbarhetspublikationen indikerar att paravirtualiseringssystem ( Xen ) och containersystem ( Docker , LXC , Openvz , etc.) också är känsliga för attacker [12] . Helt virtualiserade system tillåter användarapplikationer att endast läsa minnet av gästkärnan, inte minnet i värdsystemet.

Programfixar

Det finns ett tillförlitligt mjukvarusätt att bekämpa attacken, där sidtabellen över användarprocesser inte visar OS-kärnminnessidor (med undantag för ett litet antal kärnminnestjänstområden), Kernel Page-table isolation (KPTI) teknologi . Samtidigt saktar samtal med ändrad behörighetsnivå (i synnerhet systemanrop) ner något, eftersom de dessutom måste byta till en annan sidtabell som beskriver hela minnet i OS-kärnan.

I vissa fall kan korrigeringen minska prestandan för vissa funktioner, till exempel applikationer som gör systemanrop mycket ofta. Samtidigt visar Phoronix -tester ingen nedgång i spel som körs på Linux med KPTI-patchen [17] [18] .

Se även

Anteckningar

  1. Gleixner, Thomas x86/cpu, x86/pti: Aktivera inte PTI på AMD-processorer (3 januari 2018). Hämtad 4 januari 2018. Arkiverad från originalet 28 juni 2020.
  2. Lendacky, Tom [tip:x86/pti x86/cpu, x86/pti: Aktivera inte PTI på AMD-processorer] . lkml.org . Hämtad 3 januari 2018. Arkiverad från originalet 3 augusti 2020.
  3. Metz, Cade . Forskare upptäcker två stora brister i världens datorer  (engelska) , The New York Times  (2018). Arkiverad från originalet den 3 januari 2018. Hämtad 4 januari 2018.
  4. Intels processorer har ett säkerhetsfel och korrigeringen kan sakta ner datorer , The Verge . Arkiverad från originalet den 3 januari 2018. Hämtad 4 januari 2018.
  5. Linux-spelprestanda verkar inte påverkas av x86 PTI Work -  Phoronix . www.phoronix.com . Hämtad 3 januari 2018. Arkiverad från originalet 20 februari 2021.
  6. CVE-2017-5754 System med mikroprocessorer som använder spekulativ exekvering och indirekt grenförutsägelse kan tillåta obehörigt avslöjande av information till en angripare med lokal användaråtkomst via en sidokanalanalys av datacache. (inte tillgänglig länk) . Hämtad 6 januari 2018. Arkiverad från originalet 6 januari 2018. 
  7. Arkiverad kopia . Hämtad 4 januari 2018. Arkiverad från originalet 7 april 2018.
  8. Understanding Meltdown & Spectre: Vad du ska veta om nya exploater som påverkar praktiskt taget alla processorer . Hämtad 6 januari 2018. Arkiverad från originalet 6 januari 2018.
  9. Nedsmältning (PDF). Meltdown och Spectre 8 sek. 5.1. Datum för åtkomst: 4 januari 2018. Arkiverad från originalet 4 januari 2018.
  10. Meltdown and Spectre: Vilka system påverkas av Meltdown?  (engelska) . meltdownattack.com . Hämtad 3 januari 2018. Arkiverad från originalet 3 januari 2018.
  11. ↑ Avslöjande av processorspekulativt utförandeforskning  . Amazon Web Services Inc. . Hämtad 3 januari 2018. Arkiverad från originalet 4 januari 2018.
  12. Cyberusteknologiblogg - härdsmälta . Datum för åtkomst: 4 januari 2018. Arkiverad från originalet 4 januari 2018.
  13. Warren, Tom Microsoft utfärdar en akut Windows-uppdatering för processorsäkerhetsbuggar . The Verge . Vox Media, Inc. Hämtad 3 januari 2018. Arkiverad från originalet 3 januari 2018.
  14. Kernel-minne-läckande Intel-processordesignfel tvingar Linux, Windows omdesign  , The Register . Arkiverad från originalet den 7 april 2018. Hämtad 4 januari 2018.
  15. Corbet, Jonathon KAISER: gömmer kärnan från användarutrymmet . LWN (15 november 2017). Hämtad 3 januari 2018. Arkiverad från originalet 8 december 2020.
  16. Corbet, Jonathon Det aktuella tillståndet för kärnans sidtabellsisolering . LWN (20 december 2017). Hämtad 3 januari 2018. Arkiverad från originalet 4 januari 2018.
  17. NVIDIA-spelprestanda påverkas minimalt av KPTI-patchar - Phoronix
  18. Linux KPTI-tester med Linux 4.14 vs. 4,9 vs. 4.4 - Phoronix

Länkar