SWAPGS нову спекулятивну вразливість виконання

SWAPGS-експлойт-2

L Дослідники Bitdefender виявили нову вразливість в механізмі спекулятивного виконання інструкцій у сучасних процесорах, хто отримав ім'я SWAPGS, Відповідне імені інструкції процесора, що спричиняє проблему.

Вразливість дозволяє непривілейованому зловмиснику визначати вміст областей пам'яті ядра або на віртуальних машинах. Проблема підтверджена на процесорах Intel (x86_64) і частково стосується процесорів AMD, для яких основний вектор атаки не відображається.

Раніше впроваджені методи захисту від уразливості Spectre та Meltdown не захищають від атак SWAPGS з використанням процесорів Intel, але вже запропоновані рішення для Linux, ChromeOS, Android та Windows.

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

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

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

Про SWAPGS

Особливістю нової атаки є використання витоку, який виникає під час спекулятивного виконання інструкції SWAPGS, який використовується в операційних системах для заміни значення регістру GS при передачі керування з простору користувача в ядро ​​операційної системи (значення GS, що використовується в просторі користувача, замінюється значенням, яке використовується в операціях ядра).

Ядро Linux у GS зберігає покажчик per_cpu, який використовується для доступу до даних ядра, та вказує на TLS (Thread Local Storage) у просторі користувача.

Для виключення подвійного виклику інструкції SWAPGS після повторного доступу до ядра з простору ядра або при виконанні коду, який не вимагає заміни регістру GS, перед інструкцією виконується перевірка та умовний перехід.

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

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

Дослідники запропонували два сценарії нападу для яких були підготовлені експериментальні зразки.

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

Рішення вимагає встановлення оновлення ядра як в основній системі, так і в гостьовому середовищі з подальшим перезавантаженням системи. Щоб вимкнути захист у Linux, можна скористатися опцією "nospectre_v1", яка також відключає заходи щодо блокування вразливості SWAPGS.

Рішення доступне як патч для ядра Linux, яка вже включена у версії 4.19.65, 5.2.7, 4.14.137, 4.9.188 та 4.4.188, тоді як для різних дистрибутивів Linux відповідні виправлення надходитимуть протягом цього та наступного тижня.


Будьте першим, щоб коментувати

Залиште свій коментар

Ваша електронна адреса не буде опублікований. Обов'язкові для заповнення поля позначені *

*

*

  1. Відповідальний за дані: Мігель Анхель Гатон
  2. Призначення даних: Контроль спаму, управління коментарями.
  3. Легітимація: Ваша згода
  4. Передача даних: Дані не передаватимуться третім особам, за винятком юридичних зобов’язань.
  5. Зберігання даних: База даних, розміщена в мережі Occentus Networks (ЄС)
  6. Права: Ви можете будь-коли обмежити, відновити та видалити свою інформацію.