Meltdown er en hardware -sidekanallækage- sårbarhed , der findes i en række mikroprocessorer, især dem, der er fremstillet af Intel og ARM-arkitekturen . Meltdown bruger fejl i implementering af spekulativ kommandoudførelsepå nogle Intel- og ARM-processorer (men ikke AMD [1] [2] ), hvilket får processoren til at ignorere sidetilladelser, når den spekulativt udfører hukommelseslæseinstruktioner.
Sårbarheden gør det muligt for en lokal angriber (når han starter et særligt program) at få uautoriseret læseadgang til privilegeret hukommelse (hukommelse brugt af operativsystemkernen). [3] [4] [5] .
Angrebet blev tildelt CVE - sårbarheds-id'et CVE-2017-5754 [6] .
Meltdown-angrebet blev uafhængigt opdaget af forskere ved Google Project Zero , Cyberus Technology og Graz University of Technology i midten af 2017 og har været under lukket diskussion og patching i flere måneder. Offentliggørelsen af detaljer og rettelser var planlagt til den 9. januar 2018, men detaljerne om sårbarheden blev offentliggjort den 4. januar 2018 samtidig med Spectre- angrebet på grund af udgivelser fra The Register [7] journalister , der lærte om KAISER/KPTI rettelserne fra Linux-kernens mailingliste [8] .
Evnen til at angribe genereres af tre mekanismer, der giver dig mulighed for at fremskynde processoren, og hver af disse mekanismer skaber ikke individuelt en sårbarhed:
Moderne højtydende mikroprocessorer har evnen til at udføre ny kode uden at vente på, at de tidligere handlinger er fuldført. For eksempel, hvis en greninstruktion venter på at modtage data fra hovedhukommelsen for at træffe en beslutning, kan en inaktiv processor have travlt med at udføre en af grenretningerne (og i nogle arkitekturer, endda begge grene) i håb om at få resultatet af beregningen klar, når resultatet af grenen er kendt. Denne teknik kaldes spekulativ udførelse. Hvis gættet lykkes, ændrer den spekulativt udførte kode de synlige værdier af registrene (arkitektonisk tilstand), og eksekveringen fortsætter. Hvis udførelsesgrenen blev antaget forkert, ændrer instruktionerne fra den ikke processorens synlige tilstand, og den faktiske udførelse vil vende tilbage til forgreningspunktet.
På grund af de særlige kendetegn ved nogle implementeringer, under spekulativ eksekvering, udføres hukommelsesadgang faktisk uanset den eksekverende process adgangsrettigheder til denne hukommelse; dette gør det muligt at udføre kommandoer uden at vente på et svar fra hukommelsescontrolleren . Hvis denne gren af spekulativ udførelse senere viser sig at være korrekt, vil en fejlagtig hukommelsesadgangsundtagelse blive kastet. Hvis grenen kasseres som fejlagtig, vil der ikke blive kastet nogen undtagelse; men variabler indlæst i cachen under udførelse af gren vil forblive i cachen. Derfor foreslog forfatterne af angrebet en metode til at analysere tilstedeværelsen af data i cachen (baseret på adgangstiden til dem), som, hvis angrebet er korrekt konstrueret, kan give en idé om, hvad der skete i den kasserede spekulativ udførelsesgren og indholdet af mere privilegeret hukommelse.
Angrebet kan udføres omtrent som følger. [9]
For at læse bit 0 fra det beskyttede hukommelsesområde Ap skal angriberen:
Under normal udførelse forårsager trin 4 en sikkerhedsfejl, men under spekulativ eksekvering på sårbare arkitekturer ignoreres denne fejl midlertidigt, og fortsætter med trin 5 og 6. Som et resultat indlæses en af værdierne i cachen - fra adresse A0 u eller A1 u . Efter at have fundet ud af grentilstanden, annullerer processoren alle resultaterne af trin 4, 5 og 6, men cachens tilstand forbliver uændret.
Derefter er det nok for angriberen at læse "deres" adresser A0 u og A1 u , og måle adgangstiden til dem. Og ud fra målingerne bestemmes hvilken bit (0 eller 1) der blev læst fra det beskyttede hukommelsesområde Ap .
Ved at gentage denne algoritme for andre bits af værdien V(A p ), kan du få hele indholdet af det beskyttede hukommelsesområde som helhed.
Ifølge forskerne er "enhver Intel-mikroprocessor, der implementerer ude-af-ordens eksekvering , potentielt modtagelig for angreb, det vil sige enhver processor siden 1995 (med undtagelse af Intel Itanium og Intel Atom udgivet før 2013)." [ti]
Sårbarheden forventes at påvirke verdens største cloud-udbydere , især Amazon Web Services (AWS) [11] , Google Cloud Platform , Microsoft Azure . Cloud-udbydere tillader forskellige brugere at køre deres applikationer på delte fysiske servere. Fordi programmer kan behandle følsomme brugerdata, bruges sikkerheds- og isolationsforanstaltningerne fra processoren til at forhindre uautoriseret adgang til privilegeret hukommelse (brugt af OS-kernen). Meltdown-angrebet, når det bruges på systemer, der ikke implementerer softwarebeskyttelse (patches), giver dig mulighed for at omgå nogle hukommelsesisoleringsforanstaltninger og få læseadgang til operativsystemets hukommelse.
En af forfatterne til sårbarhedspublikationen angiver, at paravirtualiseringssystemer ( Xen ) og containersystemer ( Docker , LXC , Openvz , etc.) også er modtagelige for angreb [12] . Fuldt virtualiserede systemer tillader brugerapplikationer kun at læse gæstekernens hukommelse, ikke værtssystemets hukommelse.
Der er en pålidelig softwaremetode til at bekæmpe angrebet, hvor sidetabellen over brugerprocesser ikke viser OS-kernehukommelsessider (med undtagelse af et lille antal kernehukommelsesserviceområder), Kernel Page-table isolation (KPTI) teknologi . Samtidig bliver opkald med en ændring i privilegieniveau (især systemkald) noget langsommere, da de yderligere skal skifte til en anden sidetabel, der beskriver hele OS-kernens hukommelse.
I nogle tilfælde kan rettelsen reducere ydeevnen af visse funktioner, såsom programmer, der foretager systemopkald meget ofte. Samtidig viser Phoronix -test ingen afmatning i spil, der kører på Linux med KPTI-patchen [17] [18] .