Forskere fra Bitdefender en ny sårbarhed () i den spekulative udførelsesmekanisme i moderne CPU'er, som har fået navnet SWAPGS, efter instruktionen i processoren, der forårsager problemet. Sårbarheden giver en ikke-privilegeret angriber mulighed for at bestemme indholdet af hukommelsesområder i kernen eller kørende virtuelle maskiner. Problemet forekommer i Intel-processorer (x86_64) og delvist i AMD-processorer, for hvilke den primære angrebsvektor ikke ses. Tidligere implementerede metoder til at imødegå sårbarhederne Spectre og Meltdown beskytter ikke mod SWAPGS-angrebet ved anvendelse af Intel-processorer, men der er allerede blevet foreslået rettelser til Linux, ChromeOS, Android og Windows.
Sårbarheden tilhører klassen Spectre v1 og er baseret på ideen om at gendanne data fra processorens cache, der er blevet efterladt efter spekulativ udførelse af instruktioner. Blokke til forudsigelse af overgange i moderne CPU'er anvender forsynet udførelse af visse instruktioner for at forbedre ydeevnen, som sandsynligvis vil blive udført, men uden at vente på beregningen af alle de faktorer, der bestemmer deres udførelse (for eksempel når betingelserne for overgangen eller adgangsparametre ikke er blevet beregnet endnu). Hvis prognosen ikke bekræftes, kasserer processoren resultatet af den spekulative udførelse, men de data, der er behandlet i processen, bliver lagt i processorens cache og kan gendannes ved hjælp af metoder til at bestemme indholdet af cachen gennem sidekanaler, der analyserer ændringen i adgangstiden til cachelagrede og ikke-cachelagrede data.
Særlig ved den nye angrebstype er brugen af lækagen, der opstår under den spekulative udførelse af SWAPGS-instruktionen, som anvendes i operativsystemer til at ændre værdien af GS-registeret, når kontrollen overgår fra brugerens rum til kernerummet (den brugerplads GS-værdi erstattes med den værdi, der anvendes ved operationer i kernen). I Linux-kernen opbevares GS en per_cpu-peger, der bruges til at få adgang til kerne data, mens der i brugerens rum er referencer til TLS (Thread Local Storage).
For preventing the double invocation of the SWAPGS instruction when re-accessing the kernel space or when executing code that does not require changing the GS register, a check and conditional jump are performed before the instruction. The speculative execution mechanism preemptively transitions to executing the code with the SWAPGS instruction, without waiting for the result of the check, and if the chosen branch is not confirmed, the result is discarded. Thus, a situation may arise where the speculative branch does not include the execution of SWAPGS, but during the speculative execution, the value of the GS register is altered by the SWAPGS instruction and used in dependent memory operations that settle in the CPU cache.
Researchers have proposed two attack scenarios for which prototypes of exploits have been prepared. The first scenario is based on a situation where the SWAPGS instruction is not executed speculatively, although it is used during actual execution, while the second is the opposite, where the SWAPGS instruction is executed speculatively, although it should not be in reality. For each scenario, there are two exploitation options: the attacker can determine a value at a specific address in the kernel area, and the attacker can search for a specific value at random addresses in the kernel. Conducting the attack takes a long time, and organizing a leak may require running the exploit for several hours.

In the Linux kernel, the problem is through changing the logic of calling the SWAPGS instruction (blocking speculative execution), similar to the fixes for other Spectre v1 class vulnerabilities. It is assumed that the added protection will minimally affect the performance of typical workloads. The delay occurs during switching between user space and the kernel, which may lead to reduced performance, for example, during intensive execution of system calls from an application or frequent generation of NMIs and interrupts.
Reparationen kræver installation af kernelopdateringer både i hovedsystemet og i gæstemiljøer, efterfulgt af en genstart af systemet. For at deaktivere beskyttelsen i Linux kan indstillingen «nospectre_v1» bruges, hvilket også deaktiverer foranstaltningerne til at blokere sårbarheden SWAPGS. Reparationen er tilgængelig i form af for Linux-kernen, som allerede er inkluderet i versionerne , , 4.14.137, 4.9.188 og 4.4.188. Opdateringer til Linux-distributioner er endnu ikke udgivet (, , , , , ). Problemet er blevet løst på Windows uden unødig offentlig omtale i . Google har en reparation til kernen 4.19, leveret i ChromeOS og .
Ifølge forskere fra virksomheden Bitdefender blev Intel informeret om problemet allerede i august sidste år. Problemet blev besluttet at blive løst via software, og udviklere fra Microsoft, Google og Linux-kernen blev involveret i den koordinerede udvikling af reparationen. Gamle Intel-processorer, før Ivy Bridge, er meget sværere at angribe på grund af manglende understøttelse af WRGSBASE-instruktionen, der blev brugt i udnyttelsen. ARM, POWER, SPARC, MIPS og RISC-V systemer er ikke udsat for problemet, da de ikke understøtter SWAPGS-instruktionen.
Problemet truer hovedsageligt ejere af Intel-processorer —
på AMD-systemer lykkedes det kun at reproducere det andet angrebsscenarie, som er begrænset til spekulativ behandling af den grundlæggende værdi af GS-registeret, hvilket kan bruges til at finde specifikke værdier i tilfældige hukommelsesområder. For at blokere denne angrebstype findes der eksisterende metoder til beskyttelse mod sårbarhederne Spectre v1.
Kilde: opennet.ru
