AMD потвърди потенциалната уязвимост на процесорите AMD Zen 3 към атаката Spectre-STL

AMD публикува доклад, анализиращ сигурността на технологията за оптимизация на PSF (Predictive Store Forwarding), внедрена в процесорите от серията Zen 3. Проучването теоретично потвърди приложимостта на метода за атака Spectre-STL (Spectre-v4), идентифициран през май 2018 г. PSF технология, но на практика все още не са открити кодови шаблони, способни да доведат до атака, и общата опасност се оценява като незначителна.

Нека припомним, че атаката Spectre-v4 (Speculative Store Bypass) се основава на възстановяване на данни, които са се настанили в кеша на процесора след изхвърляне на резултата от спекулативно изпълнение на операции при обработка на редуващи се операции за запис и четене, използвайки индиректно адресиране. Когато операция за четене следва операция за запис (напр. mov [rbx + rcx], 0x0; mov rax, [rdx + rsi]), отместването на адреса за четене може вече да е известно поради извършваните подобни операции (операциите за четене са изпълнява много по-често и четенията могат да се извършват от кеша) и процесорът може спекулативно да извършва четения преди записи, без да чака да се изчисли косвеното отместване на записа.

Тази функция позволява инструкция за четене за достъп до стара стойност на някакъв адрес, докато операцията за съхраняване все още не е завършена. Ако има грешка при прогнозиране, неуспешната спекулативна операция ще бъде отхвърлена, но следите от нейното изпълнение ще останат в кеша на процесора и могат да бъдат извлечени чрез един от методите за определяне на съдържанието на кеша въз основа на анализ на промените в достъпа време до кеширани и некеширани данни.

Добавен към процесорите AMD Zen 3, PSF оптимизира STLF (Store-To-Load-Forwarding), който извършва операции за четене спекулативно, като предвижда връзката между операциите за четене и запис. Когато използва класически STLF, процесорът извършва операция "зареждане" на данните, препратени директно от предишната команда "запаметяване", без да чака резултатът действително да бъде записан в паметта, но се уверява, че адресите, използвани в "зареждането" и командите "store" съвпадат. Оптимизацията на PSF прави проверката на адресите спекулативна и извършва операция "зареждане", преди информацията за адреса да бъде изчислена, ако преди това е била изпълнена двойка съхраняване/зареждане, манипулираща единичен адрес. Ако предвиждането е неуспешно, състоянието се връща назад, но данните остават в кеша.

Атаката срещу PSF е възможна само в рамките на едно ниво на привилегии, покрива само контекста на текущия процес и се блокира от методи за изолиране на адресно пространство или хардуерни механизми за пясъчна среда. В този случай софтуерните методи за тестова среда в процесите могат потенциално да бъдат засегнати от проблема. Атаката представлява заплаха за системи като браузъри, виртуални машини за изпълнение на код и JIT, които изпълняват код на трета страна в рамките на един процес (атаката може да позволи на ненадежден код в пясъчна среда да получи достъп до други данни на процеса).

AMD предостави редица методи за пълно или селективно деактивиране на PSF, но предвид незначителния риск за повечето приложения, препоръча тази оптимизация да не се деактивира по подразбиране. За селективна защита на процесите, които изолират онези, които изпълняват ненадежден код, се предлага да деактивирате PSF чрез задаване на MSR битовете „SSBD“ и „PSFD“, включително за отделни нишки. Подготвени са корекции за ядрото на Linux с внедряването на опциите на командния ред „psfd“ и „nopsfd“, които контролират как PSF се включва и изключва.

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

Добавяне на нов коментар