SWAPGS is 'n nuwe kwesbaarheid in die CPU spekulatiewe uitvoering meganisme

Navorsers van Bitdefender geopenbaar nuwe kwesbaarheid (CVE-2019-1125) in die spekulatiewe instruksie-uitvoeringsmeganisme van moderne SVE's, wat SWAPGS genoem word, wat ooreenstem met die naam van die verwerker-instruksie wat die probleem veroorsaak. Kwesbaarheid dit laat laat 'n onbevoorregte aanvaller toe om die inhoud van kerngeheue-areas of lopende virtuele masjiene te bepaal. Probleem bevestig in Intel-verwerkers (x86_64) en gedeeltelik affekteer AMD-verwerkers waarvoor die hoofaanvalvektor nie verskyn nie. Voorheen geïmplementeerde metodes om die Spectre- en Meltdown-kwesbaarhede teen te werk, beskerm nie teen die SWAPGS-aanval wanneer Intel-verwerkers gebruik word nie, maar regstellings is reeds vir Linux, ChromeOS, Android en Windows voorgestel.

Die kwesbaarheid behoort aan die Spectre v1-klas en is gebaseer op die idee om data van die verwerkerkas wat oorbly na spekulatiewe uitvoering van instruksies te herstel. Om werkverrigting te verbeter, gebruik takvoorspellingseenhede van moderne SVE's voorkomende uitvoering van sommige instruksies wat waarskynlik uitgevoer sal word, maar sonder om te wag vir die berekening van al die faktore wat hul uitvoering bepaal (byvoorbeeld wanneer taktoestande of toegangsparameters nie nog bereken). As die voorspelling nie bevestig word nie, gooi die verwerker die resultaat van die spekulatiewe uitvoering weg, maar die data wat tydens dit verwerk word, bly in die verwerkerkas en kan herstel word deur metodes te gebruik om die inhoud van die kas deur sykanale te bepaal, en die verandering in toegang te ontleed tyd om gekas en ongekas data.

Die eienaardigheid van die nuwe aanval is die gebruik van 'n lek wat plaasvind tydens die spekulatiewe uitvoering van die SWAPGS-instruksie, wat in bedryfstelsels gebruik word om die waarde van die GS-register te vervang wanneer beheer van gebruikersruimte na die OS-kern (die GS) oorgaan. waarde wat in gebruikersruimte gebruik word, word vervang met die waarde wat tydens bewerkings in die kern gebruik word). In die Linux-kern stoor GS 'n per_cpu-wyser wat gebruik word om toegang tot kerndata te verkry, en gebruikersspasie stoor wysers na TLS (Thread Local Storage).

Om te verhoed dat die SWAPGS-instruksie twee keer geroep word wanneer die kern weer vanaf kernspasie verkry word of wanneer kode uitgevoer word wat nie 'n GS-registerverandering vereis nie, word 'n kontrole en 'n voorwaardelike tak voor die instruksie uitgevoer. Die spekulatiewe uitvoering-enjin gaan proaktief voort om kode uit te voer met die SWAPGS-instruksie sonder om te wag vir die resultaat van die tjek, en as die geselekteerde tak nie bevestig word nie, gooi die resultaat weg. Dus kan 'n situasie ontstaan ​​wanneer 'n tak wat nie SWAPGS uitvoering behels nie spekulatief gekies word, maar tydens spekulatiewe uitvoering sal die waarde van die GS register verander word deur die SWAPGS instruksie en gebruik word in afhanklike geheue bewerkings wat in die SVE kas beland.

Navorsers het twee aanvalscenario's voorgestel waarvoor ontginningsprototipes voorberei is. Die eerste scenario is gebaseer op die situasie waar die SWAPGS-instruksie nie spekulatief uitgevoer word nie, alhoewel dit eintlik in uitvoering gebruik word, en die tweede is die teenoorgestelde, wanneer die SWAPGS-instruksie spekulatief uitgevoer word, hoewel dit nie eintlik uitgevoer moet word nie. Vir elke scenario is daar twee opsies vir uitbuiting: die aanvaller kan die waarde by 'n spesifieke adres in die kerngebied bepaal, en die aanvaller kan na 'n spesifieke waarde by ewekansige adresse in die kern soek. Om 'n aanval uit te voer neem 'n lang tyd en die ontginning kan 'n paar uur neem om die lekkasie te voltooi.

Daar is 'n probleem in die Linux-kern uitgeskakel deur die logika van die oproep van die SWAPGS-instruksie te verander (spekulatiewe uitvoering blokkeer), soortgelyk aan die regstelling van ander Spectre v1-klas kwesbaarhede. Die bykomende beskerming sal na verwagting minimale impak hê op die werkverrigting van tipiese werkladings. Latency vind plaas tydens die skakelfase tussen gebruiker- en kernspasie, wat kan lei tot swak werkverrigting wanneer daar byvoorbeeld swaar stelseloproepe vanaf die toepassing is of gereelde generering van NMI's en onderbrekings is.

Die oplossing vereis die installering van 'n kernopdatering op beide die gasheerstelsel en gasomgewings, gevolg deur 'n stelselherlaai. Om beskerming op Linux te deaktiveer, kan die "nospectre_v1" opsie gebruik word, wat ook maatreëls deaktiveer om die SWAPGS kwesbaarheid te blokkeer. Die oplossing is beskikbaar as pleister vir die Linux-kern, wat reeds by die vrystellings ingesluit is 4.19.65, 5.2.7, 4.14.137, 4.9.188 en 4.4.188. Opdaterings vir Linux-verspreidings is nog nie vrygestel nie (Debian, RHEL, Fedora, Arch Linux, SUSE/openSUSE, Ubuntu). Op Windows is die probleem stilweg reggestel Julie-opdatering. Google Maatskappy voorberei regstelling vir kern 4.19 gestuur met ChromeOS en Android.

Volgens navorsers van Bitdefender is Intel in Augustus verlede jaar van die probleem ingelig. Daar is besluit om die probleem programmaties reg te stel, waarvoor ontwikkelaars van Microsoft, Google en die Linux-kern betrokke was by die gekoördineerde ontwikkeling van 'n oplossing. Ouer Intel-verwerkers, pre-Ivy Bridge, is baie moeiliker om aan te val as gevolg van die gebrek aan ondersteuning vir die WRGSBASE-instruksie wat in die ontginning gebruik word. ARM-, POWER-, SPARC-, MIPS- en RISC-V-stelsels word nie deur die probleem geraak nie omdat hulle nie die SWAPGS-instruksie ondersteun nie.

Die probleem raak hoofsaaklik eienaars van Intel-verwerkers -
Op AMD-stelsels kon slegs die tweede aanvalscenario gereproduseer word, wat beperk is tot spekulatiewe verwerking van die basiswaarde van die GS-register, wat gebruik kan word om spesifieke waardes in ewekansige geheue-areas te soek. Om hierdie aanval opsie te blokkeer genoeg bestaande metodes van beskerming teen Spectre v1.

Bron: opennet.ru

Voeg 'n opmerking