Компанія AMD розкрила інформацію про новий клас мікроархітектурних атак на свої процесори — TSA (Transient Scheduler Attack). Атака дозволяє зловмиснику обійти механізми ізоляції CPU та визначити дані, що обробляються в інших контекстах, наприклад, з простору користувача визначити інформацію, що обробляється на рівні ядра, або з гостьової системи дізнатися дані, що використовуються в іншій гостьовій системі.
Уразливості виявлено в ході розробки інструментарію, створеного дослідниками з Microsoft та Швейцарської вищої технічної школи Цюріха для стрес-тестування мікроархітектурної ізоляції між різними зонами розмежування доступу, такими як ядро, віртуальні машини та процеси.
Метод атаки заснований на залежності часу виконання деяких інструкцій від стану мікроархітекторних структур. Коли процесор очікує швидкого завершення інструкції читання даних із пам'яті (наприклад, вважаючи, що дані є в кеші L1), але не вдається успішно отримати дані, виникає стан помилкового завершення інструкції (false completion). При цьому процесор ще до визначення цього стану може запланувати спекулятивне виконання інших операцій, які залежать від результату інструкції завантаження з пам'яті.
Так як завантаження виявилося не завершено, асоційовані з нею дані визнаються процесором недійсними, а операція завантаження пізніше повторюється ще раз. Залежні операції також повторно виконуються після готовності даних. При цьому скидання конвеєра (pipeline flush) після виконання інструкції, для якої зафіксовано стан «хибного завершення», не провадиться, і некоректні дані можуть бути перенаправлені в залежні операції.
Виконання таких операцій не змінює стан кешу та TLB (Translation Lookaside Buffer), тобто. дані неможливо відновити з допомогою традиційних методів визначення стану кеша. Але ці дані впливають на час виконання інших вказівок. Аналіз часу виконання може використовуватися як джерело витоку інформації з мікроархітектурних структур після спекулятивного виконання інших операцій.
Залежно від джерела отримання залишкових даних виділено дві вразливості:
- CVE-2024-36350 (TSA-SQ - TSA Store Queue) - витік з буфера тимчасового зберігання операцій запису (Store Queue), що дозволяє визначити результат роботи інструкцій запису на згадку.
- CVE-2024-36357 (TSA-L1 – TSA L1 Data Cache) – витік через кеш L1D.
Уразливості проявляються в сімействі процесорів AMD (Fam19h) на базі мікроархітектур Zen 3 і Zen 4. Наприклад, проблема є в серіях CPU AMD Ryzen 5000/6000/7000/8000, AMD EPYC Milan/Milan-X/Genoa/Genoa-X/ MI300A, AMD Ryzen Threadripper PRO 7000 WX, AMD EPYC Embedded 7003/8004/9004/97X4, AMD Ryzen Embedded 5000/7000/V3000.
Необхідні для блокування вразливості зміни включені до складу грудневого оновлення мікрокоду та PI-прошивок (Platform Initialization), переданих OEM-виробникам. Патчі для захисту від уразливості передано для включення до складу ядра Linux (Для відключення захисту, що негативно впливає на продуктивність, передбачена опція командного рядка ядра «tsa = off»). Виправлення також додано гіпервізор Xen. Для блокування вразливості потрібно одночасно оновлення мікрокоду, так і включення режиму захисту на рівні ядра або гіпервізора.
Джерело: opennet.ru
