Виявлено новий варіант атаки по стороннім каналам Zombieload на процесори Intel
Виявлено новий варіант атаки сторонніми каналами Zombieload на процесори Intel
Дослідники з Грацького технічного університету (Австрія) розкрили відомості про новий метод атаки по сторонніх каналах ZombieLoad 2.0 (CVE-2019-11135), що дозволяє витягти конфіденційну інформацію з інших процесів, операційних систем, операційної системи, операційної системи Execution Environment). Проблема зачіпає лише процесори Intel. Компоненти для блокування проблеми пропоновані во вчорашньому оновленні мікрокоду.
Проблема відноситься до класу MDS (Microarchitectural Data Sampling) і є модернізованим варіантом оприлюдненої в травні атаки ZombieLoad. ZombieLoad 2.0, як і інші атаки класу MDS, ґрунтуються на застосуванні методів аналізу по стороннім каналам до даних у мікроархітектурних структурах (наприклад, у буферах заповнення (Line Fill Buffer) та зберігання (Store Buffer), в яких тимчасово зберігаються дані, що використовуються в процесі виконання операцій Load та Store).
Новий варіант атаки Zombieload основується на витоку, що виникає при роботі механізму асинхронного переривання операцій (TAA, TSX Asynchronous Abort), реалізованого в розширенні TSX (Transactional Synchronization Extensions), що надає засоби для роботи з транзакційною пам'яттю, рахунок динамічного виключення зайвих операцій синхронізації (підтримуються атомарні транзакції, які можуть бути прийняті, або перервані). У разі переривання операції, виконані з транзакційним регіоном пам'яті, відкочуються.
Перерив транзакції виконується асинхронно, і в цей час інші потоки можуть звертатися до кешу, який також використовується в транзакційному регіоні пам'яті, що відкидається. У момент від початку до фактичного завершення асинхронного переривання транзакції не виключено виникнення ситуацій, коли процесор у ході спекулятивного виконання операції може прочитати дані з внутрішніх мікроархітектурних буферів і передати їх у операцію, що виконується спекулятивно. Потім конфлікт буде виявлено, а спекулятивну операцію відкинуто, але дані залишаться в кеші і можуть бути вилучені з використанням методів відновлення кешу сторонніми каналами.
Атака зводиться до відкриття TSX транзакцій та створення умов для їх асинхронного переривання, під час якого виникають умови для витоку вмісту внутрішніх буферів, спекулятивно заповнених даними з виконуваних на тому самому ядрі CPU операцій читання пам'яті. Витік обмежений поточним фізичним ядром CPU (на якому виконується код атакуючого), але так як мікроархітектурні буфери спільно використовуються різними потоками в режимі Hyper-Threading, можливе виникнення витоку операцій з пам'яттю, які виконуються в інших потоках CPU.
Атакі схильні деякі моделі восьмого, дев'ятого та десятого поколінь процесорів Intel Core, а також Intel Pentium Gold, Intel Celeron 5000, Intel Xeon E, Intel Xeon W та друге покоління Intel Xeon Scalable. У тому числі атаці схильні і нові процесори Intel на базі представленої в квітні мікроархітектури Cascade Lake, що спочатку не схильна до атак RIDL і Fallout. Крім Zombieload 2.0 дослідники також виявили можливість обходу раніше запропонованих методів захисту від MDS-атак, заснованих на використанні інструкції VERW для очищення вмісту мікроархітектурних буферів у момент повернення з ядра в простір користувача або передачі управління гостьовій системі.
У звіті Intel стверджується, що в системах з різнорідним навантаженням можливість проведення атаки утруднена, оскільки витік з мікроархітектурних структур охоплює всю активність у системі і атакуючий не може впливати на джерело даних, тобто. може лише накопичувати відомості, що спливають в результаті витоку, і намагатися виявити серед цих даних корисну інформацію, без можливості цілеспрямовано перехопити дані, пов'язані з конкретними адресами пам'яті. Тим не менш, дослідниками опубліковано прототип експлоїту, що працює в Linux і Windows, а також продемонстрована можливість застосування атаки для визначення хеша пароля користувача root. Можливе проведення атаки з гостьової системи для накопичення даних, які фігурують в операціях інших гостьових систем, хост-оточення, гіпервізора та анклавів Intel SGX.
Виправлення для блокування вразливості включені в кодову базу ядра Linux і увійшли до складу випусків 5.3.11, 4.19.84, 4.14.154, 4.9.201 і 4.4.201. Оновлення з ядром і мікрокодом також вже випущені для основних дистрибутивів (Debian, SUSE/openSUSE, Ubuntu, RHEL, Fedora, FreeBSD). Проблема була виявлена у квітні і виправлення було скоординовано Intel із розробниками операційних систем.
Найпростішим методом блокування Zombieload 2.0 є відключення підтримки TSX в CPU. Запропоноване для ядра Linux виправлення включає декілька варіантів захисту. Перший варіант пропонує параметр "tsx=on/off/auto", що дозволяє керувати включенням розширення TSX у CPU (значення auto відключає TSX тільки для вразливих CPU). Другий варіант захисту включається параметром "tsx_async_abort=off/full/full,nosmt" та заснований на очищенні мікроархітектурних буферів, під час перемикання контексту (прапор nosmt додатково відключає SMT/Hyper-Threads). Для перевірки схильності системи вразливості до sysfs передбачено параметр "/sys/devices/system/cpu/vulnerabilities/tsx_async_abort".
Крім того, в оновлення мікрокоду усунена ще одна вразливість (CVE-2018-12207) у процесорах Intel, яка також блокована у свіжому оновленні ядра Linux. Вразливість дозволяє непривілейованому атакуючому ініціювати відмову в обслуговуванні, що призводить до зависання системи в стані "Machine Check Error". Атака в тому числі може бути здійснена з гостьової системи.