Процессоры Intel уязвимы для новой атаки по побочному каналу временного выполнения

Discussion in 'Мировые новости. Обсуждения.' started by alexzir, 25 Apr 2023.

  1. alexzir

    alexzir Well-Known Member

    Joined:
    29 Oct 2019
    Messages:
    962
    Likes Received:
    2,311
    Reputations:
    25
    Новая атака side-channel, затрагивающая несколько поколений процессоров Intel, приводит к утечке данных через регистр EFLAGS.

    Новая атака была обнаружена исследователями из Университета Цинхуа, Университета Мэриленда и компьютерной лаборатории (BUPT), находящейся в ведении Министерства образования Китая, и отличается от большинства других side-channel атак.

    Вместо того, чтобы полагаться на систему кэширования, как многие другие side-channel атаки, эта новая атака использует недостаток в временном выполнении, который позволяет извлекать секретные данные из пространства памяти пользователя посредством анализа времени.

    Атака работает как побочный канал для Meltdown, критической уязвимости, обнаруженной в 2018 году, влияющего на многие микропроцессоры на базе x86.

    Meltdown использует функцию оптимизации производительности под названием “спекулятивное выполнение”, позволяющую злоумышленникам обходить механизмы изоляции памяти для доступа к секретам, хранящимся в памяти ядра, таким как пароли, ключи шифрования и другие личные данные.

    Сбой в работе частично решается с помощью установки патчей программного обеспечения, обновлений микрокода и редизайна оборудования; однако ни одно решение не решило проблему на 100%, и новейший метод атаки может работать даже в полностью исправленных системах, в зависимости от аппаратных средств, программного обеспечения и конфигураций исправлений.

    Атака по времени временного выполнения

    Новая атака по побочному каналу, представленная в техническом документе, опубликованном на Arxiv.org описывается ошибка в изменении регистра EFLAGS при временном выполнении, влияющая на время выполнения инструкций JCC (переход по коду условия).

    Регистр EFLAGS - это регистр процессора, который содержит различные флаги, связанные с состоянием процессора, в то время как команда JCC - это команда процессора, которая допускает условное ветвление на основе содержимого регистра EFLAGS.

    Атака выполняется в две фазы, первая заключается в запуске временного выполнения и кодировании секретных данных через регистр EFLAGS, а вторая заключается в измерении времени выполнения инструкции KCC для декодирования данных.
    [​IMG]
    Обзор атаки (arxiv.org)
    Экспериментальные данные показали, что атака привела к 100% извлечению данных (утечке) для Intel i7-6700 и Intel i7-7700 и имела некоторый успех против более нового процессора Intel i9-10980XE. Эксперимент проводился на Ubuntu 22.04 jammy с версией ядра Linux 5.15.0.

    [​IMG]
    Псевдокод для синхронизации атаки с временным выполнением (arxiv.org)
    Однако исследователи отмечают, что эта временная атака не так надежна, как методы по побочному каналу состояния кэша, и для получения лучших результатов в последних чипах атаку пришлось бы повторять тысячи раз.

    “В нашем эксперименте мы обнаружили, что влияние регистра EFLAGS на время выполнения команды Jcc не такое постоянное, как состояние кэша”, - говорится в части, посвященной оценке экспериментальных данных.

    “Примерно в течение 6-9 циклов после временного выполнения время выполнения Jcc не будет подходить для создания побочного канала. Эмпирически для повышения точности атаку необходимо повторить тысячи раз ”.

    Исследователи признают, что первопричины атаки остаются неуловимыми, и выдвигают гипотезу, что в исполнительном блоке центрального процессора Intel имеется буфер, которому требуется время для возврата, если выполнение должно быть прекращено, процесс, который вызывает остановку, если последующая команда зависит от целевого назначения буфера.

    Тем не менее, они по-прежнему предлагают некоторые нетривиальные меры по смягчению последствий, такие как изменение реализации инструкции JCC, чтобы сделать невозможным измерение состязательного выполнения ни при каких условиях, или переписывание EFLAGS после временного выполнения, чтобы уменьшить его влияние на инструкцию JCC.

     
    CyberTro1n and Suicide like this.
Loading...