Исследователями продемонстрирован рабочий эксплоит, позволяющий из пространства пользователя извлекать произвольные данные из памяти ядра. Например, показано как при помощи подготовленного эксплоита можно извлечь из буферов ядра строку с хэшем пароля пользователя root, загруженную из файла /etc/shadow. В эксплоите демонстрируется возможность использования уязвимости в рамках одного уровня привилегий (атака из уровня ядра на ядро) при помощи загруженной пользователем еBPF-программы. Не исключается также возможность применения вместо 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_bpf_disabled=1». Для блокирования атак через гаджеты рекомендуется использовать инструкцию LFENCE в участках кода, потенциально приводящих к спекулятивному выполнению. Примечательно, что в конфигурации по умолчанию большинства дистрибутивов Linux уже присутствуют необходимые меры защиты, достаточные для блокирования продемонстрированной исследователями атаки через eBPF. Рекомендации Intel по отключению непривилегированного доступа к eBPF также применяются по умолчанию начиная с ядра Linux 5.16 и будут бэкпортированы в более ранние ветки.
Концептуально BHI представляет собой расширенный вариант атаки Spectre-v2, в котором для обхода добавленной защиты (Intel eIBRS и Arm CSV2) и организации утечки данных используется подстановка значений в буфер с глобальной историей переходов (Branch History Buffer), применяемый в CPU для повышения точности предсказания ветвления за счёт учёта истории прошлых переходов. В ходе атаки через манипуляции с историей переходов создаются условия неверного предсказания перехода и спекулятивного выполнения необходимых инструкций, результат которых оседает в кэше.
За исключением использования буфера с историей переходов (Branch History Buffer) вместо буфера предсказания ветвления (Branch Target Buffer) новая атака идентична Spectre-v2. Задача атакующего в создании таких условий, чтобы адрес при выполнении спекулятивной операции был взят из области определяемых данных. После выполнения спекулятивного косвенного перехода, считанный из памяти адрес перехода, остаётся в кэше, после чего для его извлечения может применяться один из способов определения содержимого кэша на основе анализа изменения времени доступа к прокэшированным и не прокэшированным данным.
Источник: http://www.opennet.ru/opennews/art.shtml?num=56827