Afgelopen januari werden Meltdown en Spectre bekend, twee lekken in computerprocessoren waardoor laptops en smartphones informatie kunnen doorgeven aan hackers. Experts spreken van een nieuwe categorie van aanvallen. Hoe staat het ervoor en hoe werken deze aanvallen? NEMO Kennislink spreekt met een van de ontdekkers van Spectre. “Dit houdt de beveiligingscommunity nog jaren bezig.”
Het hart van elke laptop, tablet of smartphone is een processor die met hoge snelheid berekeningen uitvoert. Moderne processoren zijn ware kunststukjes. Miljarden schakelingen en verbindingen op een gebiedje van pakweg twee bij twee centimeter, die in een razend tempo informatie verwerken in een kakofonie van elektrische stroompjes. De circuits zijn inmiddels zó ingewikkeld dat er geen ingenieur meer is die een gemiddelde processor volledig kan doorgronden.
In de steeds complexere elektronica is ook het gedrag ingewikkelder. Talloze optimalisatietechnieken persen het laatste beetje rekenkracht uit een chip. Een moderne processor splitst de eindeloze stroom van rekentaken razendsnel op, verwerkt ze door verschillende rekenkanalen, en combineert ze weer. Daarnaast doet een processor ‘voorwerk’: om te voorkomen dat hij lang moet wachten op informatie uit het relatief langzame geheugen doet de processor soms rekenwerk op basis van aannames, die hij later controleert.
Afgelopen januari werd bekend dat moderne processoren gevoelige informatie (bijvoorbeeld wachtwoorden of documenten) kunnen lekken. Hackers kunnen misbruik maken van de manier waarop ze vooruit werken. Hoewel er nog geen hacks zijn gemeld en iedere hardwarefabrikant en softwareleverancier producten van updates voorzag, vermoeden experts dat er nog steeds onontdekte openingen zijn voor hackers. Hoe werkt het lek? En wat merkt de ‘gebruiker’ er eigenlijk van? NEMO Kennislink duikt in de wereld van processortechniek en spreekt een van de ontdekkers van het _Spectre_-lek.
Nóg snellere processoren
Volgens sommigen zijn Meltdown en Spectre de grootste beveiligingslekken sinds jaren, en passen ze in rijtjes waarin ook het Heartbleed-lek opduikt. Als je wilt begrijpen hoe ze ontstonden, ontkom je niet aan een klein lesje computertechniek dat verklaart waarom computers sinds de jaren tachtig duizenden malen sneller werden.
Hoe snel is je computer? In eerdere generaties consumentencomputers was het vooral de zogenoemde kloksnelheid die de rekensnelheid van een computer bepaalde. De eerste Intel Pentium-processor uit 1993 draaide op een kloksnelheid van 60 MHz. Dat betekende dat de nauw op elkaar afgestemde elementen in het circuit schakelden met een ‘ritme’ van 60 miljoen tikken per seconde.
In de jaren daarna was vooral het opkrikken van die kloksnelheid de manier om processoren sneller te maken. In 1999 maakte Intel processoren met een snelheid van 300 MHz, in 2004 zaten ze op 3000 MHz. Maar toen botste de chipindustrie hard tegen een grens aan. Belangrijkste reden was de oplopende warmteproductie in de chip. Er ging steeds meer stroom door chips die ondanks grote ventilatoren oververhit raakten.
‘Onlogische’ berekeningen
Verdere groei was mogelijk door het parallel uitvoeren van rekenprocessen. Door meerdere zogenoemde rekenkernen in een processor kon hij verschillende taken tegelijk uitvoeren. Zie het als het aanleggen van meerdere kanalen om een waterstroom af te voeren, in plaats van zoveel mogelijk water door een kanaal de persen. Moderne processoren hebben al gauw twee, vier of acht rekenkernen. Deze trend maakte ook het verdelen van de rekentaken en het tijdelijk opslaan en ophalen van informatie in het geheugen van de processor ingewikkelder.
Nóg een manier om de snelheid op te jagen is het anticiperen op wat een programma gaat doen. Moderne processoren doen dit in toenemende mate: het zogenoemde speculatief en out-of-order doen van berekeningen, ofwel de stappen van een berekening niet in de ‘logische’ volgorde uitvoeren. Het komt vaak neer op het doen van voorwerk zodat dit later misschien snelheidswinst oplevert.
Stel je het voor als het uitwerken van een belastingaangifte. Je weet de deadline voor de aangifte, en je hebt voorlopige cijfers. Je kunt wachten op de definitieve cijfers, óf de aangifte alvast uitwerken en hopen dat de voorlopige cijfers kloppen. Zijn ze niet juist dan doe je de berekening nogmaals. Kloppen de bedragen wél dan lever je de belastingaangifte meteen in als je de definitieve cijfers hebt. Op een vergelijkbare manier doen processoren berekeningen met cijfers waarvan niet zeker is of ze kloppen. Omdat het ophalen van de cijfers uit het geheugen relatief lang duurt, doet de processor een gok en werkt verder met het verwachte resultaat van de berekeningen. Deze verwachting maakt hij op basis van eerdere berekeningen.
Lekken door vooruit werken
Meltdown en Spectre maken misbruik van het feit dat processoren vooruit werken, en informatie uit het geheugen halen waartoe ze eigenlijk geen toegang hebben. Dat kan van alles zijn. Code van een ander programma, maar ook gevoelige informatie zoals creditcardgegevens of documenten. Door zorgvuldig opgezette aanvallen kan via de lekken de inhoud van het gehele interne geheugen in de handen van kwaadwillenden belanden.
Meltdown komt alleen voor in processoren van Intel en sommige modellen van de fabrikant ARM. Normaal gesproken is er een strikte toegangscontrole op het moment dat een programma bij een bepaald stukje geheugen wil. Is er geen toestemming, dan wordt de aanvraag afgewezen. Nu blijkt dat juist de aanvragen voor het eerder beschreven ‘vooruitwerken’ níet aan zulke strenge eisen hoeven te voldoen omdat dit het vooruitwerken zou vertragen.
Het programma mag bij de informatie en de processor controleert later pas of het erbij had gemogen. Blijkt dat niet zo te zijn, dan wist hij de informatie. In theorie is dat veilig, maar – en hier zit de crux – omdat die informatie wél in het cachegeheugen van de processor is beland (zie kader Geheugen, geheugen, geheugen), kan een kwaadwillende die ‘geheime’ informatie via een truc toch herleiden.
Spectre is breder toepasbaar, naast Intel-processoren ook op die van concurrenten AMD en ARM. Het maakt misbruik van het feit dat een processor probeert te voorspellen wat voor rekenstappen een programma snel nodig heeft. In een notendop laat de aanvaller een processor een aantal keer een stukje geheugen lezen waar het wél bij mag. Vervolgens doet het programma een aanvraag voor een stukje geheugen waar het eigenlijk niet bij mag, maar waarvan de processor (nog) niet kan controleren of dit daadwerkelijk zo is. Dat gebeurt pas later, als het stukje geheugen al uitgelezen is en in het cachegeheugen is beland. Daarvandaan herleiden kwaadwillenden de informatie.
Omdat deze lekken voortkomen uit de manier waarop de hardware werkt, kan zelfs software die in theorie perfect veilig is ontworpen, informatie lekken. Dat wil niet zeggen dat er niets aan te doen is. Afgelopen januari, vlak nadat de lekken bekend werden, kwamen hardware- en softwarefabrikanten met software-updates die Meltdown (zeker) en Spectre (voorlopig) dichten.
Ontdekking Meltdown en Spectre
Voor het ontwikkelen van oplossingen hadden de fabrikanten overigens al een half jaar de tijd gehad. Op 1 juni 2017 kwam er vanuit een beveiligingsproject van Google een (niet openbare) melding van de lekken aan de fabrikanten van processoren. In het half jaar daarna deden verschillende groepen van computerwetenschappers melding van dezelfde lekken. Of het daarom onvermijdelijk was dat dit nu naar buiten zou komen? Yuval Yarom denkt van wel. Hij is informaticus van de Universiteit van Adelaide en onderzoekscentrum Data61 en publiceerde samen met zo’n tien onderzoekers van verschillende universiteiten een artikel waarin ze laten
de onderzoekers zien dat een zelfgemaakt programma informatie ‘steelt’ uit het geheugen van een computer.
“Er is al een aantal jaren veel aandacht voor dit soort zogenoemde _side-channel_-aanvallen, waarbij informatie uit computersystemen lekt omdat de aanvaller slim gebruikmaakt van manieren waarop een systeem informatie kan prijsgeven, bijvoorbeeld door timing of stroomverbruik”, zegt Yarom. “Zo kan het gebeuren dat dit lek in korte tijd door verschillende teams op de wereld werd ontdekt.”
Nog steeds doen Yarom en zijn collega’s volop onderzoek naar Spectre. Hij vermoedt dat er nog nieuwe manieren zijn waarop aanvallers het lek kunnen gebruiken. “We weten eigenlijk nog niet zo veel van dit soort aanvallen”, zegt hij. “Er zijn waarschijnlijk nog andere achterdeurtjes, we hebben nog niet echt een goed beeld van de kwetsbaarheden in de systemen. Dat komt mede door de doorgaans beperkte informatie over het processorontwerp van fabrikanten.”
Jaren werk
Yarom zegt dat er meer dan tien jaar geleden al processoren in omloop waren waarin Spectre-aanvallen mogelijk waren. Lekt er dan al jarenlang gevoelige informatie uit onze computers? Yarom denkt van niet. “Er zijn bij ons geen gevallen van misbruik bekend, en inmiddels zijn er updates voor vrijwel alle systemen”, zegt hij.
Volgens sommige berichten hebben die updates in enkele gevallen wel invloed gehad op de snelheid van processoren. Bernard van Gastel is universitair docent bij de Open Universiteit en Radboud Universiteit in Nijmegen en zegt dat er over verschillende platformen prestatieverminderingen tot 23 procent zijn gezien.
“Dat hangt overigens erg af van wat voor soort berekeningen je doet”, zegt hij. “Vooral processen die veel met het besturingssysteem ‘communiceren’ gaan trager. Die moeten nu extra stappen maken om het veilig te maken. Zowel gegevens opslaan op een harde schijf als het uitwisselen van gegevens over een netwerk gaan via het besturingssysteem. Daarom verwacht ik dat vooral serverparken die veel data opslaan en uitwisselen hier veel last van hebben. Harde wiskundige berekeningen of bijvoorbeeld het laden van een website gaan nauwelijks langzamer.”
Yarom denkt eigenlijk dat de meeste computer- en smartphonegebruikers geen echte daling van snelheid hebben gemerkt. “Zelfs al gaat een proces iets trager dan is er vaak nog ruimte om de processor iets sneller te laten draaien. Dan compenseer je als het ware”, zegt hij.
Als je het aan Yarom vraagt zal de impact op de ‘eindgebruiker’ wel meevallen, ook al is dit in zijn ogen wel degelijk een groot veiligheidslek. “Vergelijk het met andersoortige aanvalsmogelijkheden zoals via het zogenoemde buffer overflow of het Heartbleed-lek uit 2014; ze bestaan al jaren maar tegelijkertijd komen er oplossingen”, zegt hij. “Er zijn waarschijnlijk nog wel meer manieren waarop Spectre lekken oplevert, want er is een heel nieuwe soort van aanvallen ontstaan. Het zijn interessante tijden voor de beveiligingscommunity, dit houdt ons nog jaren bezig.”