LVI - новый класс атак на механизм спекулятивного выполнения в CPU

Discussion in 'Мировые новости. Обсуждения.' started by Suicide, 11 Mar 2020.

  1. Suicide

    Suicide Super Moderator
    Staff Member

    Joined:
    24 Apr 2009
    Messages:
    1,974
    Likes Received:
    4,680
    Reputations:
    693
    Обнародованы сведения о новом классе атак LVI (Load Value Injection, CVE-2020-0551) на механизм спекулятивного выполнения в CPU Intel, которые могут использоваться для организации утечки ключей и секретных данных из анклавов Intel SGX и других процессов.

    Новый класс атак основан на манипуляциях с теми же микроархитектурными структурами, что и в атаках MDS (Microarchitectural Data Sampling), Spectre и Meltdown. При этом новые атаки не блокируются существующими методами защиты от Meltdown, Spectre, MDS и других подобных атак. Для обеспечения эффективной защиты от LVI требуется внесение аппаратных изменений в CPU. При организации защиты программным путём, через добавление компилятором инструкции LFENCE после каждой операции загрузки из памяти и замену инструкции RET на POP, LFENCE и JMP, фиксируются слишком большие накладные расходы - по оценке исследователей полная программная защита приведёт к снижению производительности в 2-19 раз.

    Частично, трудность блокирования проблемы компенсируется тем, что в настоящее время атака носит больше теоретический, чем практический характер (атака теоретически возможна, но очень трудна в реализации и воспроизводима лишь в синтетических тестах). Компания Intel присвоила проблеме умеренный уровень опасности (5.6 из 10) и выпустила обновление прошивки и SDK для окружения SGX, в которых попыталась блокировать проведение атаки обходным путём. Предложенные методы атаки пока применимы только к процессорам Intel, но не исключается возможность адаптации LVI и для других процессоров, к которым применимы атаки класса Meltdown.

    Проблема была выявлена в апреле прошлого года исследователем Джо Ван Балком (Jo Van Bulck) из Лёвенского университета, после чего при участии 9 исследователей из других университетов, были разработаны пять базовых методов совершения атак, каждый из которых допускает существование более специфичных вариантов. Независимо в феврале этого года исследователи из компании Bitdefender также обнаружили один из вариантов атаки LVI и сообщили о нём в Intel. Варианты атак отличаются использованием различных микроархитектурных структур, таких как буфер хранения (SB, Store Buffer), буфер заполнения (LFB, Line Fill Buffer), буфер переключение контекста FPU и кэш первого уровня (L1D), ранее применяемых в таких атаках как ZombieLoad, RIDL, Fallout, LazyFP, Foreshadow и Meltdown.

    [​IMG]
    Основным отличием LVI от атак MDS является то, что MDS манипулирует определением содержимого микроархитектурных структур, остающихся в кэше после спекулятивной обработки исключений (fault) или операций load и store, в то время как атаки LVI позволяют добиться подстановки данных атакующего в микроархитектурные структуры для влияния на последующее спекулятивное выполнения кода жертвы. При помощи указанных манипуляций атакующий может извлечь содержимое закрытых структур данных в других процессах при исполнении определённого кода на целевом ядре CPU.

    [​IMG]
    Для эксплуатации проблемы в коде процесса-жертвы должны встречаться специальные последовательности кода (гаджеты), в которых загружается контролируемое атакующим значение, а загрузка этого значения приводит к возникновению исключений (fault, abort или assist), отбрасывающих результат и повторно выполняющих инструкцию. При обработке исключения возникает спекулятивное окно, во время которого происходит утечка обрабатываемых в гаджете данных. В частности, процессор начинает выполнять в спекулятивном режиме кусок кода (гаджет), потом определяет, что предсказание не оправдалось и откатывает операции в исходное состояние, но обработанные в процессе спекулятивного выполнения данные оседают в кэше L1D и микроархитектурных буферах и доступны для извлечения из них с использованием известных методов определения остаточных данных по сторонним каналам.

    Исключение "assist", в отличие от "fault", обрабатывается внутри процессора без вызова программных обработчиков. Assist может возникнуть, например, когда требуется обновить бит A (Accessed) или D (Dirty) в таблице страниц памяти. Главная сложность проведения атаки на другие процессы в том, как инициировать возникновение assist, манипулируя процессом жертвы. В настоящее время не существует надёжных способов сделать это, но в будущем не исключается их нахождение. Возможность совершения атаки пока подтверждена только для анклавов Intel SGX, остальные сценарии являются теоретическими или воспроизводимыми в синтетических условиях (требуется добавление в код определённых гаджетов)

    [​IMG]

    [​IMG]
    Возможные векторы атак:

    • Утечка данных из структур ядра в процесс на уровне пользователя. Имеющаяся в ядре Linux защита от атак класса Spectre 1, а также механизм защиты SMAP (Supervisor Mode Access Prevention) существенно уменьшают вероятность атаки LVI. Внесение дополнительной защиты в ядро может потребоваться при выявления в будущем более простых методов проведения атаки LVI.
    • Утечка данных между разными процессами. Для атаки требуется наличие определённых фрагментов кода в приложении и определение метода формирования исключения в целевом процессе.
    • Утечка данных из хост-окружения в гостевую систему. Атака отнесена к категории слишком сложных, требующих выполнения различных труднореализуемых шагов и предсказаний активности в системе.
    • Утечка данных между процессами в разных гостевых системах. Вектор атаки близок к организации утечки данных между разными процессами, но дополнительно требует выполнения сложных манипуляций для обхода изоляции между гостевыми системами.
    Исследователями опубликовано несколько прототипов с демонстрацией принципов проведения атаки, но они пока непригодны для совершения реальных атак. Первый пример позволяет перенаправить спекулятивное выполнение кода в процессе-жертвы по аналогии с возвратно-ориентированным программированием (ROP, Return-Oriented Programming). В данном примере в качестве жертвы выступает специально подготовленный процесс, содержащий необходимые гаджеты (применение атаки к реальным сторонним процессам затруднено). Второй пример позволяет вклиниться в вычисления при шифровании AES внутри анклава Intel SGX и организовать утечку данных во время спекулятивного выполнения инструкций для восстановления значения применяемого для шифрования ключа.



     
    seostock and DartPhoenix like this.
  2. DartPhoenix

    DartPhoenix Elder - Старейшина

    Joined:
    15 Sep 2013
    Messages:
    531
    Likes Received:
    5,920
    Reputations:
    15
    Кто вообще юзает эти Анклавы ?
    Помнитцо еще Рутковска чото вещала по сабжу, но реально не на чем даже протестить. Прототип самому надо видимо писать а потом его взламывать ибо живой и трепыхающейся софтины я чот не видел.
     
    Suicide likes this.
  3. DartPhoenix

    DartPhoenix Elder - Старейшина

    Joined:
    15 Sep 2013
    Messages:
    531
    Likes Received:
    5,920
    Reputations:
    15
    Вообще... я ушь как-то наверное говорил но... они чото не то придумали. Потому что есть область памяти в которую не влезет даже авер. В нее нельзя влезть из ядра. Ничего не навевает ? Например место куда можно спокойно и неторопливо расшифровывать части малвари... Запускаться оттуда она может и не будет, но таблицу раскодировки - сам Джа велел туда затолкать. Так что в общем-то помолимся чтобы АМД поддерживали полностью сей стандарт а потом будем ждать баттхертов от дяди Жени.
     
    seostock, fandor9 and Suicide like this.
Loading...