RMPocalypse: одна запись в 8 байт рушит защиту AMD SEV-SNP

RMPocalypse: одна запись в 8 байт рушит защиту AMD SEV-SNP

RMPocalypse: одна запись в 8 байт рушит защиту AMD SEV-SNP

Компания AMD выпустила патчи для серьёзной уязвимости под кодовым названием RMPocalypse, которая подрывала безопасность технологии Secure Encrypted Virtualization with Secure Nested Paging (SEV-SNP). Именно эта функция должна обеспечивать конфиденциальные вычисления в облаках и изоляцию виртуальных машин даже от гипервизора.

Проблему обнаружили исследователи из Швейцарской высшей технической школы Цюриха (ETH Zürich) — Бенедикт Шлютер и Швета Шинде. Подробный разбор опубликован на отдельной станице.

Они выяснили, что из-за неполных механизмов защиты можно выполнить одиночную запись в таблицу Reverse Map Paging (RMP), где хранятся метаданные о защите всех страниц памяти DRAM в системе.

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

RMP — это структура, размещённая в DRAM, которая сопоставляет физические адреса системы с адресами гостевой ОС и хранит для каждой страницы дополнительные атрибуты безопасности. Инициализирует её платформенный процессор безопасности (PSP), на котором и базируется SEV-SNP.

RMPocalypse использует уязвимость именно в этой стадии инициализации. Если атакующий имеет доступ уровня администратора гипервизора, он может вмешаться в процесс инициализации RMP и изменить её содержимое, что фактически разрушает принцип целостности и конфиденциальности SEV-SNP.

«Это создаёт окно возможностей для злоумышленника: можно подменить проверки подлинности, восстановить старые состояния (replay-атака), внедрить произвольный код или даже активировать скрытые функции системы», — пояснили исследователи.

По словам специалистов ETH Zürich, одна запись размером всего 8 байт в таблице RMP способна полностью её скомпрометировать. После этого нарушаются все механизмы защиты SEV-SNP — виртуальная машина перестаёт быть «доверенной» и становится уязвимой для извлечения любых секретов.

AMD присвоила уязвимости идентификатор CVE-2025-0033 и оценила её по шкале CVSS v4 на 5,9 балла — средний уровень опасности. Проблема описана как race condition (состояние гонки), возникающее при инициализации RMP модулем AMD Secure Processor.

Уязвимость затрагивает целый ряд серверных чипов AMD:

  • EPYC 7003, 8004, 9004 и 9005 Series
  • EPYC Embedded 7003, 8004, 9004 и 9005 Series

Для встраиваемых моделей 7003 и 9005 исправление выйдет только в ноябре 2025 года.

Всего несколько недель назад мы писали про вектор атаки Battering RAM, позволяющий обходить новейшие защиты на процессорах Intel и AMD в облачных средах.

Зачем Яндекс Go создал отдельный язык для расчёта стоимости поездок

Цена поездки в Яндекс Go — это не расстояние, умноженное на минуты и километры. В расчёт вмешиваются геозоны, спрос, скидки, платные дороги, дополнительные остановки и требования вроде перевозки кота, велосипеда или лыж. Чтобы управлять этим хозяйством без бесконечных деплоев, разработчики вынесли алгоритм ценообразования из кода сервиса в собственный язык.

Как объяснили разработчики в статье на Хабре, прайсинг работает не только при заказе машины.

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

 

Сначала сервисы параллельно собирают параметры поездки: тарифную категорию, геозоны, скидки, повышенный спрос и дополнительные услуги. Зависимости между источниками выстраиваются в граф, а запросы выполняются асинхронно на базе userver. Если некритичный источник не ответил, весь расчёт не падает.

 

Сам алгоритм раньше можно было бы держать в C++, но он меняется в среднем дважды в неделю. Выкатка сервиса на 50 подов занимает около 40 минут, а лес динамических конфигов быстро превратил бы код в музей условных операторов.

Поэтому Яндекс разработал собственный DSL. В нём есть условия, функции, неизменяемые значения и fold вместо циклов. Правила собираются в последовательную цепочку: каждое преобразование получает текущую цену и параметры, а возвращает новый результат с метаданными. Грамматику описали через ANTLR 4, а верификатор Z3 проверяет, что программа не выдаст некорректную цену.

 

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

 

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

RSS: Новости на портале Anti-Malware.ru