Залежність часу виконання інструкцій від даних на CPU ARM та Intel

Ерік Біггерс (Eric Biggers), один із розробників шифру Adiantum та мейнтейнер підсистеми ядра Linux fscrypt, запропонував набір патчів для блокування проблем з безпекою, що виникають через особливості процесорів Intel, що не гарантує постійний час виконання інструкцій для різних даних, що обробляються. У процесорах Intel проблема проявляється починаючи із сімейства Ice Lake. Аналогічна проблема спостерігається й у процесорах ARM.

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

Потенційно залежність часу виконання від даних також може використовуватися для організації атак визначення даних ядра з простору користувача. За заявою Еріка Біггерса, постійний час виконання за умовчанням не забезпечується навіть для інструкцій, що виконують операції додавання та XOR, а також для спеціалізованих інструкцій AES-NI (інформація не підтверджена тестами, за іншими даними при множенні векторів та підрахунку бітів виникає затримка на один цикл ).

Для відключення цієї поведінки компанії Intel і ARM запропонували нові прапори: PSTATE-біт DIT (Data Independent Timing) для CPU ARM і MSR-біт DOITM (Data Operand Independent Timing Mode) для CPU Intel, що повертають стару поведінку з постійним часом виконання. Компанії Intel та ARM рекомендують включати захист у міру необхідності для особливо важливого коду, але насправді важливі обчислення можуть зустрічатися в будь-яких частинах ядра та простору користувача, тому розглядається можливість постійної активації режимів DOITM та DIT для всього ядра.

Для процесорів ARM у гілку ядра Linux 6.2 вже прийнято патчі, що змінюють поведінку для ядра, але дані патчі розглядаються як недостатні, тому що вони охоплюють тільки код ядра і не змінюють поведінку для простору користувача. Для процесорів Intel увімкнення захисту поки що знаходиться лише на стадії рецензування. Вимірювання впливу патча на продуктивність поки що не проводилося, але за даними з документації Intel включення режиму DOITM знижує продуктивність (наприклад, через відключення деяких оптимізацій, таких як специфічне для певних даних попереджувальне завантаження) та у майбутніх моделях процесорів зниження продуктивності може посилитися.

Джерело: opennet.ru

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