Знову виявлено вразливість у спекулятивній системі виконання інструкцій процесорів Intel, і цього разу дослідник Google, оголосив, що він виявив нову вразливість (вже занесену в каталог CVE-2022-40982), під назвою «Падіння»
Downfall — уразливість, яка дозволяє визначити вміст XMM, YMM і векторні регістри ZMM, які раніше використовувалися іншими процесами під час виконання інструкцій AVX на тому ж ядрі ЦП.
Про Падіння
Що стосується вразливості, згадується, що непривілейований зловмисник з можливістю запускати власний код у системі, може використовувати вразливість для витоку даних з інших процесів користувача, системне ядро, ізольовані анклави Intel SGX і віртуальні машини.
Векторні регістри, які можна фільтрувати, широко використовуються в шифруванні, функціях копіювання пам’яті та обробці рядків, наприклад, ці регістри використовуються в бібліотеці Glibc у функціях memcpy, strcmp і strlen, серед іншого. З практичної точки зору, уразливість може бути використана для визначення даних, які обробляються в інструкціях AES-NI або REP-MOVS (використовуються у функції memcpy) в інших процесах, через що може витікати ключі шифрування, конфіденційні дані та паролі користувачів.
Уразливість проявляється в процесорах Intel які підтримують розширені набори інструкцій AVX2 і AVX-512 (це означає, що вони впливають на процесори з 6-го по 11-е покоління), тоді як процесори Intel на основі мікроархітектур Alder Lake, Raptor Lake і Sapphire Rapids, здається, не впливають.
Як і у випадку з нещодавно виявленою уразливістю Zenbleed, що впливає на процесори AMD Zen2, у Downfall причиною уразливості є витік даних із файлів журналу, які використовуються для спільного використання вмісту журналу між усіма програмами на одному ядрі ЦП.
Витік стався через спекулятивну передачу даних під час виконання оператора GATHER, доступний у розширеннях AVX2 і AVX-512 і призначений для швидкого доступу до розрізнених даних у пам’яті. Під час виконання інструкції GATHER старі дані у файлі реєстру використовуються для спекулятивного виконання залежних інструкцій. Ці дані безпосередньо не відображаються в журналах програмного забезпечення, але можуть бути визначені за допомогою методів атак із бічних каналів, розроблених для атак Meltdown, наприклад аналізу залишкових даних у кеші ЦП.
Щоб використовувати Downfall, була розроблена техніка атаки під назвою Gather Data Sampling (GDS) і для яких були опубліковані прототипи експлойтів для отримання криптографічних ключів із процесу іншого користувача, витоку даних після того, як вони були скопійовані в ядро Linux функцією memcpy, і перехоплення друкованих символів, що залишилися у векторних регістрах після роботи інших процесів. Наприклад, він демонструє можливість визначення ключів AES, які використовуються для шифрування даних у процесі іншого користувача за допомогою бібліотеки OpenSSL.
Метод показав високу ефективність: шляхом проведення експерименту зі 100 різними ключами було визначено 100% ключів AES-128 і 86% ключів AES-256 з тривалістю кожної спроби визначення не більше 10 секунд. У хмарних системах атаку можна використовувати, щоб визначити, які дані обробляються в інших віртуальних машинах. Цілком можливо, що вразливість можна використати, виконавши код JavaScript у веб-браузері.
Слід зазначити, що Іntel дізнався про проблему минулого року (саме в серпні місяці) і що вразливість була оприлюднена лише цього року на конференції BlackHat USA. і виправлення для захисту від уразливості вже включено в різні оновлення ядра Linux від версії 6.4.9 6.1.44 до 4.14.321.
На додаток до цього, серед можливих заходів для уникнення негативного впливу захисту від уразливості Downfall на продуктивність згадується внесення змін у компілятори для вимкнення використання оператора GATHER або додавання оператора відразу після GATHER LFENCE, який вимикає попереджувальне виконання наступних операторів до завершення всіх попередніх фіксацій.
Для систем, де недоступні виправлення вбудованого програмного забезпечення, підтримку всіх розширень AVX вимкнено, а для частини оновлення мікрокоду Intel також надається можливість використовувати інтерфейс MSR для вибіркового вимкнення мікропрограмного захисту в контексті окремих процесів.
Нарешті, якщо вам цікаво дізнатись більше про це, ви можете перевірити деталі в наступне посилання.