PortSmash: Intel-processors lekken gevoelige data via hyperthreading

Onderzoekers leggen opnieuw een kwetsbaarheid bloot in Intel-chips, die de processors gevoelig maakt voor een side-channel-aanval. De ‘PortSmash’-bug maakt misbruik van een lek in hyperthreading om encryptie te breken. Mogelijk zijn ook chips van andere fabrikanten zoals AMD getroffen.

2018 biedt Intel heel wat kopzorgen op securityvlak. Van Spectre en Meltdown tot Foreshadow, sinds begin dit jaar kwamen al verschillende kwetsbaarheden aan het licht die zogenaamde side-channel-aanvallen mogelijk maken. Met PortSmash komt daar alweer een nieuwe aanvalsvector bij.

Een side-channel-aanval is een indirecte aanval waarbij een hacker misbruikt maakt van informatie uit de implementatie van een computersysteem – tijdinformatie, stroomverbruik, elektromagnetische lekken of zelfs geluid – in plaats van een bug in het algoritme of de software.

Zowel Spectre, Meltdown als Foreshadow maken misbruik van kwetsbaarheden in de implementatie van speculatieve uitvoering in (Intel-)chips. De bug is met name kritiek omdat speculatieve uitvoering een belangrijke ontwikkeling is geweest voor de enorme vooruitgang van processorprestaties in de afgelopen jaren.


Lees dit: De vloek van Spectre: waarom blijft het jou en Intel achtervolgen?


Hyperthreading

De nieuwe PortSmash-bug is niet gebaseerd op speculatieve uitvoering, maar maakt side-channel-aanvallen mogelijk via hyperthreading. Dat is Intels propriëtaire implementatie van simultaneous multithreading (SMT), waarmee de tijd wordt verminderd die nodig is om parallelle computertaken uit te voeren.

Bij SMT wordt een fysieke processorkern verdeeld in twee logische (virtuele) kernen, zodat grote opdrachten in kleinere taken kunnen worden opgesplitst. Een quadcoreprocessor beschikt zo over vier fysieke kernen, maar acht logische kernen.

PortSmash

De onderzoekers konden via PortSmash een elliptic curve private key stelen van een server waarop TLS-encryptie via OpenSSL actief was. Ze voerden hun tests uit op Ubuntu-servers met Intel Skylake- en Kaby Lake-chips, maar vermoeden dat ook de AMD Ryzen-architectuur kwetsbaar is. Door gebrek aan geschikte hardware konden ze deze hypothese evenwel niet testen.

Ook Intel zegt in een reactie dat het probleem vermoedelijk niet uniek is aan zijn platform.

Om de aanval mogelijk te maken, wordt een constante stroom instructies op één logische kern afgevuurd. Vervolgens wordt zorgvuldig geregistreerd hoe lang het duurt voordat de instructies worden uitgevoerd. Die specifieke timing laat toe om de encryptiesleutel af te leiden die wordt verwerkt door een andere logische processorkern op dezelfde fysieke chip.

“De aard van het lek is te wijten aan het delen van de execution engine bij SMT-architecturen. Meer specifiek detecteren we port contention waarmee een timing side channel kan worden opgezet om informatie te onttrekken van processen die in parallel lopen op dezelfde fysieke kern”, schrijft het onderzoeksteam van de Tampere University of Technology in Finland.


Lees dit: Foreshadow: hoe speculatieve uitvoering Intel hoofdpijn blijft bezorgen


Cloud

PortSmash vereist alleen dat een aanvaller toegang heeft tot dezelfde fysieke processor met SMT actief. Daarom vormt de kwetsbaarheid met name een bedreiging voor publieke cloudomgevingen, waar processen van verschillende klanten naast elkaar draaien op dezelfde hardware.

“Persoonlijk denk ik dat remote inlogscenario’s de grootste gerichte bedreiging zijn. Hier logt een kwaadwillende gebruiker met credentials in (bijvoorbeeld via SSH), compileert de exploitcode en voert deze uit om informatie te onttrekken uit andere processen die tegelijkertijd worden uitgevoerd”, zegt onderzoeker Billy Brumley in een reactie aan Ars Technica.

Mitigaties

De onderzoekers adviseren dat SMT volledig wordt uitgeschakeld om een systeem te beschermen tegen PortSmash en andere gelijkaardige aanvalstechnieken. Daarbij geven ze wel meteen ook toe dat dit prestatieverlies met zich meebrengt, in het bijzonder voor applicaties die sterk beroep doen op multithreading.

Een andere optie is om aanpassingen door te voeren aan besturingssystemen, zodat een applicatie kan verzoeken om een logische kern te isoleren bij de uitvoer van gevoelige taken. Dit zorgt voor minder prestatieverlies, maar vereist een grotere inspanning om de nodige wijzigingen door te voeren aan de verschillende codebases.

Tot slot geldt de aanbeveling dat applicaties poortonafhankelijke code gebruiken.

De proof-of-concept van de onderzoekers staat op GitHub en draait lokaal op de kwetsbare computer. Volgens Brumley is er momenteel geen bewijs dat de exploit via JavaScript kan worden uitgevoerd, zoals bij Spectre wel het geval is.

Gerelateerd: De vloek van Spectre: waarom blijft het jou en Intel achtervolgen?