У процесорах AMD виявлено ще одну вразливість, яка допускає атаки класу Meltdown

Група дослідників з Грацького технічного університету (Австрія) та Центру Гельмгольця з інформаційної безпеки (CISPA) розкрила відомості про вразливість (CVE-2021-26318) у всіх процесорах AMD, що уможливлює проведення атак сторонніми каналами класу Meltdown (спочатку передбачалося, не схильні до вразливості Meltdown). З практичної сторони атака може застосовуватися для організації прихованих каналів передачі даних, моніторингу за активністю в ядрі або отримання інформації про адреси в пам'яті ядра для обходу захисту на основі рандомізації адрес (KASLR) в процесі вразливості в ядрі.

Компанія AMD вважає недоцільним вжиття спеціальних заходів для блокування проблеми, оскільки вразливість, як і виявлена ​​в серпні схожа атака, малозастосовна в реальних умовах, обмежена поточними межами адресного простору процесу та потребує наявності в ядрі певних готових послідовностей інструкцій (гаджетів). Для демонстрації атаки дослідники завантажували власний модуль ядра зі штучно доданим гаджетом. У реальних умовах для підстановки необхідних послідовностей атакуючі можуть використовувати, наприклад, регулярно спливають уразливості в підсистемі eBPF.

Для захисту від нового виду атаки компанія AMD рекомендувала застосовувати методи безпечного кодування, що допомагають блокувати атаки Meltdown, такі як використання інструкцій LFENCE. Дослідники, що виявили проблему, рекомендують включити суворішу ізоляцію таблиць сторінок пам'яті (KPTI), яка до цього застосовувалася тільки для процесорів Intel.

У ході експерименту дослідникам вдалося досягти витоку інформації з ядра в процес у просторі користувача зі швидкістю 52 байти в секунду, за наявності в ядрі гаджета, що виконує операцію "if (offset <data_len) tmp = LUT [data [offset] * 4096];" . Запропоновано кілька методів вилучення по стороннім каналам відомостей, що осідають у кеші під час спекулятивного виконання. Перший метод заснований на аналізі відхилень часу виконання процесорною інструкцією PREFETCH (Prefetch + Time), а другий на зміні зміни енергоспоживання при виконанні PREFETCH (Prefetch + Power).

Нагадаємо, що класична вразливість Meltdown ґрунтується на тому, що в ході спекулятивного виконання інструкцій процесор може виконати звернення до закритої області даних, після чого відкинути результат, оскільки виставлені привілеї забороняють таке поводження з користувача. У програмі блок, що спекулятивно виконується, відокремлюється від основного коду умовним переходом, який в реальних умовах завжди спрацьовує, але через те, що в умовному операторі використовується обчислюване значення, яке процесор не знає під час попереджувального виконання коду, здійснюється спекулятивне виконання всіх варіантів розгалуження.

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

Джерело: opennet.ru

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