Група дослідників з Грацького технічного університету (Австрія) та Центру Гельмгольця з інформаційної безпеки (CISPA),
Атака Foreshadow користується тим, що з доступу до пам'яті за віртуальною адресою, що призводить до виключення (terminal page fault), процесор спекулятивно розраховує фізичну адресу і завантажує дані, якщо вони є в L1-кеші. Спекулятивне звернення виконується до завершення перебору таблиці сторінок пам'яті незалежно від стану запису таблиці сторінок пам'яті (PTE), тобто. до перевірки наявності даних у фізичній пам'яті та їх доступності для читання. Після завершення перевірки доступності пам'яті, у разі відсутності прапора Present в PTE операція відкидається, але дані осідають у кеші і їх можна вилучити за допомогою методів визначення вмісту кешу по сторонніх каналах (через аналіз зміни часу доступу до прокешованих та не прокешованих даних).
Дослідники показали, що наявні методи захисту від Foreshadow неефективні та реалізовані з неправильним трактуванням проблеми. Вразливість
Foreshadow може бути експлуатована незалежно від застосування в ядрі механізмів захисту, які раніше вважалися достатніми. У результаті дослідниками було продемонстровано можливість здійснення атаки Foreshadow у системах із відносно старими ядрами, у яких включені всі наявні режими захисту від Foreshadow, і навіть з новими ядрами, у яких відключено лише захист від Spectre-v2 (використовується опція ядра Linux nospectre_v2).
Було виявлено, що
запобігає завантаженню в процесі доступу до пам'яті, а виникає при спекулятивному розіменуванні регістрів простору користувача в ядрі. Подібне неправильне тлумачення причини виникнення вразливості спочатку призвело до припущення, що витік даних у 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