LVI - новий клас атак на механізм спекулятивного виконання в CPU

Оприлюднено відомості про новий клас атак LVI (Load Value Injection, CVE-2020-0551) на механізм спекулятивного виконання в CPU Intel, які можуть використовуватися для організації витоку ключів та секретних даних з анклавів Intel SGX та інших процесів.

Новий клас атак заснований на маніпуляціях із тими ж мікроархітектурними структурами, що й у атаках MDS (Microarchitectural Data Sampling), Spectre та Meltdown. Нові атаки не блокуються існуючими методами захисту від Meltdown, Spectre, MDS та інших подібних атак. Для забезпечення ефективного захисту від LVI потрібно внести апаратні зміни в CPU. При організації захисту програмним шляхом, через додавання компілятором інструкції LFENCE після кожної операції завантаження з пам'яті та заміну інструкції RET на POP, LFENCE та JMP, фіксуються надто великі накладні витрати – за оцінкою дослідників повний програмний захист призведе до зниження продуктивності у 2-19 разів.

Частково, складність блокування проблеми компенсується тим, що в даний час атака носить більше теоретичний, ніж практичний характер (атака теоретично можлива, але дуже важка в реалізації та відтворюється лише в синтетичних тестах).
Компанія Intel привласнила проблемі помірний рівень небезпеки (5.6 з 10) та випустила оновлення прошивки та SDK для оточення SGX, у яких спробувала блокувати проведення атаки обхідним шляхом. Запропоновані методи атаки поки що застосовуються тільки до процесорів Intel, але не виключається можливість адаптації LVI і для інших процесорів, до яких можна застосувати атаки класу Meltdown.

Проблема була виявлена ​​у квітні минулого року дослідником Джо Ван Балком (Jo Van Bulck) з Левенського університету, після чого за участю 9 дослідників з інших університетів було розроблено п'ять базових методів здійснення атак, кожен з яких допускає існування більш специфічних. варіантів. Незалежно у лютому цього року дослідники з компанії Bitdefender також викрили один із варіантів атаки LVI і повідомили про нього в Intel. Варіанти атак відрізняються використанням різних мікроархітектурних структур, таких як буфер зберігання (SB, Store Buffer), буфер заповнення (LFB, Line Fill Buffer), буфер перемикання контексту FPU та кеш першого рівня (L1D), раніше застосовуваних у таких атаках як ZombieLoad, ЗАГАДКА, Опади, LazyFP, Передвіщення и Розплавлення.

LVI – новий клас атак на механізм спекулятивного виконання в CPU

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

LVI – новий клас атак на механізм спекулятивного виконання в CPU

Для експлуатації проблеми у коді процесу-жертви повинні зустрічатися спеціальні послідовності коду (гаджети), в яких завантажується контрольоване атакуючим значення, а завантаження цього значення призводить до виникнення винятків (fault, abort або assist), що відкидають результат та повторно виконують інструкцію. При обробці виключення виникає спекулятивне вікно, під час якого відбувається витік даних, що обробляються в гаджеті. Зокрема, процесор починає виконувати в спекулятивному режимі шматок коду (гаджет), потім визначає, що передбачення не виправдалося і відкочує операції у вихідний стан, але оброблені в процесі спекулятивного виконання дані осідають в кеші L1D і мікроархітектурних буферах і доступні для вилучення з них використанням відомих методів визначення залишкових даних сторонніми каналами.

Виняток "assist", на відміну від "fault", обробляється всередині процесора без виклику програмних обробників. Assist може виникнути, наприклад, коли потрібно оновити біт A (Accessed) або D (Dirty) таблиці сторінок пам'яті. Головна складність проведення атаки інших процесів у тому, як ініціювати виникнення assist, маніпулюючи процесом жертви. Нині немає надійних способів зробити це, але у майбутньому виключається їх перебування. Можливість здійснення атаки поки що підтверджена лише для анклавів Intel SGX, інші сценарії є теоретичними або відтворюваними в синтетичних умовах (потрібне додавання до коду певних гаджетів)

LVI – новий клас атак на механізм спекулятивного виконання в CPU

LVI – новий клас атак на механізм спекулятивного виконання в CPU

Можливі вектори атак:

  • Витік даних із структур ядра в процес на рівні користувача. Захист від атак класу Spectre 1, що є в ядрі Linux, а також механізм захисту SMAP (Supervisor Mode Access Prevention) істотно зменшують ймовірність атаки LVI. Внесення додаткового захисту в ядро ​​може знадобитися при виявлення більш простих методів проведення атаки LVI.
  • Витік даних між різними процесами. Для атаки потрібна наявність певних фрагментів коду у додатку та визначення методу формування виключення у цільовому процесі.
  • Витік даних з хост-оточення в гостьову систему. Атака віднесена до категорії надто складних, що вимагають виконання різних кроків, що важко реалізувати, і передбачень активності в системі.
  • Витік даних між процесами у різних гостьових системах. Вектор атаки наближається до організації витоку даних між різними процесами, але додатково вимагає виконання складних маніпуляцій для обходу ізоляції між гостьовими системами.

Дослідниками опубліковано кілька прототипів з демонстрацією принципів проведення атаки, але вони поки що непридатні для здійснення реальних атак. Перший приклад дозволяє перенаправити спекулятивне виконання коду в процесі жертви за аналогією зі зворотно-орієнтованим програмуванням (ROP, Return-Oriented Programming). В даному прикладі як жертва виступає спеціально підготовлений процес, що містить необхідні гаджети (застосування атаки до реальних сторонніх процесів утруднено). Другий приклад дозволяє вклинитися в обчислення при шифруванні AES всередині анклаву Intel SGX і організувати витік даних під час спекулятивного виконання інструкцій для відновлення значення ключа, що застосовується для шифрування.


Джерело: opennet.ru

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