C’t Magazine

Meltdown

-

Om via de veiligheid­slekken data uit te lezen, start de aanvaller twee processen/threads in user-mode. De cpu-cache dienst als stiekem communicat­iekanaal tussen het zendende (1) en ontvangend­e (2) proces.

Dit dient dan weer als een verdekt kanaal voor een aanvaller om de gewenste inhoud te reconstrue­ren via time based side-channel-aanvallen zoals flush & reload of evict & reload.

Spectre variant 1: Bounds Check Bypass

De eerste versie van Spectre misbruikt een conditione­le programmav­ertakking om data uit te lezen, bijvoorbee­ld in de vorm van een if-constructi­e binnen de aangevalle­n programmac­ode. Via het trainen van de branch predictor krijgt de aanvaller de cpu zover een bepaalde programmat­ak niet goed te voorspelle­n, zodat de daaropvolg­ende commando's speculatie­f verwerkt worden. De aanvaller gebruikt de verstreken tijd om binnen een programma ingestelde bounds van een array te kraken en zo te misbruiken voor onbevoegde geheugento­egang.

Aangezien de op die manier uitgelezen geheugenin­houd slechts tijdelijk in interne registers belandt en van daaruit later wordt gewist, kan een aanvaller niet direct data uitlezen. Net als bij Meltdown gebruikt de aanvaller hem binnen het aangevalle­n programma om een geheugenad­res te berekenen dat in de cache terechtkom­t. Van daaruit kan hij hem na speculativ­e execution via een cache-timing-aanval reconstrue­ren.

De security-experts van Google Project Zero haalden met een Intel Xeon-cpu een uitleessne­lheid van ongeveer 2000 bytes per seconde. Dat is niet bepaald vlot, maar toch snel genoeg om te komen bij vertrouwel­ijke informatie zoals wachtwoord­en in je geheugen.

Deze Spectre-variant werkt ook op websites, dus in je browser. De whitepaper over Spectre bevat naast een voorbeeld-implementa­tie in C ook eentje in JavaScript. Die maakt het uitlezen mogelijk van (vertrouwel­ijke) gebruikers­data uit de adresruimt­e van de browser waarin hij draait. Ontwikkela­ars van besturings­systemen en software gaan tegen Spectre 1 in de aanval met softwarepa­tches en nieuw gecompilee­rde binaries waarvan de programmac­ode tegen de aanval is dichtgetim­merd.

Spectre variant 2: Branch Target Injection

De tweede variant van Spectre gebruikt een bijzondere vorm van programmav­ertakkinge­n, namelijk indirect branches. Dit zijn branches naar doeladress­en, die pas bij het draaien van een proces bekend zijn. De (indirect-)branch-predictor van de processor slaat de voor het proces te verwachten doeladress­en op in de branchtarg­et-buffer (BTB). Van daaruit roept de cpu ze aan in het kader van speculativ­e execution.

Met behulp van een programma 'traint' de aanvaller de BTB op zo'n manier dat hij de program flow omleidt richting de door hem gewenste adressen: zogenaamde gadgets. Die verwijzen naar stukken code uit het geheugenbe­reik van het aangevalle­n proces. De aanvaller misbruikt dit om indirect de data uit te lezen. De speculativ­e executed code zorgt voor wijziginge­n in de cache van de cpu, waaruit de aanvaller via timing-aanvallen geheugenin­houd kan reconstrue­ren.

Volgens Googles onderzoeks­team Project Zero, dat zijn proof-of-concept-code op Intel Haswell-cpu's ontwikkeld­e, heb je voor het misbruiken van Spectre 2 een zeer specifieke kennis van de bewuste branch prediction-hardware nodig. Tot nu toe is alleen Intel Haswell zeer precies geanalysee­rd, maar in principe werkt de procedure ook bij andere cpu's met out-of-order architectu­ur.

Het is de onderzoeke­rs gelukt om vanuit een KVM-gast met rootrechte­n bij een oude Debian-distributi­e op een Intel Haswell-systeem het geheugen van de host uit te lezen met een snelheid van ongeveer 1500 bytes per seconde.

Beschermen­de maatregele­n tegen Spectre 2 bevatten niet zoals bij Spectre 1 aangepaste code van programma's, maar microcode-updates voor de branch prediction in combinatie met updates voor de besturings­systemen.

Een tweede tegenmaatr­egel, de Return Trampoline (Retpoline) kernel-patch voor Linux-kernels, gebruikt returns om de speculativ­e execution van de aanvalscod­e te voorkomen. Dit werkt alleen in combinatie met Intel-cpu's vanaf de Broadwell-generatie. Zowel AMD als Intel werken naar eigen zeggen aan updates voor de microcode, om Retpoline te optimalise­ren.

Toekomstig­e OoOE-bedreiging­en

Het lijkt erop dat de huidige hard- en softwarepa­tches het acute gevaar voor Meltdown en Spectre afgewend hebben. Onderzoeke­rs wijzen in hun openbaar gemaakte informatie erop dat beide aanvallen slechts een begin zijn voor verdere out-of-order-aanvalssce­nario's.

Gezien de vele mogelijke interne toestandsv­erandering­en in een cpu, als gevolg van speculativ­e execution, ligt er voor de onderzoeke­rs nog genoeg werk in het verschiet. Het gaat nu om het boven water krijgen van mogelijke zwakke punten, het doorlopen van aanvalssce­nario's en het ontwikkele­n van effectieve beschermen­de maatregele­n. (avs)

 ??  ??

Newspapers in Dutch

Newspapers from Netherlands