BHI – нова вразливість класу Spectre у процесорах Intel та ARM

Група дослідників з Амстердамського вільного університету виявила нову вразливість в мікроархітектурних структурах процесорів Intel і ARM, що є розширеним варіантом уразливості Spectre-v2, що дозволяє обійти додані в процесори механізми захисту eIBRS і CSV2. Вразливість присвоєно кілька назв: BHI (Branch History Injection, CVE-2022-0001), BHB (Branch History Buffer, CVE-2022-0002) та Spectre-BHB (CVE-2022-23960), які описують різний прояв - атака, що стосується різних рівнів привілеїв, наприклад, процес користувача і ядро, BHB - атака на одному рівні привілеїв, наприклад, eBPF JIT і ядро).

Дослідниками продемонстровано робочий експлоїт, що дозволяє з простору користувача витягувати довільні дані з пам'яті ядра. Наприклад, показано як за допомогою підготовленого експлоїту можна витягти з буферів ядра рядок з хеш пароля користувача root, завантажений з файлу /etc/shadow. В експлоїті демонструється можливість використання вразливості в рамках одного рівня привілеїв (атака з рівня ядра на ядро) за допомогою завантаженої eBPF-програми. Не виключається також можливість застосування замість eBPF існуючих у коді ядра Spectre-гаджетів, послідовностей команд, що призводять до спекулятивного виконання інструкцій.

Вразливість проявляється у більшості актуальних процесорів Intel, крім процесорів сімейства Atom. З процесорів ARM проблеми схильні до Cortex-A15, Cortex-A57, Cortex-A7 *, Cortex-X1, Cortex-X2, Cortex-A710, Neoverse N1, Neoverse N2, Neoverse V1 і можливо деякі чіпи Cortex-R. На думку досліджень, у процесорах AMD уразливість не виявляється. Для усунення проблеми запропоновано кілька програмних методів блокування вразливості, які можна використовувати до появи апаратного захисту у майбутніх моделях CPU.

Для блокування проведення атак через підсистему eBPF рекомендується відключити за замовчуванням можливість завантаження eBPF-програм непривілейованими користувачами, записавши 1 у файл /proc/sys/kernel/unprivileged_bpf_disabled або виконавши команду sysctl -w kernel.unprivileged_b Для блокування атак через гаджети рекомендується використовувати інструкцію LFENCE у ділянках коду, які потенційно призводять до спекулятивного виконання. Примітно, що в стандартній конфігурації більшості дистрибутивів Linux вже є необхідні заходи захисту, достатні для блокування продемонстрованої дослідниками атаки через eBPF. Рекомендації Intel щодо відключення непривілейованого доступу до eBPF також застосовуються за замовчуванням починаючи з ядра Linux 1 і будуть експортовані в більш ранні гілки.

Концептуально BHI є розширеним варіантом атаки Spectre-v2, в якому для обходу доданого захисту (Intel eIBRS і Arm CSV2) та організації витоку даних використовується підстановка значень у буфер з глобальною історією переходів (Branch History Buffer), що використовується в CPU для підвищення точності передбачення розгалуження рахунок обліку історії минулих переходів. У ході атаки через маніпуляції з історією переходів створюються умови невірного передбачення переходу та спекулятивного виконання необхідних інструкцій, результат яких осідає у кеші.

За винятком використання буфера з історією переходів (Branch History Buffer), замість буфера прогнозування розгалуження (Branch Target Buffer) нова атака ідентична Spectre-v2. Завдання атакуючого у створенні таких умов, щоб адреса при виконанні спекулятивної операції була взята з області визначених даних. Після виконання спекулятивного непрямого переходу, лічену з пам'яті адресу переходу, залишається в кеші, після чого для його вилучення може застосовуватися один із способів визначення вмісту кешу на основі аналізу зміни часу доступу до прокешованих та не прокешованих даних.

Джерело: opennet.ru

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