SWAPGS — nieuwe kwetsbaarheid in de mechanismen voor speculatieve uitvoering van CPU's

Onderzoekers van Bitdefender hebben aangetoond een nieuwe kwetsbaarheid (CVE-2019-1125) in de mechanismen voor speculatieve uitvoering van instructies in moderne CPU's, genaamd SWAPGS, verwijzend naar de procesinstructie die het probleem veroorzaakt. De kwetsbaarheid toe staat een niet-geprivilegieerde aanvaller toe om de inhoud van kernelgeheugengebieden of draaiende virtuele machines te bepalen. Het probleem is bevestigd in Intel-processors (x86_64) en gedeeltelijk aan in AMD-processors, waarvoor de primaire aanvalsvector zich niet manifesteert. Eerdere tegenmaatregelen voor de kwetsbaarheden Spectre en Meltdown beschermen niet tegen de SWAPGS-aanval bij het gebruik van Intel-processors, maar voor Linux, ChromeOS, Android en Windows zijn al oplossingen voorgesteld.

De kwetsbaarheid valt onder de klasse Spectre v1 en is gebaseerd op het idee van het herstellen van gegevens uit de procesorkooi die overblijven na de speculatieve uitvoering van instructies. De voorspellingsmodules van moderne CPU's passen speculatieve uitvoering toe van enkele instructies waarvan waarschijnlijk wordt verwacht dat ze worden uitgevoerd, maar wachten niet op de berekening van alle factoren die hun uitvoering bepalen (bijvoorbeeld wanneer de overgangsvoorwaarden of toegangsparameters nog niet zijn berekend). Als de voorspelling niet wordt bevestigd, werpt de processor het resultaat van de speculatieve uitvoering af, maar de tijdens dit proces verwerkte gegevens blijven in de procesorkooi en kunnen worden hersteld met behulp van methoden die de inhoud van de kooi bepalen via zij-tactieken, die de toegangstijd tot gecachte en niet-gecacheerde gegevens analyseren.

De eigenschap van de nieuwe aanval is het gebruik van een lek dat optreedt tijdens de speculatieve uitvoering van de instructie SWAPGS, die in besturingssystemen wordt gebruikt om de waarde van de GS-register te vervangen bij de overgang van controle van de gebruikersruimte naar de kernel van het besturingssysteem (de gebruikte waarde van GS in de gebruikersruimte wordt vervangen door de waarde die wordt gebruikt bij operaties in de kernel). In de Linux-kernel bevat GS een per_cpu-pointer die wordt gebruikt voor toegang tot kerngegevens, terwijl in de gebruikersruimte pointers naar TLS (Thread Local Storage) worden bewaard.

Om dubbele aanroep van de SWAPGS-instructie te voorkomen bij herhaalde toegang tot de kernel vanuit de kernruimte of wanneer er code wordt uitgevoerd die geen wijziging van het GS-register vereist, wordt er vóór de instructie een controle en voorwaardelijke sprong uitgevoerd. Het mechanisme voor speculatieve uitvoering gaat vooruit met de uitvoering van de code met de SWAPGS-instructie, zonder te wachten op het resultaat van de controle, en als de gekozen tak niet bevestigd wordt, wordt het resultaat verworpen. Zo kan het gebeuren dat speculatief een tak wordt gekozen die geen uitvoering van SWAPGS voorziet, maar tijdens de speculatieve uitvoering de waarde van het GS-register wordt gewijzigd door de SWAPGS-instructie en gebruikt wordt in afhankelijke geheugenoperaties, die in de CPU-cache worden opgeslagen.

Onderzoekers hebben twee aanvalsscenario's voorgesteld waarvoor prototypes van exploits zijn voorbereid. Het eerste scenario is gebaseerd op de situatie waarin de SWAPGS-instructie niet speculatief wordt uitgevoerd, hoewel deze wordt gebruikt tijdens de feitelijke uitvoering, en het tweede scenario is het tegenovergestelde, waarbij de SWAPGS-instructie speculatief wordt uitgevoerd, hoewel deze feitelijk niet zou moeten worden uitgevoerd. Voor elk scenario zijn er twee exploitatievarianten voorzien: de aanvaller kan een waarde bepalen op een bepaald adres in het kernelgebied en de aanvaller kan een bepaalde waarde zoeken op willekeurige adressen in de kernel. Het uitvoeren van de aanval kost veel tijd en voor het organiseren van een lek kan het nodig zijn om de exploit gedurende enkele uren uit te voeren.

