Cайт веб-разработчика, программиста Ruby on Rails ESV Corp. Екатеринбург, Москва, Санкт-Петербург, Новосибирск, Первоуральск

Используете ПК на процессоре AMD? В чипах нашли критическую брешь, но исправлений безопасности не будет

Специалист по безопасности Кристофер Домас обнаружил необычный способ обойти защиту памяти в старых процессорах AMD. Чтобы переключить отображение оперативной памяти, достаточно изменить один бит в настройках контроллера, после чего система получает возможность обращаться к областям, которые обычно скрыты даже от ядра операционной системы. Разработанный Домасом метод получил название Skitter Creek Bath Salts.

Проблема затрагивает процессоры AMD семейств 15h и 16h, которые выпускались в первой половине 2010-х годов. AMD подтвердила недостаток в бюллетене AMD-SB-7068. Компания объяснила, что регистры контроллера памяти, отвечающие за преобразование системных адресов, нельзя заблокировать после настройки. Злоумышленник с достаточными правами способен изменить их уже во время работы компьютера.

Обычно процессор тщательно разделяет обычную и защищённую память. Некоторые участки оперативной памяти резервируются для служебных компонентов и недоступны даже операционной системе. Однако перед обращением к микросхемам памяти физический адрес проходит через контроллер, который определяет конкретный канал, модуль, банк и ячейку. Skitter Creek Bath Salts вмешивается именно на последнем этапе преобразования адреса.

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

Главная сложность заключается не в самом переключении, а в том, чтобы определить, куда переместились данные. Skitter Creek Bath Salts собирает пары исходных и изменённых адресов, после чего решатель Z3 восстанавливает математическое преобразование между двумя схемами памяти. Полученная карта позволяет вычислить адрес, через который можно обратиться к конкретному защищённому участку оперативной памяти.

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

В демонстрации Домас получил доступ к закрытой памяти процессора безопасности платформы AMD PSP, области режима управления системой SMM и данным, которые сохраняются в оперативной памяти при переходе процессора в энергосберегающее состояние C6. Проект также рассматривает доступ к низкоуровневым компонентам процессора, включая его микрокод. Исходный код и техническое описание Skitter Creek Bath Salts автор опубликовал на GitHub.

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

Исправлений для затронутых процессоров не будет. AMD уже прекратила поддержку безопасности семейств 15h и 16h, поэтому устройства больше не получают соответствующие обновления. Компания указала прекращение поддержки как единственный статус для затронутых моделей.

Skitter Creek Bath Salts разработан и проверен на процессорах семейства 16h. Автор выбрал их в том числе потому, что AMD ещё публиковала подробное описание регистров преобразования адресов контроллера памяти. Начиная с семейства 17h, к которому относятся процессоры на архитектуре Zen, такая информация исчезла из открытой документации. Поэтому опубликованная работа не доказывает, что тот же метод применим к современным Ryzen и EPYC.

SecurityLab