SWAPGS - in nije kwetsberens yn 'e CPU spekulative útfieringsmeganisme

Undersikers fan Bitdefender identifisearre nije kwetsberens (CVE-2019-1125) yn 'e spekulative ynstruksje-útfiermeganisme fan moderne CPU's, dy't SWAPGS hjit, dy't oerienkomt mei de namme fan' e prosessorynstruksje dy't it probleem feroarsaket. Kwetsberens stiet ta tastean in unprivileged oanfaller te bepalen de ynhâld fan kernel ûnthâld gebieten of rinnende firtuele masines. Probleem befêstige yn Intel processors (x86_64) en foar in part beynfloedet AMD processors dêr't de wichtichste oanfal vector net ferskynt. Earder ymplementearre metoaden om de kwetsberens fan Spectre en Meltdown tsjin te gean, beskermje net tsjin de SWAPGS-oanfal by it brûken fan Intel-processors, mar fixes binne al foarsteld foar Linux, ChromeOS, Android en Windows.

De kwetsberens heart ta de Spectre v1-klasse en is basearre op it idee om gegevens te herstellen fan 'e prosessor-cache dy't oerbleaun binne nei spekulative útfiering fan ynstruksjes. Om prestaasjes te ferbetterjen, brûke branchfoarsizzing-ienheden fan moderne CPU's preemptive útfiering fan guon ynstruksjes dy't it meast wierskynlik wurde útfierd, mar sûnder te wachtsjen op de berekkening fan alle faktoaren dy't har útfiering bepale (bygelyks as branchbetingsten of tagongsparameters net hawwe noch berekkene). As de foarsizzing net befêstige wurdt, smyt de prosessor it resultaat fan 'e spekulative útfiering ôf, mar de gegevens dy't dêrtroch ferwurke binne bliuwe yn 'e prosessor-cache en kinne wurde werombrocht mei metoaden foar it bepalen fan de ynhâld fan 'e cache fia sydkanalen, analysearjen fan de feroaring yn tagong tiid foar cache en uncached gegevens.

De eigenaardichheid fan 'e nije oanfal is it brûken fan in lek dat optreedt tidens de spekulative útfiering fan' e SWAPGS-ynstruksje, dy't brûkt wurdt yn bestjoeringssystemen om de wearde fan it GS-register te ferfangen as kontrôle fan brûkersromte nei de OS-kern giet (de GS) wearde brûkt yn brûkersromte wurdt ferfongen troch de wearde brûkt by operaasjes yn 'e kernel ). Yn 'e Linux-kernel bewarret GS in per_cpu-oanwizer dy't brûkt wurdt om tagong te krijen ta kernelgegevens, en brûkersromte bewarret pointers nei TLS (Thread Local Storage).

Om foar te kommen dat de SWAPGS-ynstruksje twa kear oanroppen wurdt by it werheljen fan de kearn fanút kernelromte of by it útfieren fan koade dy't gjin GS-registerferoaring fereasket, wurde in kontrôle en in betingste tûke útfierd foar de ynstruksje. De spekulative útfieringsmotor giet proaktyf troch om koade út te fieren mei de SWAPGS-ynstruksje sûnder te wachtsjen op it resultaat fan 'e kontrôle, en as de selektearre tûke net befêstige is, smyt it resultaat. Sa kin in situaasje ûntstean as in tûke dy't gjin SWAPGS-útfiering omfettet spekulatyf selektearre wurdt, mar ûnder spekulative útfiering sil de wearde fan it GS-register feroare wurde troch de SWAPGS-ynstruksje en brûkt wurde yn ôfhinklike ûnthâldoperaasjes dy't yn 'e CPU-cache einigje.

Undersikers hawwe twa oanfalssenario's foarsteld wêrfoar eksploitaasjeprototypen binne taret. It earste senario is basearre op 'e situaasje dêr't de SWAPGS-ynstruksje net spekulatyf wurdt útfierd, hoewol it eins brûkt wurdt yn útfiering, en it twadde is it tsjinoerstelde, as de SWAPGS-ynstruksje spekulatyf wurdt útfierd, hoewol it eins net útfierd wurde moat. Foar elk senario binne d'r twa opsjes foar eksploitaasje: de oanfaller kin de wearde bepale op in spesifyk adres yn it kernelgebiet, en de oanfaller kin sykje nei in spesifike wearde op willekeurige adressen yn 'e kernel. It útfieren fan in oanfal duorret lang en de eksploitaasje kin ferskate oeren duorje om it lek te foltôgjen.

D'r is in probleem yn 'e Linux kernel eliminearre troch it feroarjen fan de logika fan it oproppen fan de SWAPGS-ynstruksje (blokkearjen fan spekulative útfiering), fergelykber mei de korreksje fan oare Spectre v1-klasse kwetsberens. De tafoege beskerming wurdt ferwachte dat se minimale ynfloed hawwe op 'e prestaasjes fan typyske workloads. Wachttiid komt foar yn 'e wikselfase tusken brûker en kernelromte, wat kin resultearje yn minne prestaasjes as, bygelyks, d'r swiere systeemoprop is fan 'e applikaasje of faak generearje fan NMI's en ûnderbrekt.

De fix fereasket it ynstallearjen fan in kernel-fernijing op sawol it hostsysteem as gastomjouwings, folge troch in systeem opnij starte. Om beskerming op Linux út te skeakeljen, kin de opsje "nospectre_v1" brûkt wurde, dy't ek maatregels útskeakelje om de SWAPGS-kwetsberens te blokkearjen. De fix is ​​beskikber as patch foar de Linux-kernel, dy't al is opnaam yn 'e releases 4.19.65, 5.2.7, 4.14.137, 4.9.188 en 4.4.188. Updates foar Linux-distribúsjes binne noch net frijjûn (Debian, RHEL, Fedora, Arch Linux, SUSE/openSUSE, ubuntu). Op Windows waard it probleem rêstich fêst yn July update. Google Company taret fix foar kernel 4.19 ferstjoerd mei ChromeOS en Android.

Neffens ûndersikers fan Bitdefender waard Intel yn augustus ferline jier ynformearre oer it probleem. It waard besletten om it probleem programmatysk te reparearjen, wêrfoar ûntwikkelders fan Microsoft, Google en de Linux-kernel belutsen wiene by de koördinearre ûntwikkeling fan in fix. Aldere Intel-processors, pre-Ivy Bridge, binne folle dreger om oan te fallen fanwegen it gebrek oan stipe foar de WRGSBASE-ynstruksje dy't brûkt wurdt yn 'e eksploitaasje. ARM-, POWER-, SPARC-, MIPS- en RISC-V-systemen wurde net beynfloede troch it probleem, om't se de SWAPGS-ynstruksje net stypje.

It probleem hat benammen ynfloed op eigners fan Intel-processors -
Op AMD-systemen koe allinich it twadde oanfalscenario reprodusearre wurde, wat beheind is ta spekulative ferwurking fan 'e basiswearde fan it GS-register, dat kin wurde brûkt om spesifike wearden te sykjen yn willekeurige ûnthâldgebieten. Om blokkearje dizze oanfal opsje is genôch besteande metoaden foar beskerming tsjin Spectre v1.

Boarne: opennet.ru

Add a comment