Уразливість у KVM дозволяє виконувати код поза гостьовою системою на процесорах AMD

Дослідники з команди Google Project Zero оприлюднили це кілька днів тому у своєму блозі виявили уразливість (CVE-2021-29657) у гіпервізорі KVM (гіпервізор із відкритим кодом Linux, що підтримує апаратно прискорену віртуалізацію на x86, ARM, PowerPC та S / 390), дозволяє уникнути ізоляції гостьової системи і запустіть свій код на стороні середовища хоста.

У повідомленні згадується, що проблема маніфести з ядра Linux 5.10-rc1 до v5.12-rc6, тобто охоплює лише ядра 5.10 та 5.11 (Більшість стабільних гілок розподілу проблема не торкнулася.) Проблема присутня в механізмі nested_svm_vmrun, реалізованому за допомогою розширення AMD SVM (Secure Virtual Machine) і дозволяючи вкладений запуск гостьових систем.

У цьому дописі в блозі я описую вразливість у коді KVM для AMD та обговорюю, як ця помилка може перетворитися на повну втечу віртуальної машини. Наскільки мені відомо, це перший публічний запис прориву KVM від гостя до хосту, який не покладається на помилки в компонентах простору користувача, таких як QEMU.

Обговорена помилка була присвоєна CVE-2021-29657, впливає на версії ядра v5.10-rc1 до v5.12-rc6 і була виправлена ​​наприкінці березня 2021 року. Оскільки помилка стала придатною для використання лише у версії 5.10 і була виявлена ​​приблизно через 5 місяців, більшість реальних розгортань KVM не повинні впливати. Я все ще вважаю, що проблема полягає у цікавому прикладі роботи, необхідної для побудови стабільного втечі гостя до хоста проти KVM, і я сподіваюся, що ця стаття може довести, що компроміси гіпервізора - це не лише теоретичні проблеми.

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

Проаналізувавши запропоновану реалізацію KVM, дослідникиs зіткнулися з логічною помилкою, яка дозволяє вміст MSR (Реєстрація для конкретної моделі) господаря бути під впливом гостьової системи, який можна використовувати для виконання коду на рівні хоста.

Зокрема, запуск операції VMRUN від гостя другого вкладеного рівня (L2 запущений від іншого гостя) призводить до другого виклику nested_svm_vmrun і пошкоджує структуру svm-> nested.hsave, яка накладається на дані з vmcb із гостьової системи L2 .

В результаті виникає ситуація, коли на рівні гостя L2 можна звільнити пам’ять у структурі svm-> nested.msrpm, яка зберігає біт MSR, хоча він і надалі використовується, і отримує доступ до MSR хосту навколишнє середовище.

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

Крім того, KVM може розвантажити більшу частину роботи, пов’язаної з емуляцією пристрою, на компонент простору користувача.

Проблема присутня в коді, що використовується в системах з процесорами AMD (модуль kvm-amd.ko), і не відображається на процесорах Intel.

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

Дослідники окрім опису проблеми Вони також підготували робочий прототип подвигу що дозволяє запускати кореневу оболонку з гостьового середовища в хост-середовищі в системі з процесором AMD Epyc 7351P та ядром Linux 5.10.

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

В кінці кінців якщо вам цікаво дізнатись більше про це щодо примітки, ви можете перевірити деталі У наступному посиланні.


Зміст статті відповідає нашим принципам редакційна етика. Щоб повідомити про помилку, натисніть тут.

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

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

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

*

*

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