Meltdown SpectreSchreven we eind vorig jaar nog over het nut van branded vulnerabilities, beginnen we dit jaar meteen goed met twee nieuwe varianten met een eigen logo en website. Onderzoekers hebben details over de zogenaamde Meltdown- en Spectre-kwetsbaarheden gepubliceerd, die zich in het geval van het tweede lek voordoen bij moderne processors van Intel, ARM en AMD. De kwetsbaarheden maken het mogelijk om geheugen uit te lezen van de kernel en van andere processen, iets dat eigenlijk niet zou moeten kunnen door geheugenisolatie. Omdat dit wel blijkt te kunnen, behoort toegang tot gevoelige gegevens zoals wachtwoorden en privésleutels tot de mogelijkheden. In dit artikel gaan we kort in op de belangrijkste vragen rond de gepubliceerde lekken. Tweakers sprak daarnaast met Herbert Bos, die hoogleraar Systems and Network Security aan de VU Amsterdam is en aan het hoofd staat van de VUSec-onderzoeksgroep.

Waar hebben de kwetsbaarheden mee te maken?
Volgens Bos hebben alle kwetsbaarheden te maken met een techniek die bekendstaat als out-of-order execution: het berekenen van een resultaat voor het eigenlijk nodig is. Een goed voorbeeld hiervan is speculative execution, een truc die tot prestatiewinst moet leiden bij het uitvoeren van programma's. Bos legt speculative execution uit met behulp van een voorbeeld. Stel dat een programma de volgende instructies bevat: "Als een waarde in het geheugen, die geheim is en niet zichtbaar behalve voor de kernel, gelijk is aan een waarde n, laad dan uit het geheugen de waarde van het n-de element uit een tabel." Vervolgens legt hij uit hoe de processor hier speculatief aan gaat rekenen en hoe dit tot het lekken van informatie kan leiden.

"Wat een moderne cpu doet om dit sneller te maken, is alvast de waarde uit het n-de element van de tabel te laden, terwijl hij nog aan het bepalen is of de eerste waarde in het geheugen eigenlijk wel gelijk was aan n.  Als dat inderdaad zo was, dan heeft hij meteen de juiste waarde te pakken en dat scheelt tijd. Als dat niet zo was, dan heeft hij die waarde voor niks geladen. Maar dat geeft niet, want de cpu gooit die waarde dan gewoon weer weg. We noemen het laden van die waarde een 'speculatieve' operatie.  Er is niks aan de hand, tenzij een aanvaller op een of andere manier kan zien welke waarde speculatief werd geladen."

Dat laatste blijkt nu juist het probleem te zijn, vervolgt Bos. "Een slimme (Meltdown-)aanvaller kan zien welk element in de tabel werd geactiveerd. Dit heeft te maken met de manier waarop moderne processoren data die ze net gebruikt hebben tijdelijk in de cache zetten, zodat ze daar in de toekomst heel snel toegang toe hebben. Helaas is juist die extra snelheid een 'side channel' om informatie te lekken voor aanvallers. Door zelf te kijken of element n in de cache zit, bijvoorbeeld door te kijken of toegang tot deze data sneller gaat dan gebruikelijk, weten zij of het programma de waarde n had berekend. Op die manier lekt dus informatie uit het meest beveiligde deel van de kernel."

