Vandaag hebben Google's Project Zero en Microsoft aangekondigd een vierde variant van de Spectre-bug gevonden te hebben. Deze variant maakt gebruik van Speculative Store Bypass (of Speculative Store Buffer Bypass). In deze variant wordt misbruik gemaakt van het feit dat de processor moet checken of de data die tijdens de speculatieve executive is gebruikt in de tussentijd niet veranderd is.
Het probleem is dat deze speculatie door elk proces te bekijken is. Hier kan een malafide applicatie misbruik van maken door de processor uit een bepaald adres uit te laten lezen terwijl het in werkelijkheid een ander adres uitleest. En op die manier kan er data verzameld worden zonder dat het door het systeem detecteerbaar is.
Waar gaat het mis?
Het afgelopen jaar is gebleken dat speculative execution in moderne processoren alles behalve veilig is. De techniek wordt gebruikt om vooraf te voorspellen welke instructies waarschijnlijk uitgevoerd moeten gaan worden en deze alvast uit te voeren, waarvoor data in een geheugenregister, -buffer of -cache moet worden geplaatst en gewijzigd. Achteraf wordt dan gecontroleerd of dit wel de juiste instructie was.
Het grote probleem is dat in moderne microprocessoren deze stukken geheugen niet goed afgeschermd zijn en andere applicaties bij deze data kunnen. Hierdoor kan veel applicatiedata, zoals wachtwoorden en persoonlijke gegevens, door alle andere applicaties benaderd worden. Waaronder die van kwaadwillenden.
Oplossing
Momenteel is de enige oplossing die fabrikanten aandragen het uitschakelen van speculative execution. Dit is een vrij drastische maatregel waarbij performance moet worden ingeleverd. Bij variant 4 lijkt de extra performance impact mee te vallen en fabrikanten werken aan een oplossing.
Fabrikanten: de reacties van Arm, Intel en AMD
Arm heeft al laten weten de veelgebruikte Cortex-A57, -A72, -A73 en -A75 cpu-kernen getroffen zijn door v4. Er is per direct firmware beschikbaar die het probleem mitigeert met een performance impact van 1 tot 2% bij de meeste workloads. In juli moeten er nieuwe versies van de A72, A73 en A75 kernen uitkomen die resistent zijn tegen variant 2, en Cortex-A75 wordt ook resistent gemaakt tegen v3, ook bekend als Meltdown.
Intel heeft ook al microcode beschikbaar gesteld aan oem's om zich tegen het risico te weren, met een iets grotere performance impact van 2 tot 8 procent. Vanwege deze impact heeft Intel echter besloten om de optie standaard uit te laten staan, waardoor gebruikers van kritieke systemen zelf in de bios de patch moeten aanzetten.
AMD heeft aangegeven microcode en patches uit te rollen, maar geeft niet aan wat voor impact op performance dat gaat hebben. Net als Intel zal het de patches standaard uitgeschakeld laten, omdat het risico op misbruik erg klein is.
Varianten
Op het moment van schrijven zijn er nu vier varianten van de Spectre-bug waarmee geheugen in processors kan worden uitgelezen dat niet bedoeld is voor die applicatie, en waar dus misbruik van gemaakt kan worden. Bij elk van de varianten zit de essentie in het feit dat de systeemgrenzen waarin een applicatie mag opereren omzeilt kunnen worden.
- Variant 1: Bounds Check Bypass – CVE-2017-5753 (Spectre 1)
- Variant 2: Branch Target Injection – CVE-2017-5715 (Spectre 2)
- Variant 3: Rogue Data Cache Load – CVE-2017-5754 (Meltdown)
- Variant 3a: Rogue System Register Read – CVE-2018-3640
- Variant 4: Speculative Store Bypass – CVE-2018-3639 (Spectre 4)
Lees ook:
Bronnen: US Gov, Red Hat, Microsoft, Arm, AMD, Intel