Sikkerhet & Teknologi og forbruker

NRKbeta forklarer: Spectre og Meltdown

Montasj: Martin Gundersen; Laptop: Twitter CC BY 4.0; Spectre og Meltodwn: Natascha Eibl CCO

De siste dagene har vi fått høre om to store sikkerhetshull som rammer de fleste datamaskiner og mobiltelefoner i bruk i dag. Hva er egentlig greia?

Sikkerhetsforskere fra en rekke institusjoner, blant annet Googles Project Zero og det tekniske universitetet i Graz fant i fjor alvorlige feil i måten moderne prosessorer behandler informasjon på.

I praksis åpner disse feilene for at sensitiv data som passord og annen privat informasjon kan leses ukryptert fra maskinens minne.

De to sikkerhetshullene har fått navnene Spectre og Meltdown. Før vi dykker ned i hva de to hullene innebærer, må vi bare kjapt innom hvordan datamaskinen behandler informasjon.

Operativsystemkjernen er sjefen

Datamaskinens hjerne er prosessoren kalt CPU. I sakene om Meltdown og Spectre-sårbarhetene har vi hørt mye om selskapet Intel. Intel er en av de største produsentene av prosessorer, og lager den fysiske delen inne i maskinen som fungerer som hjernen.

For at maskinen skal kunne fungere må programvaren snakke med den fysiske prosessoren – hjernen.

I de fleste systemer koordineres dette av operativsystemet: f.eks. Windows, MacOS, iOS eller Android. CPU-en kjører programmene på maskinen, disse kan kjøre i forskjellige beskyttelsesnivåer.

Den aller helligste delen av operativsystemet kalles kjernen, deretter kommer det ytre nivå kalt applikasjons- og maskinvarelaget. Kjernen er den som bestemmer hvordan ressursene i datamaskinen skal utnyttes og fordeles på de ulike applikasjonene som kjører.

Illustrasjon: Martin Gundersen/Twitter/ Natascha Eibl (CC BY 4.0)

Enkelt forklart funker det omtrent sånn:
Når du ber en applikasjon om å gjøre noe, må den forhandle med kjernen for å få ressurser fra maskinvaren til å utføre handlingen du etterspør.

Dette har selvsagt mange fordeler: Kjernen har oversikt over alle applikasjoner som kjører, og kan fordele ressursene på best mulig måte. Det fører også til økt sikkerhet, da kjernen kan gi applikasjoner egne båser for lesing og skriving til minne, og dermed sørge for at én applikasjon ikke kan lese minnet fra en annen.

Uten denne sikkerhetsarkitekturen, som kalles for beskyttelsesringer, ville det være mulig for et virusinfisert program å lese minnet fra f.eks. nettleseren din mens du skriver inn et passord.

En Intel Pentium-prosessor. Foto: Jeremy A.A. Knight CC BY 2.0

Men siden kjernen har ansvar for å fordele ressurser og sørge for at maskinen kjører så raskt som mulig, har prosessorleverandørene bestemt at kjernen kan anta hva du kommer til å gjøre. Dette kalles spekulativ utførelse, eller speculative execution.

Det er denne optimaliseringen i maskinvaren angriperne kan utnytte.

Ett eksempel

La oss overgeneralisere for å gå litt dypere: Når du gjør en handling, som å skrive inn en nettadresse, så antar prosessoren at du kommer til å trykke på ENTER, og «kjører» denne handlingen før du i det hele tatt har gjort det. Ofte kommer du til å trykke ENTER, og slik har prosessoren spart tid.

Hvis du derimot ombestemmer deg, og lukker nettleservinduet i stedet, har kjernen gitt en instruks som egentlig ikke skulle blitt kjørt. Da må instruksen rulles tilbake til sin originale tilstand, men det vil ligge igjen «rester» av operasjonen som fremmede kan utnytte i svakheten kalt Meltdown.

Slik kan angriperen få nyss om hvor i minnet passordet ditt er lagret.