Wat zijn de verschillen tussen Meltdown en Spectre?
Zoals in het voorgaande nieuwsbericht al is beschreven, laat Meltdown het uitlezen van kernelgeheugen toe, terwijl Spectre dat toelaat voor processen onderling. De onderlinge verschillen worden ook nog eens duidelijk gemaakt door een afbeelding die het werk is van beveiligingsexpert Daniel Miessler. Het patchen van Meltdown is volgens de ontdekkers mogelijk, terwijl het voor Spectre moeilijker is om een omvattende oplossing te bieden en systemen te beveiligen. De onderzoekers stellen dat een oplossing in veel gevallen gezocht moet worden in aanpassingen van processorontwerpen en updates voor isa's. In het Meltdown-paper schrijven de onderzoekers dat ondanks tegenmaatregelen een attack surface overblijft. Zo blijft het mogelijk om pointers te lekken, die gebruikt kunnen worden om de kaslr-beschermingsmaatregel voor kernelgeheugen te omzeilen. De zogenaamde Kaiser-patches zouden echter de beste tegenmaatregel zijn.SpectreMeltdownWie is getroffen?
Uit het gepubliceerde onderzoek blijkt dat Meltdown zich hoofdzakelijk beperkt tot Intel-cpu's. Een proof-of-concept van Project Zero werkte op een Xeon-cpu van de Haswell-generatie en ook in het Meltdown-paper schrijven de onderzoekers dat ze hun aanval niet werkend konden krijgen op ARM- of AMD-processors. Ze stellen wel dat er een kans bestaat dat een geoptimaliseerde versie van hun techniek alsnog succes kan hebben op deze architecturen. Veel Intel-processors zijn kwetsbaar, volgens onderzoekers gaan getroffen cpu's terug tot 1995.

Spectre werkt zowel op Intel-processors als op die van AMD en ARM. Er zijn verschillende varianten van Spectre, gekenmerkt door CVE-2017-5753 en CVE-2017-5715. Respectievelijk duidt Project Zero deze aan als bounds check bypass en branch target injection. De eerste variant testten de onderzoekers met succes op cpu's van alle drie de fabrikanten. Maar die variant werkt alleen op een AMD Pro-cpu als eBPF om de een of andere reden is ingeschakeld. Dit staat standaard uit. AMD heeft in een eigen berichtgeschreven niet of nauwelijks vatbaar te zijn voor de CVE's eindigend op 5754 en 5715, die toebehoren aan Meltdown en een van de Spectre-kwetsbaarheden. Over CVE-2017-5753 zegt AMD alleen dat dit verholpen kan worden met patches.amd kwetsbaarsInschatting door AMD zelf, waarbij met variant 3 Meltdown wordt bedoeld

Ook ARM heeft een overzicht gepubliceerd. Daaruit is op te maken dat alleen de Cortex-A75 vatbaar is voor Meltdown en Spectre, andere in het overzicht genoemde processors zijn alleen kwetsbaar voor de laatstgenoemde aanval. Er staan nog wel drie exemplaren tussen, de A15, A57 en A72, die vatbaar zijn voor alleen een Meltdown-variant. Die behoeft volgens ARM echter geen patch.

Diensten als AWS hebben inmiddels maatregelen genomen. Hetzelfde geldt voor Google, dat een overzicht heeft gepubliceerd van getroffen diensten. Daarin is ook Android opgenomen, waarvoor deze maand patches zijn uitgekomen. Mozilla heeft eveneens een advisory gepubliceerd, waarin het schrijft dat uit interne experimenten blijkt dat een aanval via webcontent mogelijk is. Daarom heeft het eerste maatregelen genomen in Firefox 57. Chrome ontvangt tegenmaatregelen in versie 64, die op 23 januari moet uitkomen. In de tussentijd kunnen gebruikers site isolation inschakelen.

Wat is het risico? 
Het risico van Spectre voor gewone gebruikers is volgens Bos moeilijk in te schatten, omdat de aanval moeilijk uit te voeren is. Meltdown is makkelijker te gebruiken, maar daarvan bestaat er weer geen implementatie in Javascript. Het lijkt hem echter 'triviaal' om een dergelijke implementatie te ontwikkelen. Hij vervolgt: "Het probleem is sowieso dat dit soort kwetsbaarheden alleen maar erger worden. Meer en meer mensen gaan ernaar kijken en ontdekken dan nieuwe manieren om ze te misbruiken. Ondanks dat we deze kwetsbaarheden nog niet door criminelen misbruikt hebben zien worden, denk ik dat het een ernstig risico is."

