Виявлено нові уразливості класу Spectre-v2 Training Solo

Виявлено нові уразливості класу Spectre-v2 під кодовою назвою Training Solo

Група дослідників з Амстердамського вільного університету виявила нові уразливості класу Spectre-v2 під кодовою назвою Training Solo, що дозволяють обійти механізми ізоляції пам’яті. У контексті систем віртуалізації ці уразливості надають можливість визначити вміст пам’яті хост-оточення або інших гостьових систем, а на серверах — визначити вміст пам’яті ядра при виконанні експлойту у просторі користувача.

Приклади експлойтів для здійснення таких атак опубліковано на GitHub. Представлені експлойти дозволяють витягувати довільні дані з пам’яті ядра зі швидкістю 17 КБ/с, а з пам’яті гіпервізора — 8,5 КБ/с.

Механізм атак Spectre-v2

В атаках класу Spectre-v2 для організації витоку даних використовується підстановка значень у буфер адреси розгалуження (Branch Target Buffer) або буфер з історією переходів (Branch History Buffer). Ці буфери застосовуються для передбачення наступної операції розгалуження.

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

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

Методи Training Solo для обходу механізмів захисту

Представлені дослідниками методи Training Solo націлені на обхід механізмів ізоляції областей виконання (domain isolation), таких як IBPB, eIBRS і BHI_NO, що застосовуються для блокування атак класу Spectre-v2.

Суть методів Training Solo полягає в тому, що для впливу на блок передбачення переходів пропонується не запускати підконтрольний атакуючому код, а використовувати код, вже наявний на стороні привілейованої області виконання (ядро або гіпервізор), з якої атакуючий намагається отримати дані.

Крім того, дослідники виявили дві апаратні проблеми (CVE-2024-28956 і CVE-2025-24495), що дозволяють повністю обійти ізоляцію областей виконання і реалізувати витік даних з процесів інших користувачів, інших гостьових систем або хост-оточення.

Типи атак Training Solo

Запропоновано три види атак Training Solo:

1. Викривлення логіки передбачення переходів

Це досягається за рахунок виклику вже існуючих у ядрі послідовностей команд (гаджетів), що впливають на вміст буфера з історією переходів. Як такі гаджети запропоновано використовувати механізм обмеження доступу до системних викликів SECCOMP.

При тестуванні на CPU Intel Tiger Lake і Lion Cove швидкість витоку при використанні даного методу склала 1,7 КБ/с.

2. Використання IP-колізій

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

3. Вплив прямих переходів на передбачення непрямих переходів

Подібна поведінка викликана двома апаратними уразливостями: CVE-2024-28956 (ITS – Indirect Target Selection) і CVE-2025-24495 – проблема в CPU Intel з ядрами Lion Cove.

Швидкість витоку даних з пам’яті при використанні цього методу склала 17 КБ/с. У продемонстрованому експлойті на визначення хешу пароля користувача root, збереженого в пам’яті після виклику команди “passwd -s”, було витрачено 60 секунд.

Уразливі процесори та заходи захисту

Атаці, що викривлює буфер з історією переходів, піддаються всі CPU Intel, які мають підтримку механізму eIBRS, включаючи CPU Intel Coffee Lake і Lion Cove.

Для блокування уразливості компанія Intel випустила оновлення мікрокоду з реалізацією нової інструкції IBHF (Indirect Branch History Fence). Для старих CPU Intel запропоновано використовувати програмний метод очищення історії переходів.

У ядро Linux внесено зміну, що додає програмний і апаратний захист від атак, здійснюваних з використанням cBPF. Компанія AMD заявила, що на її CPU метод атаки не діє. Компанія ARM повідомила, що проблема зачіпає лише старі процесори ARM, вразливі для атак Spectre-v2 і які не підтримують розширення FEAT_CSV2_3 і FEAT_CLRBHB.

Уразливість Indirect Target Selection (CVE-2024-28956) зачіпає CPU Intel Core 9-11 поколінь і Intel Xeon 2-3 поколінь. Уразливість CVE-2025-24495 проявляється в CPU на базі мікроархітектур Lunar Lake і Arrow Lake. Проблеми усунено в оновленні мікрокоду. У ядро Linux внесено зміну, що блокує проблему через винесення непрямих переходів у верхню частину рядка кешу.