Новий варіант атаки Foreshadow, що зачіпає процесори Intel, AMD, ARM та IBM

Група дослідників з Грацького технічного університету (Австрія) та Центру Гельмгольця з інформаційної безпеки (CISPA), виявила (PDF) новий вектор застосування атаки по сторонніх каналах Передвіщення (L1TF), що дозволяє витягти дані з пам'яті анклавів Intel SGX, SMM (System Management Mode), областей пам'яті ядра ОС та віртуальних машин у системах віртуалізації. На відміну від запропонованої у 2018 році початкової атаки Передвіщення новий варіант не специфічний для процесорів Intel і стосується CPU інших виробників, таких як ARM, IBM і AMD. Крім того, новий варіант не вимагає високої продуктивності та атака може бути здійснена навіть за допомогою запуску JavaScript та WebAssembly у web-браузері.

Атака Foreshadow користується тим, що з доступу до пам'яті за віртуальною адресою, що призводить до виключення (terminal page fault), процесор спекулятивно розраховує фізичну адресу і завантажує дані, якщо вони є в L1-кеші. Спекулятивне звернення виконується до завершення перебору таблиці сторінок пам'яті незалежно від стану запису таблиці сторінок пам'яті (PTE), тобто. до перевірки наявності даних у фізичній пам'яті та їх доступності для читання. Після завершення перевірки доступності пам'яті, у разі відсутності прапора Present в PTE операція відкидається, але дані осідають у кеші і їх можна вилучити за допомогою методів визначення вмісту кешу по сторонніх каналах (через аналіз зміни часу доступу до прокешованих та не прокешованих даних).

Дослідники показали, що наявні методи захисту від Foreshadow неефективні та реалізовані з неправильним трактуванням проблеми. Вразливість
Foreshadow може бути експлуатована незалежно від застосування в ядрі механізмів захисту, які раніше вважалися достатніми. У результаті дослідниками було продемонстровано можливість здійснення атаки Foreshadow у системах із відносно старими ядрами, у яких включені всі наявні режими захисту від Foreshadow, і навіть з новими ядрами, у яких відключено лише захист від Spectre-v2 (використовується опція ядра Linux nospectre_v2).

Було виявлено, що ефект запобіжного завантаження не пов'язаний із програмними інструкціями prefetch або апаратним ефектом
запобігає завантаженню в процесі доступу до пам'яті, а виникає при спекулятивному розіменуванні регістрів простору користувача в ядрі. Подібне неправильне тлумачення причини виникнення вразливості спочатку призвело до припущення, що витік даних у Foreshadow може статися тільки через кеш L1, в той час як наявність в ядрі певних уривків коду (prefetch-гаджетів) може сприяти витоку даних поза L1-кешем, кеш L3.

Виявлена ​​особливість також відкриває можливості щодо створення нових атак, націлених на процеси трансляції віртуальних адрес у фізичні в ізольованих оточеннях та визначення адрес та даних, збережених у регістрах CPU. Як демонстрації дослідники показали можливість використання виявленого ефекту для отримання даних з одного процесу в інший з продуктивністю близько 10 біт в секунду на системі з CPU Intel Core i7-6500U CPU. Також показано можливість витоку вмісту регістрів з анклаву Intel SGX (на визначення 32-розрядного значення, записаного в 64-розрядний регістр пішло 15 хвилин). Деякі види атак виявилося можливим реалізувати на JavaScript і WebAssembly, наприклад, вдалося визначити фізичну адресу JavaScript-змінної та заповнити 64-розрядні регістри значенням, контрольованим атакуючим.

Для блокування атаки Foreshadow через кеш L3 ефективний метод захисту Spectre-BTB (Branch Target Buffer), реалізований у наборі retpoline патчів. Таким чином, дослідники вважають за необхідне залишення retpoline включеним навіть на системах з новими CPU, в яких вже є захист від відомих уразливостей у механізмі спекулятивного виконання інструкцій CPU. При цьому представники Intel заявили, що не планують додавати до процесорів додаткових заходів захисту від Foreshadow і вважають достатнім включення захисту від атак Spectre V2 та L1TF (Foreshadow).

Джерело: opennet.ru

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