Og når de vet hvor i minnet sensitive opplysninger ligger kan de selv utføre spekulative utførelser som vil bli rullet tilbake, men først etter at de har hentet opplysningene de er ute etter.

For Spectre er det litt vanskeligere: Da får man ikke tilgang til å se «restene» og man må derfor i større grad gjette seg fram ved å utføre spekulative operasjoner.

Egentlig kjempesmart, men…

Spekulativ utførelse er på papiret kjempesmart, men har altså åpnet døren for både Spectre og Meltdown.

Disse sikkerhetshullene utnytter hvordan prosessoren utfører spekulativ utførelse, og gjør det mulig for applikasjoner å få tilgang til hele datamaskinens minne.

Her kan du se en demonstrasjon som viser hvordan man kan hente ut passord ved hjelp av Meltdown:

Noen vil kanskje synes denne forklaringen er for enkel og det finnes flere kilder som går dypere. Blant annet forklarer og oppdaterer Nasjonal sikkerhetsmyndighet i detalj hva feilene innebærer og hvor alvorlige de ser dem.

Forskerne har også publisert to akademiske tekster som beskriver fremgangsmåten, muligheter, og begrensninger.

De påvirker omtrent alle

Meltdown, som er svakheten som er lettest å utnytte, påvirker de fleste Intel-prosessorer bygget etter 2003.

Sikkerhetsoppdateringene som er foreslått vil, ifølge New York Times, kunne redusere prosessorhastighetene opptil 30%, men dette er et øvre anslag. Intel skriver på sine sider at den vanlige PC-bruker ikke vil oppleve et nevneverdig hastighetstap, og at det vil bli mindre over tid.

Spectre påvirker de fleste moderne prosessorer som Intel, AMD, or ARM.

De fleste moderne mobiler, pcer, og skyløsninger som Amazon Web Services er derfor påvirket av disse svakhetene.

Så ikke se bortfra at mange som jobber med IT-sikkerhet ble satt i beredskapsmodus etter at britiske The Register tirsdag først omtalte sikkerhetssvakhetene. Det flyttet publiseringen av svakhetene tidligere og satte mer press på produsentene om å få ut sikkerhetsoppdateringer.

Hva skjer framover?

Det har allerede kommet en rekke sikkerhetsoppdateringer for Meltdown (en hjelpsom oppdateringsliste finner du hos NorCERT), og det er forventet at det vil komme en rekke til de neste ukene. Allerede nå har det kommet oppdateringer til operativsystemene Windows, MacOS, og Linux.

Paul Kocher, en av forskerne som var med på å avsløre svakhetene, tror Spectre vil være et problem som vil hefte ved oss over flere maskinvare-oppdateringer.

Navnevalget gir kanskje en antydning om hvor lenge forskerne tror Spectre vil hjemsøke oss. Det betyr spøkelse.

