чи може вразливість безпеки привидів бути у віртуальній машині?


13

Чи можливо, що віртуальна машина на зразок VirtualBox має вразливість безпеки "привид"? Я думаю, що VM, можливо, виконує поза замовлення, але, на мою думку, не вдається зазирнути в кеш, щоб прочитати результат.

Чи є пояснення, як можна читати кеш віртуального процесора?


4
Так, невелике дослідження підтвердило б, що VMWare випустила патчі на адресу Spectre та Meltdown. Окрім того, гостьова ОС повинна бути
зафіксована

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

Чи є пояснення, як можна читати кеш віртуального процесора?

1
Подробиці @jms містяться в канонічній публікації, яку я пов’язав у своїй відповіді:Spectre works on a different level ... In this attack, the attacker tricks the speculative execution to predictively execute instructions erroneously. In a nutshell, the predictor is coerced to predict a specific branch result that results in asking for an out-of-bound memory access that the victim process would not normally have requested resulting in incorrect speculative execution. Then by the side-channel, retrieves the value of this memory. In this way memory belonging to the victim process is leaked to the malicious process.
Mokubai

1
@jms Віртуалізація лише швидка, оскільки вона використовує фізичний процесор з якомога меншою абстракцією та покладається на апаратне забезпечення процесора для забезпечення ізоляції та абстракції. Такі речі qemuможуть робити емуляцію, яка була б безпечнішою, оскільки це не апаратний процесор, але він набагато повільніше і відрізняється від віртуалізації.
Мокубай

Відповіді:


14

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

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

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

Security.SE має канонічні запитання щодо цього, і він згадує VM:

Я запускаю віртуальну машину / контейнери, наскільки я вразливий?

Відповідно до відповіді Steffen Ullrich

  • Атаки зриву не перетинають VM, лише просочують пам'ять ядра до локальних процесів.
  • Спектр може працювати у ВМ.

Також, від Steffen знову , Meltdown і Spectre працюють з контейнерами, оскільки контейнери покладаються на головне ядро.

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

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

З канонічної публікації Security.se знову:

Спектр працює на іншому рівні і не дозволяє отримати доступ до даних про простір ядра з простору користувача. У цій атаці зловмисник хитрує спекулятивне виконання, щоб передбачувано виконувати вказівки помилково. Коротше кажучи, передбачувач змушений передбачати конкретний результат гілки (якщо -> істина), що призводить до запиту позамежного доступу до пам'яті, до якого зазвичай не вимагав би потерпілий процес, що призводить до неправильного спекулятивного виконання. Потім по бічному каналу отримує значення цієї пам'яті. Таким чином пам’ять, що належить до потерпілого процесу, просочується до шкідливого процесу.

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

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

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

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


2
Я думаю, ви інтерпретували питання як "якщо це вплине на хост-процесор, чи вплине і на VM?" Наскільки я розумію, він запитує, "якщо хост-процесор не постраждав, чи може все-таки вплинути VM ?" Чи можете ви це зрозуміти?
AndreKR

1
@AndreKR: в даний час всі CPU, що виконуються поза замовленням, впливають на Spectre; лише за допомогою програмного обходу ви можете зробити безпеку системи (і, таким чином, VM повинен буде про це піклуватися, хоча гіпервізор може ізолювати гостей один від одного, якщо центральний процесор надає засоби, наприклад, ІБР-матеріали ІБС). Але на впорядкованому процесорі без спекулятивного виконання не може існувати будь-яка вразливість Spectre між будь-якими двома програмами. Суть Спектра - це спровокувати спекулятивне виконання того, що переводить секретні дані в мікроархітектурний стан; порядкові процесори цього не роблять.
Пітер Кордес

Найцікавіше - це не спекулятивна страта. Найцікавіше - як процес може з’ясувати, що є в кеші - навіть у VM.

@jms наявні атаки бічних каналів полегшуються і робляться корисними спекулятивним виконанням. Процес може не в змозі безпосередньо читати кеш-рядки, але спекулятивне виконання може просочувати інформацію, роблячи обчислення, що вводять значення в кеш, які можуть бути виявлені або виведені під час тайм-атак. Розділ 4 білої книжки
примірника

0

gem5

Якщо вам цікаво вивчати / відтворювати вразливості виключно за допомогою емуляції, не використовуючи хост-процесор, я не думаю, що QEMU є досить детальним для їх спостереження, оскільки він не імітує конвеєр CPU.

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

Класна демонстрація x86_64 з візуалізацією була опублікована за адресою: http://www.lowepower.com/jason/visualizing-spectre-with-gem5.html

Мінусом gem5 є те, що він набагато повільніше, ніж QEMU, моделювання більш детальне.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.