Группа исследователей VUSec из Амстердамского университета Vrije, специализирующихся на системной и сетевой безопасности, обнаружила новый тип атаки по побочному каналу под названием SLAM (Spectre over LAM). Эта атака временного выполнения использует аппаратные функции, предназначенные для повышения безопасности актуальных и будущих процессоров Intel, AMD и Arm, для получения хэша пароля администратора из памяти ядра.
SLAM использует функции памяти, которые позволяет программному обеспечению получить доступ к нетранслированным битам в 64-битных линейных адресах для хранения метаданных. Производители процессоров реализуют эту функцию по-разному и используют для её обозначения разные термины. Intel называет это «линейной маскировкой адреса» (LAM), AMD — «игнорированием верхнего адреса» (UAI), а Arm — «игнорированием верхнего байта» (TBI).
Независимо от названия, данного производителем процессора, LAM, UAI или TBI предназначена для ускоренного обеспечения безопасности физической памяти и управления ОЗУ с помощью ЦП. По информации от Intel, LAM — это расширение, которое позволяет программному обеспечению находить метаданные в указателях данных и разыменовывать их без необходимости маскировать биты метаданных. Атака SLAM нацелена на современные чипы, используя определённые уровни страничного управления памятью («пейджинга») и методы управления распределением физической памяти системы, применяемые в новых процессорах.
SLAM опирается на функцию памяти в этих процессорах, которая позволяет программному обеспечению хранить нетранслированные биты в 64-битных линейных адресах в метаданных ядра. Во время атаки создаётся новый временный процесс выполнения, исследующий набор немаскированных инструкций, называемых в программном коде «гаджетами». Злоумышленнику потребуется использовать код целевой системы, который взаимодействует с этими гаджетами, а затем применить набор алгоритмов для извлечения конфиденциальной информации, такой как пароли администратора и другие ключи шифрования, из памяти ядра.
Исследователи отметили, что метод нацеливания на незамаскированные гаджеты является общим для программного обеспечения и, следовательно, обычно используется для получения произвольных данных ядра. Отличает эту атаку то, что современные процессоры не имеют строгих проверок каноничности на новых уровнях пейджинга и обход безопасности происходит на уровне процессора.
Успешная атака SLAM была продемонстрирована исследователями в системе на базе процессора Intel Core i9-13900K, работающей под управлением ядра Linux 6.3.0. Попытка использования уязвимости в системе с процессором AMD Ryzen 7 2700X также увенчалась успехом. Исследователи VUSec утверждают, что и многие другие современные и будущие процессоры всех трёх мировых производителей не защищены от атаки SLAM:
- Существующие процессоры AMD, у которых выявлена уязвимость CVE-2020-12965;
- Будущие процессоры Intel Sierra Forest, Grand Ridge, Arrow Lake и Lunar Lake с поддержкой LAM (4-х и 5-уровневый пейджинг памяти);
- Будущие процессоры AMD с поддержкой UAI и 5-уровневым пейджингом памяти;
- Будущие процессоры Arm с поддержкой TBI и 5- уровневым пейджингом памяти.
В настоящее время этот эксплойт не зависит от процессора, но применим только в различных версиях Linux, для которых уже создан временный патч для отключения LAM. Компания Arm не видит необходимости предпринимать дальнейшие действия против SLAM. AMD утверждает, что предпринятые ранее меры по противодействию уязвимости Spectre V2 обеспечивают защиту и от атаки SLAM. Intel рекомендует своим клиентам развернуть функцию с использованием расширения линейного разделения адресного пространства (LASS), чтобы предотвратить любой подобный доступ к ядру.
Это уже второй обнаруженный на этой неделе эксплойт аппаратного уровня, игнорирующий наборы инструкций безопасности ЦП. Специалисты VUSec разместили код и данные для воспроизведения атак SLAM в своём репозитории GitHub. Остаётся надеяться, что производителям процессоров удастся избежать подобных «дыр» в безопасности при проектировании чипов следующих поколений.