Компанія AMD підтвердила потенційну схильність до CPU AMD Zen 3 атаці Spectre-STL

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

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

Ця особливість дозволяє інструкції читання отримати доступ до старого значення за деякою адресою під час доки операція збереження ще не завершена. При помилці прогнозування, невдала спекулятивна операція буде відкинута, але сліди її виконання залишаться процесорному кеші і можуть бути вилучені одним із способів визначення вмісту кешу на основі аналізу зміни часу доступу до прокешованих та не прокешованих даних.

Додана в процесори AMD Zen 3 технологія PSF оптимізує метод STLF (Store-To-Load-Forwarding), який спекулятивно виконує операції читання на основі передбачення взаємозв'язку між операціями читання та запису. При використанні класичного STLF процесор виконує операцію "load" з даними, безпосередньо перенаправленими з попередньої команди "store", не чекаючи фактичного запису на згадку про результат, але переконавшись, що використані в командах "load" і "store" адреси збігаються. Оптимізація PSF робить перевірку адрес спекулятивною та виконує операцію «load» до завершення обчислення інформації про адреси, якщо до цього була виконана пара store/load, що маніпулює однією адресою. У разі помилки прогнозу, стан відкочується назад, але дані залишаються в кеші.

Атака на PSF здійсненна лише в рамках привілеїв одного рівня, охоплює лише поточний контекст процесу та блокується методами ізоляції адресного простору або апаратними sandbox-механізмами. При цьому програмні методи sandbox-ізоляції в процесах потенційно можуть бути порушені проблемою. Атака представляє небезпеку для систем, таких як браузери, віртуальні машини для виконання коду та JIT, які виконують сторонній код всередині одного процесу (в результаті атаки незаслужуючий довіри ізольований код може отримати доступ до інших даних процесу).

Компанія AMD надала низку методів для повного або вибіркового відключення PSF, але з урахуванням незначного ризику для більшості програм рекомендувала не відключати цю оптимізацію за умовчанням. Для вибіркового захисту процесів, ізольованої виконують код, що не заслуговує на довіру, запропоновано відключати PSF через установку MSR-бітів «SSBD» і «PSFD», у тому числі для окремих потоків. Для ядра Linux підготовлені патчі з реалізацією опцій командного рядка "psfd" і "nopsfd", що управляють включенням та вимкненням PSF.

Джерело: opennet.ru

Додати коментар або відгук