Video afspelen

In de Linux-kernel is er een probleem opgelost door wijziging van de logica van de aanroep van de SWAPGS-instructie (blokkeren van speculatieve uitvoering), vergelijkbaar met de oplossing van andere kwetsbaarheden in de Spectre v1-klasse. Er wordt aangenomen dat de toegevoegde bescherming minimaal invloed zal hebben op de prestaties van typische werkbelasting. De vertraging vindt plaats tijdens de omschakeling tussen de gebruikersruimte en de kernel, wat kan leiden tot verminderde prestaties, bijvoorbeeld bij intensieve uitvoering van systeemaanroepen vanuit een applicatie of bij frequente generatie van NMI en onderbrekingen.

De correctie vereist de installatie van een kernelupdate zowel in het hoofd systeem als in de gastomgevingen, met een daaropvolgende herstart van het systeem. Om de bescherming in Linux uit te schakelen, kan de optie 'nospectre_v1' worden gebruikt, die ook de maatregelen voor het blokkeren van de SWAPGS-kwetsbaarheid uitschakelt. De correctie is beschikbaar als patch voor de Linux-kernel, die al is opgenomen in de versies 4.19.65, 5.2.7, 4.14.137, 4.9.188 en 4.4.188. Updates voor Linux-distributies zijn nog niet uitgebracht (Debian, RHEL, Fedora, Arch Linux, SUSE/openSUSE, Ubuntu). In Windows is het probleem zonder veel publiciteit opgelost in de update van juli. Google De belangrijkste afnemer van de oplossingen voor het minen van Grin beschouwt de ontwikkelaar als de thuisgebruiker. Hiervoor heeft Innosilicon een ASIC-miner ontwikkeld in de vormfactor van een PCIe-adapter, die qua grootte en vorm lijkt op een videokaart. De prijs voor de pre-order, die voor het einde van april geplaatst moet worden, bedraagt $800. De leveringen van de oplossing beginnen in augustus. Het kopen van de miner na de start van de leveringen kost al $1200. Deze en andere miners ondersteunen de hashing-algoritmes Cuckatoo31+ en Cuckatoo32+ (net als Cuckatoo29/30). Tot april 2020 zullen alle algoritmes behalve Cuckatoo32+ uit gebruik worden genomen, maar de apparatuur van Innosilicon verliest niet aan relevantie, omdat deze al het algoritme Cuckatoo32+ ondersteunt. Overigens is de garantie op de apparatuur bij het plaatsen van de pre-order verlengd van 6 naar 9 maanden, wat een aangename aanvulling zal zijn op de directe kortingen. heeft de correctie voor kernel 4.19 geleverd, die wordt meegeleverd met ChromeOS en Android.

Volgens onderzoekers van Bitdefender was Intel al in augustus vorig jaar op de hoogte van het probleem. Het probleem moest softwarematig worden opgelost, waarvoor ontwikkelaars van Microsoft, Google en de Linux-kernel zijn betrokken bij de gecoördineerde ontwikkeling van de correctie. Oude Intel-processoren, tot Ivy Bridge, zijn aanzienlijk moeilijker te exploiteren vanwege het ontbreken van ondersteuning voor de WRGSBASE-instructie die in de exploit is gebruikt. Systemen met ARM, POWER, SPARC, MIPS en RISC-V zijn niet vatbaar voor het probleem, aangezien ze de SWAPGS-instructie niet ondersteunen.

Het probleem bedreigt in hoofdzaak bezitters van Intel-processoren —
op systemen van AMD kon alleen het tweede aanvalsscenario worden gereproduceerd, dat is beperkt tot de speculatieve verwerking van de basiswaarde van de GS-register, wat kan worden gebruikt om bepaalde waarden in willekeurige geheugengebieden te vinden. Om deze aanvalsmethode te blokkeren voldoende bestaande methoden voor bescherming tegen Spectre v1-kwetsbaarheden.

Bron: opennet.ru

Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers 🔥 Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers | ProHoster