9 kommentarer

    • jonjonson (svar til andreas)

      Googles Project Zero (som oppdaget og rapporterte feilen allerede i sommer) testet det og fikk det til å fungere på en Haswell CPU. Det fungerte også på to AMD og en ARM prosessor som de testet. Tilsynelatende er det et problem som er en del av alle moderne CPUer i en eller annen form.

    • Når du skriver at «CPU firmware (utrolig nok) er lukket kildekode» gir du inntrykk av at du tror det er snakk om C++ eller Javascript. Jeg kan love deg at det er det ikke!

      Dette handler om mikrokode, på et helt annet nivå. Tenk på det som en tabell over de elektriske signalene som skal sendes ut til ulike moduler i CPUen for å aktivere de rette funksjonene. Instruksjons-koden brukes som indeks inn i tabellen. Siden utførelsen går i flere steg, kan ikke alle signalene sendes ut samtidig, så en linje i tabellen («programmet») har som regel info om hvor lenge logikken skal vente før det neste settet elektriske signaler sendes ut, osv. Dette kan være spesifisert i tabellen som «hopp»: På neste klokkepuls, gå til linje xxx i tabellen og send ut signalene spesifisert der, osv.

      Dette er ekstremt avhengig av hvilke moduler CPUen består av, hvilke elektriske signaler de akal ha for å bli aktivert, hvor stor den nødvendige forsinkelsen er siden forrige sett med signaler er, osv. Det er ikke en jobb for fjortis-hackere 🙂

      Gamlekara husker sikkert Norsk Data A.S, fra minimaskin- og supermaskin-tiden. Mikrokoden var publisert, og de tilbød faktisk kundene å skrive sin egen mikrokode for Nord-10 og ND-100. Jeg spurte en av de CPU-ansvarlige om mange kunder benyttet seg av muligheten. Han flirte rått: Vi har klart å prate alle bort fra det hittil!

      Jeg har enda ikke studert detaljer i Spectre/Meltdown, men ser at det har mye å gjøre med spekulativ eksekvering: Så snart en modul i CPUen «er arbeidsledig», kan den få signal om å begynne å hente informasjon det kanskje blir behov for om en liten stund. I visse situasjoner betyr det at data f.eks. kommer inn i cache før nødvendige sikkerhetsmekanismer er fullt ut aktivert. Dn som vet om dette, kan være på pletten og «stjele» data som nettopp er hentet inn, men som enda ligger ubeskyttet fordi den pågående instruksjonen ikke kan fullføres hvis beskyttelsen slås på for fullt.

      Den fiksen man nå gjør er å utsette å sende disse aktiverings-signalene for forhånds-henting til man kan være sikker på at all beskyttelse er på plass, etter at pågående operasjonen har gjort seg ferdig – den må få alle de data den har «rettmessig» krav på!

      Det betyr naturligvis at du kan bli nødt til å vente litt lenger, siden operasjonen kom i gang litt senere. Derfor kan CPUen bli langsommere. Hvor mye avhenger av hvor ofte programmet ditt kommer borti den situasjonen at den må vente med å aktivere prefetch-moduler til beskyttelsen er aktivert.

      Vi kan håpe på at framtidige prosessor-generasjoner kan gjøre spekulative «på forhånd», operasjoner under full beskyttelse, samtidig som den pågående operasjonen ikke sperres av den samme beskyttelsen. Å operere med flere (det kan være mer enn to) ulike nivåer av beskyttelse samtidig er et ikke-trivielt problem, og krever et betydelig antall transistorer!

      Hjertesukk: Ni av ti sikkerhetsproblemer er direkte funksjon av at vi som brukrere krever at alt skal gå fortere, fortere, fortere – både kjøring av programmene og på utvikling av nye programmer, nye modeller, nye versjoner. Vi IT-folk tar i bruk masse «dirty tricks» for å dekke kundenes behov for større fart, nye utgaver (eller, vi tror vi er nødt til det). Kunne vi, og kundene, lene oss tilbake og si at «PCene er mer enn raske nok nå. Vi kan vente i fem sekunder på at mobilen starter opp. Det gjør ikke noe om det tar ti minutter å gjøre en backup» – da kunne vi unngått masse sikkerhetsproblemer. Både hardware- og software-relaterte.

      Da må kundene slutte å skrike opp i harnisk: Vi krever milliard-erstatning fordi maskinen ble 5% langsommere! … Aldri i livet om du merket det av deg selv!

      Også vi IT-folk må følge opp, og kunne med rak rygg si at «Ja, vi bruker 5% av kapasiteten på å sikre at ingen kan trenge seg inn. Det er en del av jobben vår!

      I kina-butikker kan finne billig, billig, billig, som er skrot, skrot, skrot. Det er på tide å begynne å stille krav til programvare som «dessverre» betyr at den kvaliteten vi ber om verken er så billig eller så rask som vi ønsker!

    • «skrot, skrot, skrot»
      Ser ut til at det er Intel som er «kina-butikken» selv om det ikke er billig.

      Takk for fin info!

      Det er ikke fjortis-hackerne som bekymrer mest og heller ikke hastigheten – det er personvernet.

      Den systematiske og strukturerte innsamlingen av data som gir tilgang til all vår computerbasserte aktivitet.

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *