• XSS.stack #1 – первый литературный журнал от юзеров форума

Описан вектор атаки типа Meltdown на процессоры AMD

KAJIT

(L1) cache
Забанен
Регистрация
02.02.2021
Сообщения
634
Реакции
481
Гарант сделки
2
Пожалуйста, обратите внимание, что пользователь заблокирован
[ сорец: https://publications.cispa.saarland/3507/ ]

Modern operating systems fundamentally rely on the strict isolation of user applications from the kernel. This isolation is enforced by the hardware. On Intel CPUs, this isolation has been shown to be imperfect, for instance, with the prefetch side-channel. With Meltdown, it was even completely circumvented. Both the prefetch side channel and Meltdown have been mitigated with the same software patch on Intel. As AMD is believed to be not vulnerable to these attacks, this software patch is not active by default on AMD CPUs. In this paper, we show that the isolation on AMD CPUs suffers from the same type of side-channel leakage. We discover timing and power variations of the prefetch instruction that can be observed from unprivileged user space. In contrast to previous work on prefetch attacks on Intel, we show that the prefetch instruction on AMD leaks even more information. We demonstrate the significance of this side channel with multiple case studies in real-world scenarios. We demonstrate the first microarchitectural break of (fine-grained) KASLR on AMD CPUs. We monitor kernel activity, e.g., if audio is played over Bluetooth, and establish a covert channel. Finally, we even leak kernel memory with 52.85 B/s with simple Spectre gadgets in the Linux kernel. We show that stronger page table isolation should be activated on AMD CPUs by default to mitigate our presented attacks successfully.


Item Type:​
Conference or Workshop Item (A Paper) (Paper)
Divisions:​
Michael Schwarz (MS)
Conference:​
USENIX-Security Usenix Security Symposium
Depositing User:​
Michael Schwarz
Date Deposited:​
12 Oct 2021 19:50
Last Modified:​
12 Oct 2021 19:50
Primary Research Area:​
NRA3: Threat Detection and Defenses
URI:​
https://publications.cispa.saarland/id/eprint/3507
 

Вложения

  • amd_prefetch_sec22.pdf
    346.3 КБ · Просмотры: 12
Группа исследователей из Грацского технического университета (Австрия) и Центра Гельмгольца по информационной безопасности (CISPA) раскрыла сведения об уязвимости (CVE-2021-26318) во всех процессорах AMD, делающей возможным проведение атак по сторонним каналам класса Meltdown (изначально предполагалось, что процессоры AMD не подвержены уязвимости Meltdown). С практической стороны атака может применяться для организации скрытых каналов передачи данных, мониторинга за активностью в ядре или получения сведений об адресах в памяти ядра для обхода защиты на основе рандомизации адресов (KASLR) в процессе эксплуатации уязвимостей в ядре.

Компания AMD тсчитае нецелесообразным принятие специальных мер для блокирования проблемы, так как уязвимость, как и выявленная в августе похожая атака, малоприменима в реальных условиях, ограничена текущими границами адресного пространства процесса и требует наличия в ядре определённых готовых последовательностей инструкций (гаджетов). Для демонстрации атаки исследователи загружали собственный модуль ядра с искусственно добавленным гаджетом. В реальных условиях для подстановки необходимых последовательностей атакующие могут использовать, например, регулярно всплывающие уязвимости в подсистеме eBPF.

Для защиты от нового вида атаки компания AMD рекомендовала применять методы безопасного кодирования, которые помогают блокировать атаки Meltdown, такие как использование инструкций LFENCE. Выявившие проблему исследователи рекомендуют включить более строгую изоляцию таблиц страниц памяти (KPTI), которая до этого применялась только для процессоров Intel.

В ходе эксперимента исследователям удалось добиться утечки информации из ядра в процесс в пространстве пользователя со скоростью 52 байта в секунду, при наличии в ядре гаджета, выполняющего операцию "if (offset < data_len) tmp = LUT[data[offset] * 4096];". Предложено несколько методов извлечения по сторонним каналам сведений, оседающих в кэше в ходе спекулятивного выполнения. Первый метод основан на анализе отклонений времени выполнения процессорной инструкцией "PREFETCH" (Prefetch+Time), а второй на изменении изменения энергопотребления при выполнении "PREFETCH" (Prefetch+Power).

Напомним, что классическая уязвимость Meltdown основывается на том, что в ходе спекулятивного выполнения инструкций процессор может выполнить обращение к закрытой области данных, после чего отбросить результат, так как выставленные привилегии запрещают такое обращение из процесса пользователя. В программе спекулятивно выполняемый блок отделяется от основного кода условным переходом, который в реальных условиях всегда срабатывает, но из-за того, что в условном операторе используется вычисляемое значение, которое процессор не знает во время упреждающего выполнения кода, осуществляется спекулятивное выполнение всех вариантов ветвления.

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


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх