SWAPGS — нова уязвимост в механизма за спекулативно изпълнение на процесора.

Изследователи от компанията Bitdefender оцениха нова уязвимост (CVE-2019-1125) в механизма на спекулативното изпълнение на инструкции на съвременните CPU, наречена SWAPGS, по името на процесорната инструкция, която предизвиква проблема. Уязвимостта позволява позволява на непривилегирован атакуващ да определи съдържанието на области от паметта на ядрото или на стартирани виртуални машини. Проблемът е потвърден в процесорите на Intel (x86_64) и частично засяга в процесорите на AMD, при които не се проявява основният вектор на атака. Предишно реализираните методи за противодействие на уязвимостите Spectre и Meltdown не защитават от атаката SWAPGS при използване на процесорите на Intel, но вече са предложени поправки за Linux, ChromeOS, Android и Windows.

Уязвимостта попада в класа Spectre v1 и се основава на идеята за възстановяване на данни от кеша на процесора, останали след спекулативното изпълнение на инструкции. Блоковете за предсказание на преминавания на съвременните CPU, за да повишат производителността, прилагат упреждаващо изпълнение на някои инструкции, които вероятно ще бъдат изпълнени, но не чакат изчислението на всички фактори, определящи тяхното изпълнение (например, когато условията за преминаване или параметрите за достъп все още не са изчислени). Ако прогнозата не се потвърди, процесорът отхвърля резултата от спекулативното изпълнение, но данните, обработени по време на него, остават в кеша на процесора и могат да бъдат възстановени с помощта на методи за определяне на съдържанието на кеша чрез странични канали, анализиращи промените във времето за достъп до кешираните и не кешираните данни.

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

За да се избегне двойното извикване на инструкцията SWAPGS при повторно обръщение към ядрото от пространството на ядрото или когато се изпълнява код, който не изисква подмяна на регистра GS, преди инструкцията се извършва проверка и условен преход. Механизмът за спекулативно изпълнение предварително преминава към изпълнение на кода с инструкцията SWAPGS, без да чака резултата от проверката, и ако избраната клонка не бъде потвърдена, отхвърля резултата. По този начин може да възникне ситуация, в която спекулативно е избрана клонка, която не предвижда изпълнение на SWAPGS, но в процеса на спекулативното изпълнение стойността на регистра GS ще бъде променена от инструкцията SWAPGS и използвана в зависимости с паметта, които остават в кеша на CPU.

Изследователите предложиха два сценария на атака, за които са подготвени прототипи на експлоити. Първият сценарий се основава на ситуация, при която инструкцията SWAPGS не се изпълнява спекулативно, въпреки че се използва при фактическото изпълнение, а вторият — обратно, когато инструкцията SWAPGS се изпълнява спекулативно, въпреки че наистина не трябва. За всеки сценарий са предвидени два варианта на експлоатация: атакуващият може да определи стойност на определен адрес в областта на ядрото и атакуващият може да извърши търсене на определена стойност на случайни адреси в ядрото. Провеждането на атаката отнема много време и за организиране на изтичането може да се изисква изпълнение на експлоита в продължение на няколко часа.

Пуснете видеото

В ядрото на Linux проблемът е отстранена чрез промяна на логиката на извикване на инструкцията SWAPGS (блокиране на спекулативното изпълнение), по аналогия с поправката на други уязвимости от клас Spectre v1. Предполага се, че добавената защита минимално ще повлияе на производителността на типичните работни натоварвания. Забавянето възниква на етапа на превключване между пространството на потребителя и ядрото, което може да доведе до намаляване на производителността, например при интензивно изпълнение на системни повици от приложение или честа генерация на NMI и прекъсвания.

Корекцията изисква инсталиране на актуализация на ядрото както в основната система, така и в гостуващите среди, последвано от рестартиране на системата. За деактивиране на защитата в Linux може да се използва опцията «nospectre_v1», която също деактивира мерките за блокиране на уязвимостта SWAPGS. Корекцията е налична под формата на пач ядро на Linux, което вече е включено в версиите 4.19.65, 5.2.7, 4.14.137, 4.9.188 и 4.4.188. Актуализации за дистрибуции на Linux все още не са издадени (Debian, RHEL, Fedora, Arch Linux, SUSE/openSUSE, Ubuntu). В Windows проблемът бе решен без излишен шум в юлското обновление. Компания Google подготви корекция за ядро 4.19, доставяно в ChromeOS и Android.

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

Проблемът заплашва главно притежателите на Intel процесори —
на системи AMD успяха да възпроизведат само втория сценарий на атака, който е ограничен до спекулативната обработка на основната стойност на регистра GS, което може да се използва за търсене на определени стойности в произволни области на паметта. За блокиране на този вариант на атака е достатъчно съществуват методи за защита от уязвимости Spectre v1.

Източник: opennet.ru

Купете надежден хостинг за сайтове с защита от DDoS, VPS VDS сървъри 🔥 Купете надежден хостинг за сайтове с защита от DDoS, VPS VDS сървъри | ProHoster