Ook op de lange termijn kunnen de kwetsbaarheden effect hebben. "Dit soort aanvallen lijken de nieuwe frontlinie van computerbeveiliging. Waren zulke aanvallen tot voor kort nog te scharen onder science fiction, zien we nu elke paar maanden een nieuwe aanval in deze categorie. Het gevolg is dat besturingssystemen nu beduidend anders worden van structuur, dat veel van de aannames die we deden over de veiligheid van hardware opnieuw onderzocht worden en dat, specifiek voor deze kwetsbaarheden, computers significant langzamer worden."

Bos omschrijft de kwetsbaarheden als ernstig en stelt: "Zeker op computers waar code draait van meerdere gebruikers kan gevoelige informatie worden gelekt. Dit geldt bijvoorbeeld voor cloudomgevingen waar programma's van verschillende organisaties dezelfde fysieke hardware gebruiken, maar ook voor zoiets alledaags als een webbrowser, waarin voortdurend Javascript-code van websites wordt uitgevoerd."

Zijn er patches voor besturingssystemen?
Vooropstaat dat Meltdown patchbaar lijkt te zijn, terwijl dit voor Spectre moeilijker is. Verschillende fabrikanten hebben inmiddels patches gepubliceerd. Zo heeft Microsoft deze inmiddels beschikbaargesteld voor Windows 10. Daarbij speelt de aanwezige antivirussoftware een rol, omdat sommige versies van av-suites niet compatibel zijn met de patches en het systeem deze daarom niet ontvangt. Beveiligingsexpert Kevin Beaumont werkt aan een overzicht waarin hij bijhoudt welke informatie door beveiligingsbedrijven naar buiten is gebracht. In de Linux-kernel zijn de patches in versie 4.15 vrijgekomen met backports naar versie 4.14.10. Ontwikkelaars voor de Linux-kernel werkten al een tijd aan zogenoemde Kaiser-patches. Die zijn begin december omgedoopt tot x86/kpti-patches, waarbij kpti staat voor kernel page table isolation. Volgens The Register is macOS gepatcht vanaf versie 10.13.2.

Draait mijn systeem trager door de patches? 
Onder meer PhoronixHardware Unboxed en Computerbase publiceerden benchmarks na het toepassen van de nodige patches. De tests van Phoronix betroffen Linux en wezen op aanzienlijke prestatievermindering bij toepassingen als FS-Mark-, Compile Bench- en PostgreSQL. Hardware Unboxed ondervond bij i/o-benchmarks op Windows nagenoeg alleen een noemenswaardige prestatievermindering bij 4k reads en acces time reads. Bij gaming zou er bij zowel Windows als Linux geen verschil in prestaties optreden. Vooral het uitvoeren van syscalls zou trager verlopen. Volgens Microsoft gaat 'de meerderheid' van de Azure-klanten geen prestatieverschil merken. Een kleine groep klanten zou lagere netwerkprestaties kunnen ervaren, maar dit zou op te lossen zijn door Azure Accelerated Networking te activeren.

Bos stelt dat er percentages tot 30 procent prestatievermindering worden genoemd, maar dat hijzelf niet gelooft dat het zo hoog zal uitvallen. "Ik geloof zelf niet dat het 30 procent zal zijn, maar zelfs 5 procent vertraging van vrijwel alle computers ter wereld levert een grote schade op. Daarnaast worden er wel veel patches voorgesteld, maar lossen de huidige patches het echte probleem niet op. Ze houden dan enkele varianten van de aanval tegen, maar het probleem blijft. Vooral de Spectre kwetsbaarheid blijft problematisch", aldus Bos.

Wie ontdekten de kwetsbaarheden?
Bij de ontdekking van zowel Spectre als Meltdown was Jann Horn van Googles Project Zero betrokken. In de blogpost van het project is genoemd dat Intel, AMD en ARM op 1 juni van vorig jaar op de hoogte zijn gesteld. Voor Meltdown geldt dat deze kwetsbaarheid daarnaast door Werner Haas en Thomas Prescher van Cyberus is ontdekt, naast een team van de Technische Universiteit van Graz. Spectre werd naast Horn door Paul Kocher in samenwerking met verschillende onderzoekers ontdekt.

Bron: Tweakers.net