Foreshadow: Beveiligingslek Intel-processors treft SGX en ander afgeschermd geheugen

Onderzoekers van de KU Leuven hebben een nieuwe kwetsbaarheid in Intel-processors ontdekt die SGX treft - Intels techniek om data in het geheugen gescheiden en dus veilig te houden. Intel zelf vond op basis van eigen onderzoek nog twee aanvullende kwetsbaarheden in de System Management Mode en de Virtual Machine Manager. De drie lekken zijn gepubliceerd onder de naam Foreshadow.

Alle drie zijn gebaseerd op lekken uit de L1-cache en heten volgens Intel daarom L1 Terminal Fault. De eerste twee zijn al onschadelijk gemaakt door nieuwe microcode van Intel zelf en softwareupdates van onder andere Microsoft. Het derde lek dat virtuele machines treft is vooral voor datacentra een probleem en tevens moeilijker op te lossen. Consumentenchips hebben hier echter geen last van.

Voortborduren op Meltdown

Intel SGX staat voor Software Guard eXtensions en schermt gedeeltes van het ram af door ze telkens te versleutelen bij het schrijven ernaartoe. Dit maakt dat de data alleen via dit afgeschermde deel te benaderen is, dat de processor beheert. Zelfs als een systeem geïnfecteerd is moet de data beschermd blijven. Dat was het geval.

Als opvolger van Meltdown wordt wederom gebruikgemaakt van speculative execution. De processor voert instructies uit, voorspelt aan de hand daarvan wat hij daarna moet doen, voert dat vast uit en beoordeelt later of dat de juiste stap was. Tijdens die stap wordt de data steeds in de cache bewaard. De voorspellingen van de cpu lopen echter voor op de permissies, waardoor data soms uit te lezen is uit het cache.

'Niet present geheugen'

Specifiek voor SGX is het kritiek hoe en waar de encryptie en decryptie plaatsvindt. In het ram kan de data wel versleuteld zijn, maar in de L1-cache staat het zonder versleuteling. Dezelfde techniek kan dus gebruikt worden om 'beveiligde' data uit te lezen, waardoor SGX zijn veiligheid verliest.

Abort page semantics moet dit voorkomen, door bij lezen van dit afgeschermde deel met een -1 te reageren en schrijven compleet te negeren. Het blijkt vanuit een applicatie echter mogelijk om de data als 'niet present' te markeren, waardoor de processor niet meer naar permissies kijkt. Het resultaat is dat er een page fault geïnitieerd wordt waarmee dit beveiligingsmechanisme omzeild is. Dezelfde techniek kan ook gebruikt worden om data van bijvoorbeeld hypervisors en de System Management Mode uit te lezen.

Twee van de drie opgelost

Voor de bovenstaande problemen zijn reeds patches uitgebracht die moeten voorkomen dat data uit het L1-cache lekt. Nadat de processor klaar is met data uit een afgeschermd deel, wordt de cache geflushed, waardoor hij daarna niet meer uit te lezen is. Daarnaast kan vanuit het OS nu opdracht gegeven worden tot een cache flush, waardoor softwarefabrikanten extra veiligheid kunnen inbouwen.

Virtuele machines: hyperthreading uit of een eigen core

Een processor waarop één omgeving draait, zoals vrijwel elke consument dat doet, is met bovenstaande oplossing vermoedelijk weer veilig gemaakt. Data kan, vooralsnog, niet meer ongewild gelezen worden. Bij virtuele machines zijn echter nog problemen die veroorzaakt worden door hyperthreading.

In serveromgevingen is het gebruikelijk dat meerdere virtuele systemen op een enkele processor draaien, waarbij het ook voor komt dat een enkele fysieke core twee virtuele machines bedient - elk een eigen virtuele core. Wordt vervolgens afgeschermde data verwerkt in een eigen virtuele core maar een gedeelde fysieke core, dan kan vanuit de andere virtuele core alsnog het L1-cache uitgelezen worden.

Een oplossing hiervoor is het uitschakelen van hyperthreading, maar dat geeft een forse prestatieachteruitgang. Logischer zou het zijn als een virtuele machine gekoppeld is aan een eigen fysieke core, zodat het risico getackeld is.

Meer details van de lekken zijn te vinden op de pagina van Foreshadow en bij Intel.

Bronnen: Foreshadow, Ars Technica

« Vorig bericht Volgend bericht »
0