SWAPGS - o nouă vulnerabilitate în mecanismul de execuție speculativă a CPU

Cercetători de la Bitdefender dezvăluit noua vulnerabilitate (CVE-2019-1125) în mecanismul de execuție a instrucțiunilor speculative al CPU-urilor moderne, care poartă denumirea de SWAPGS, care corespunde denumirii instrucțiunii procesorului care provoacă problema. Vulnerabilitate Acesta permite permite unui atacator neprivilegiat să determine conținutul zonelor de memorie kernel sau care rulează mașini virtuale. Problemă confirmat în procesoare Intel (x86_64) și parțial afectează процессоры AMD, для которых не проявляется основной вектор атаки. Ранее реализованные методы противодействия уязвимостям Spectre и Meltdown не защищают от атаки SWAPGS при использовании процессоров Intel, но для Linux, ChromeOS, Android и Windows уже предложены исправления.

Vulnerabilitatea aparține clasei Spectre v1 și se bazează pe ideea restabilirii datelor din memoria cache a procesorului rămase după executarea speculativă a instrucțiunilor. Pentru a îmbunătăți performanța, unitățile de predicție a ramurilor ale CPU-urilor moderne folosesc execuția preventivă a unor instrucțiuni care sunt cel mai probabil să fie executate, dar fără a aștepta calculul tuturor factorilor care determină execuția lor (de exemplu, când condițiile de ramificație sau parametrii de acces nu au încă calculate). Dacă predicția nu este confirmată, procesorul renunță la rezultatul execuției speculative, dar datele procesate în timpul acesteia rămân în memoria cache a procesorului și pot fi restaurate folosind metode de determinare a conținutului cache-ului prin canale laterale, analizând modificarea accesului. timp pentru datele din cache și necache.

Особенность новой атаки в использовании утечки, возникающей в ходе спекулятивного выполнения инструкции SWAPGS, которая применяется в операционных системах для замены значения регистра GS при переходе управления из пространства пользователя в ядро ОС (используемое в пространстве пользователя значение GS заменяется на значение, используемое при операциях в ядре). В ядре Linux в GS хранится указатель per_cpu, используемый для доступа к данным ядра, а в пространстве пользователя указатели на TLS (Thread Local Storage).

Pentru a evita apelarea instrucțiunii SWAPGS de două ori atunci când accesați din nou nucleul din spațiul nucleului sau când executați cod care nu necesită o modificare a registrului GS, se efectuează o verificare și o ramură condiționată înaintea instrucțiunii. Motorul de execuție speculativă continuă în mod proactiv să execute cod cu instrucțiunea SWAPGS fără a aștepta rezultatul verificării și, dacă ramura selectată nu este confirmată, renunță la rezultat. Astfel, poate apărea o situație când o ramură care nu implică execuția SWAPGS este selectată în mod speculativ, dar în timpul execuției speculative valoarea registrului GS va fi modificată de instrucțiunea SWAPGS și utilizată în operațiunile dependente de memorie care ajung în memoria cache a CPU.

Cercetătorii au propus două scenarii de atac pentru care au fost pregătite prototipuri de exploatare. Primul scenariu se bazează pe situația în care instrucțiunea SWAPGS nu este executată speculativ, deși este folosită efectiv în execuție, iar al doilea este invers, când instrucțiunea SWAPGS este executată speculativ, deși nu ar trebui să fie executată efectiv. Pentru fiecare scenariu, există două opțiuni de exploatare: atacatorul poate determina valoarea la o anumită adresă din zona nucleului, iar atacatorul poate căuta o anumită valoare la adrese aleatoare din nucleu. Efectuarea unui atac durează mult și exploit-ul poate necesita câteva ore pentru a finaliza scurgerea.

Rulează video

În miez Linux problemă eliminat prin schimbarea logicii de apelare a instrucțiunii SWAPGS (blocarea execuției speculative), similar cu corectarea altor vulnerabilități din clasa Spectre v1. Protecția adăugată este de așteptat să aibă un impact minim asupra performanței sarcinilor de lucru tipice. Latența are loc în timpul fazei de comutare între spațiul utilizator și cel al nucleului, ceea ce poate duce la performanțe slabe atunci când, de exemplu, există apeluri puternice de sistem din aplicație sau generarea frecventă de NMI-uri și întreruperi.

Исправление требует установки обновления ядра как в основной системе, так и в гостевых окружениях, с последующей перезагрузкой системы. Для отключения защиты в Linux может быть использована опция «nospectre_v1», которая также отключает меры для блокирования уязвимости SWAPGS. Исправление доступно в виде plasture pentru miez Linux, который уже включён в состав выпусков 4.19.65, 5.2.7, 4.14.137, 4.9.188 и 4.4.188. Обновления для дистрибутивов Linux пока не выпущены (Debian, RHEL, Fedora, Arc Linux, SUSE/openSUSE, Ubuntu). ÎN Windows проблема без лишней огласки была устранена в Actualizare iulie. Compania Google pregătit remediere pentru kernel-ul 4.19 livrat cu ChromeOS și Android.

По заявлению исследователей из компании Bitdefender, Intel был информирован о проблеме ещё в августе прошлого года. Проблему было решено устранить программно, для чего к скоординированной выработке исправления были привлечены разработчики из Microsoft, Google и ядра Linux. Старые процессоры Intel, до Ivy Bridge, атаковать значительно труднее из-за отсутствия поддержки инструкции WRGSBASE, использованной в эксплоите. Системы ARM, POWER, SPARC, MIPS и RISC-V не подвержены проблеме, так как не поддерживают инструкцию SWAPGS.

Problema îi afectează în principal pe proprietarii de procesoare Intel -
Pe sistemele AMD, doar al doilea scenariu de atac a putut fi reprodus, care se limitează la procesarea speculativă a valorii de bază a registrului GS, care poate fi folosită pentru a căuta valori specifice în zonele de memorie aleatoare. Pentru a bloca această opțiune de atac este suficient metodele existente de protecție împotriva Spectre v1.

Sursa: opennet.ru

Cumpărați găzduire de încredere pentru site-uri cu protecție DDoS, servere VPS VDS 🔥 Cumpără găzduire web fiabilă cu protecție DDoS, servere VPS VDS | ProHoster