Последние поколения процессоров Intel, включая чипы Xeon, и более старые микроархитектуры AMD в Linux уязвимы к новым атакам спекулятивного выполнения, которые обходят существующие средства защиты «Spectre».
Уязвимости затрагивают 12-е, 13-е и 14-е поколения чипов Intel для потребителей, 5-е и 6-е поколения процессоров Xeon для серверов, а также процессоры Zen 1, Zen 1+ и Zen 2 от AMD.
Атаки подрывают барьер Indirect Branch Predictor Barrier (IBPB) в процессорах x86 - основной механизм защиты от атак спекулятивного выполнения.
Спекулятивное выполнение - это функция оптимизации производительности современных процессоров, которая выполняет инструкции, еще не зная, понадобятся ли они будущим задачам, тем самым ускоряя процесс, если прогноз верен. Инструкции, выполняемые на основе неверного прогноза, называются переходными и сбрасываются.
Этот механизм был источником рисков побочных каналов, таких как Spectre, поскольку процесс спекуляции вызывает чувствительные данные, которые могут быть извлечены из кэша процессора.
Новые атаки, подобные Spectre
Исследователи из ETH Zurich Йоханнес Викнер и Кавех Разави объясняют, что, несмотря на многолетние усилия по сдерживанию атак типа Spectre, появилось множество вариантов, которые обходят существующие средства защиты.
Их вклад - межпроцессная атака (на Intel) и атака PB-inception (на AMD), которая позволяет перехватывать цели спекулятивного возврата даже после применения IBPB, что позволяет обойти существующие средства защиты и слить конфиденциальную информацию.
В первом случае атака использует недостаток в микрокоде Intel, когда IBPB не полностью аннулирует предсказания возврата после переключения контекста.
Злоумышленник манипулирует спекулятивным выполнением инструкций возврата, позволяя устаревшим предсказаниям слить конфиденциальную информацию, например хэш пароля root, из suid-процесса.
На процессорах AMD некорректно применяется IBPB-on-entry в ядре Linux, что позволяет предиктору возврата сохранять устаревшие предсказания даже после IBPB.
Злоумышленник неправильно управляет предиктором возврата до срабатывания IBPB, перехватывая его для утечки привилегированной памяти ядра после срабатывания барьера.

Ответ и меры по исправлению ситуации
Исследователи проинформировали Intel и AMD об этих проблемах в июне 2024 года.
Intel ответила, что уже обнаружила проблему внутри компании и присвоила ей идентификатор CVE-2023-38575.
В марте компания выпустила исправление микрокода, доступное через обновление прошивки, но исследователи отмечают, что код достиг не всех операционных систем, в том числе и Ubuntu.
AMD также подтвердила наличие уязвимости и сообщила, что дефект уже был задокументирован и отслежен как CVE-2022-23824. Стоит отметить, что в сообщении AMD упоминаются продукты Zen 3, которые не указаны в документе ETH Zurich.
Однако AMD классифицирует проблему как программный, а не аппаратный дефект. Старые архитектуры и тот факт, что AMD узнала об ошибке давно, могут объяснить решение компании не выпускать корректирующий микрокод.
Хотя оба производителя процессоров знали об обходе Spectre, компании отметили его в рекомендациях как потенциально опасный. В своей работе исследователи из ETH Zurich смогли продемонстрировать, что атака работает даже в Linux 6.5, которая поставляется с защитой IBPB-on-entry, считающейся самой сильной в борьбе с эксплуатацией Spctre.
Команда ETH Zurich работает с сопровождающими ядра Linux над разработкой патча для процессоров AMD, который будет доступен здесь, когда будет готов.