Plundervolt - новий метод атаки на процесори Intel, що зачіпає технологію SGX

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

Атака становить небезпеку лише у контексті маніпуляцій з обчисленнями в анклавах SGX, оскільки проведення потребує наявності прав root у системі. У найпростішому випадку, атакуючий може домогтися внесення спотворень в інформацію, що обробляється в анклаві, але при більш складних сценаріях не виключається можливість відтворення закритих ключів, що зберігаються в анклаві, що використовуються для шифрування з використанням алгоритмів RSA-CRT і AES-NI. Техніка також може застосовуватися для генерації помилок спочатку коректних алгоритмах для провокування виникнення вразливостей при роботі з пам'яттю, наприклад, для організації звернення до області за кордоном виділеного буфера.
Прототип коду для здійснення атаки опубліковано на GitHub

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

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

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

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

Проблемі схильні різні моделі процесорів Intel, включаючи CPU Intel Core з 6
по 10 покоління, а також п'яте та шосте покоління Xeon E3, перше та друге покоління Intel Xeon Scalable, Xeon D,
Xeon W та Xeon E.

Нагадаємо, що технологія SGX (Розширення Software Guard) з'явилася в процесорах Intel Core шостого покоління (Skylake) та пропонує серію інструкцій, що дозволяють виділяти додаткам рівня користувача закриті області пам'яті - анклави, вміст яких не може бути прочитаний і змінений навіть ядром і кодом, що виконуються в режимах ring0, SMM і VMM. Передати управління коду в анклаві неможливо традиційними функціями переходу та маніпуляціями з регістрами та стеком - для передачі управління в анклав застосовується спеціально створена нова інструкція, яка виконує перевірку повноважень. При цьому код, що міститься в анклаві, може застосовувати класичні методи виклику для звернення до функцій всередині анклаву і спеціальну інструкцію для виклику зовнішніх функцій. Для захисту від апаратних атак, таких як підключення до модуля DRAM, використовується шифрування пам'яті анклаву.

Джерело: opennet.ru

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