Вразливість Reptar, що зачіпає процесори Intel

Тевіс Орманді (Tavis Ormandy), дослідник безпеки з компанії Google, виявив нову вразливість (CVE-2023-23583) у процесорах Intel, що отримала кодове ім'я Reptar і в основному небезпеку для хмарних систем, в яких виконуються віртуальні машини різних користувачів. Вразливість дозволяє викликати зависання або аварійну зупинку роботи системи під час виконання в непривілейованих гостьових системах певних операцій. Для тестування своїх систем опубліковано утиліту, яка створює умови для прояву вразливості.

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

За даними дослідника, вразливість присутня в сімействах процесорів Intel Ice Lake, Rocket Lake, Tiger Lake, Raptor Lake, Alder Lake і Sapphire Rapids. У звіті Intel згадується, що проблема проявляється починаючи з 10 покоління (Ice Lake) процесорів Intel Core та третього покоління Xeon Scalable, а також у процесорах Xeon E/D/W (Ice Lake, Skylake, Haswell, Broadwell, Skylake, Sapphire Rapids, Emerald Rapids, Cascade Lake, Cooper Lake, Comet Lake, Rocket Lake) та Atom (Apollo Lake, Jasper Lake, Arizona Beach, Alder Lake, Parker Ridge, Snow Ridge, Elkhart Lake та Denverton). Вразливість, що розглядається, усунена у вчорашньому оновленні мікрокоду20231114.

Вразливість викликана тим, що за певного збігу мікроархітектурних обставин виконання інструкції «REP MOVSB» кодується з надлишковим префіксом «REX», що призводить до невизначеної поведінки. Проблема була виявлена ​​в ході тестування надлишкових префіксів, які теоретично повинні ігноруватися, але на практиці призводили до дивних ефектів, наприклад, ігнорування безумовних переходів та порушення збереження покажчика в інструкціях xsave та call. Подальший розбір показав, що додавання надлишкового префікса для інструкції REP MOVSB ​​викликає пошкодження вмісту буфера ROB (ReOrder Buffer), застосовуваного для впорядкування інструкцій.

Передбачається, що помилка викликана неправильним обчисленням розміру інструкції «MOVSB», що призводить до порушення адресації інструкцій, записаних у буфер ROB після MOVSB ​​з надлишковим префіксом, та усунення вказівника на інструкції. Подібна розсинхронізація може обмежитись порушенням проміжних обчислень з подальшим відновленням цілісного стану. Але якщо викликати збій одночасно на кількох ядрах або SMT-потоків, можна досягти достатнього пошкодження мікроархітектурного стану для аварійної зупинки роботи.

Джерело: opennet.ru

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