Представлено новий клас уразливостей у процесорах Intel

Компанія Intel опублікувала відомості про нове класі вразливостей у своїх процесорах - MDS (Microarchitectural Data Sampling). Як і попередні атаки класу Spectre нові проблеми можуть призвести до витоку закритих даних операційної системи, віртуальних машин і чужих процесів. Стверджується, що проблеми спершу були виявлені співробітниками та партнерами Intel під час внутрішнього аудиту, поле чого інформацію про аналогічні проблеми в Intel передали незалежні дослідники. Процесори AMD і ARM проблеми не схильні.

На основі виявлених проблем дослідниками з Грацького технічного університету (Австрія) розроблено кілька практичних атак по стороннім каналам:

  • ZombieLoad (PDF) – дозволяє витягти конфіденційну інформацію з інших процесів, операційної системи, віртуальних машин та захищених анклавів (TEE, Trusted Execution Environment). Наприклад, продемонстровано можливість визначення історії відкриття сторінок у Tor browser, запущеному в іншій віртуальній машині, а також визначення використовуваних у додатках ключів доступу та паролів;


  • ЗАГАДКА (PDF) — дозволяє організувати витік інформації між різними ізольованими областями у процесорах Intel, такими як буфери заповнення, буфери зберігання та порти завантаження. Приклади проведення атаки показані для організації витоків з інших процесів, операційної системи, віртуальних машин та захищених анклавів. Наприклад, показано, як дізнатися вміст хеша пароля root з /etc/shadow при періодичних спробах аутентифікації (атака зайняла 24 години);

    Крім того, показаний приклад проведення атаки з використанням JavaScript і WebAssembly при відкритті шкідливої ​​сторінки в движку SpiderMonkey (у сучасних повноцінних браузерах подібна атака малоймовірна через обмеження точності таймера і заходів для захисту від Spectre);

  • Опади (PDF) - дає можливість читати дані, нещодавно записані операційною системою та визначати розкладку пам'яті ОС для спрощення проведення інших атак;
  • Store-To-Leak Forwarding - експлуатує оптимізації CPU по роботі з буфером зберігання і може застосовуватися для обходу механізму рандомізації адресного простору ядра (KASLR), для моніторингу стану операційної системи або організації витоків у поєднанні з гаджетами з урахуванням методів Spectre.

Виявлені уразливості:

  • CVE-2018-12126 - MSBDS (Microarchitectural Store Buffer Data Sampling), відновлення вмісту буферів зберігання. Використовується в атаці Fallout. Ступінь небезпеки визначено у 6.5 балів (CVSS);
  • CVE-2018-12127 - MLPDS (Microarchitectural Load Port Data Sampling), відновлення вмісту портів завантаження. Використовується в атаці RIDL. CVSS 6.5;
  • CVE-2018-12130 - MFBDS (Microarchitectural Fill Buffer Data Sampling), відновлення вмісту буферів заповнення. Використовується в атаках ZombieLoad та RIDL. CVSS 6.5;
  • CVE-2019-11091 - MDSUM (Microarchitectural Data Sampling Uncacheable Memory), відновлення вмісту пам'яті, що не кешується. Використовується в атаці RIDL. CVSS 3.8.

Суть виявлених проблем у можливості застосування методів аналізу сторонніми каналами до даних у мікроархітектурних структурах, до яких програми безпосередньо не мають доступу. Йдеться про такі низькорівневі структури, як буфери заповнення (Line Fill Buffer), буфери зберігання (Store Buffer) та порти завантаження (Load Port), які є більш дрібними складовими блоками, ніж кеш першого рівня (L1D), кеш завантаження даних (RDCL ) або L1TF (L1 Terminal Fault), і відповідно включають менше інформації та оновлюються інтенсивніше.

Представлено новий клас уразливостей у процесорах Intel

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

Запропоновані методи визначення вмісту мікроархітектурних структур ґрунтуються на тому, що ці структури використовуються при спекулятивній обробці винятків (fault) або операцій load і store.
При спекулятивному виконанні вміст внутрішніх структур перенаправляється для обробки регістри або кеш. Спекулятивні операції не завершуються і результат відкидається, але перенаправлений вміст можна визначити за допомогою методів аналізу кешу сторонніми каналами.

Порти завантаження використовуються процесором для отримання даних із пам'яті або підсистеми вводу/виводу та надання отриманої інформації в регістри CPU. Через особливості реалізації дані від старих операцій завантаження залишаються в портах до їх перезапису новими даними, що дозволяє опосередковано визначити стан даних у порті завантаження за допомогою маніпуляцій з винятками (fault) та інструкціями SSE/AVX/AVX-512, що завантажують понад 64 біт даних. У подібних умовах операції завантаження спекулятивно засвічують застарілі значення даних із внутрішніх структур залежні операції. Подібним чином організується витік через буфер зберігання, що застосовується для прискорення запису в кеш CPU і включає таблицю адрес, значень і прапорів, а також через буфер заповнення, який містить дані, поки відсутні в кеші L1 (cache-miss), на час їх завантаження із кешів інших рівнів.

Представлено новий клас уразливостей у процесорах Intel

проблема торкається моделі процесорів Intel, які випускаються з 2011 року (починаючи з 6 покоління). При цьому апаратно вразливості блокуються починаючи з деяких моделей 8 і 9 поколінь Intel Core і 2 покоління Intel Xeon Scalable (перевірити можна через біт ARCH_CAP_MDS_NO в IA32_ARCH_CAPABILITIES MSR). Вразливості також вже усунені на рівні прошивок, мікрокоду та операційних систем. За оцінкою Intel втрата продуктивності після активації виправлення для більшості користувачів не перевищує 3%. При відключенні технології Hyper-Threading зниження продуктивності може сягати 9% у тесті SPECint_rate_base, до 11% при активних цілих обчисленнях і до 19% під час виконання серверних Java-приложений (при включеному HT зниження продуктивності майже відсутня). Виправлення практично не впливають на продуктивність операцій, пов'язаних із введенням/виводом.

У ядрі Linux захист від MDS додано у сьогоднішніх оновленнях 5.1.2, 5.0.16,
4.19.43, 4.14.119 та 4.9.176. Метод захисту будується на очищенні вмісту мікроархітектурних буферів у момент повернення з ядра в простір користувача або під час передачі керування гостьовою системою, для чого використовується інструкція VERW. Для роботи захисту потрібна наявність підтримки режиму MD_CLEAR, реалізованого у свіжому оновленні мікрокоду. Для повного захисту також рекомендується вимкнути Hyper Threading. Для перевірки схильності до системи вразливості в ядро ​​Linux доданий обробник "/sys/devices/system/cpu/vulnerabilities/mds". Для керування включенням різних режимів блокування вразливості в ядро ​​додано параметр «mds=», який може приймати значення full, full, nosmt (відключення Hyper-Threads), vmwerv і off.

Оновлення пакетів вже випущено для RHEL и Ubuntu, але поки що залишаються недоступними для Debian, Fedora и SUSE.
Виправлення для блокування витоків даних з віртуальних машин також сформовано для гіпервізора Xen. Для захисту систем віртуалізації, що виконують виклик команди L1D_FLUSH перед передачею керування іншій віртуальній машині, і захисту анклавів Intel SGX достатньо оновлення мікрокоду.

Джерело: opennet.ru

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