Уязвимость в AMD SEV, позволяющая определить ключи шифрования
26 июня 2019 года
Разработчики из команды Google Cloud выявили уязвимость (CVE-2019-9836) в реализации технологии AMD SEV (Secure Encrypted Virtualization), позволяющую скомпрометировать защищённые при помощи данной технологии данные. AMD SEV на аппаратном уровне обеспечивает прозрачное шифрование памяти виртуальных машин, при которой доступ к расшифрованным данным имеет только текущая гостевая система, а остальные виртуальные машины и гипервизор при попытке обращения к этой памяти получают зашифрованный набор данных.
Выявленная проблема позволяет полностью восстановить содержимое закрытого PDH-ключа, обрабатываемого на уровне отдельного защищённого процессора PSP (AMD Security Processor), недоступного для основной ОС. Имея PDH-ключ атакующий затем может восстановить сессионный ключ и секретную последовательность, заданную при создании виртуальной машины, и получить доступ к зашифрованным данным.
Уязвимость вызвана недоработками в реализации эллиптических кривых (ECC), применяемых для шифрования, которые позволяют провести атаку по восстановлению параметров кривой. Во время выполнения команды запуска защищённой виртуальной машины атакующий может отправить параметры кривой, не соответствующие параметрам, рекомендованным NIST, что приведёт к использованию значений точки малого порядка в операциях умножения с данными закрытого ключа.
Защищённость протокола ECDH напрямую зависит от порядка генерируемой начальной точки кривой, дискретное логарифмирование которой представляет собой очень сложную задачу. На одном из шагов инициализации окружения AMD SEV в вычислениях с закрытым ключом используются параметры, полученные от пользователя. По сути выполняется операция умножения двух точек, одна из которых соответствует закрытому ключу. Если вторая точка относится к простым числам низкого порядка, то атакующий может определить параметры первой точки (биты модуля, используемого в операции возведения в степень по модулю) через перебор всех возможных значений. Для определения закрытого ключа подобранные фрагменты простых чисел затем могут быть собраны воедино при помощи Китайской теоремы об остатках.
Проблеме подвержены серверные платформы AMD EPYC, использующие прошивки SEV вплоть до версии 0.17 build 11. Компания AMD уже опубликовала обновление прошивки, в котором добавлена блокировка использования точек, не соответствующих кривой NIST. При этом ранее сгенерированные сертификаты для ключей PDH остаются валидными, что позволяет злоумышленнику провести атаку по миграции виртуальных машин из окружений, защищённых от уязвимости, в окружения, подверженные проблеме. Также упоминается возможность совершения атаки по откату версии прошивки на старый уязвимый выпуск, но данная возможность пока не подтверждена.
Источники
правитьЛюбой участник может оформить статью: добавить иллюстрации, викифицировать, заполнить шаблоны и добавить категории.
Любой редактор может снять этот шаблон после оформления и проверки.
Комментарии
Если вы хотите сообщить о проблеме в статье (например, фактическая ошибка и т. д.), пожалуйста, используйте обычную страницу обсуждения.
Комментарии на этой странице могут не соответствовать политике нейтральной точки зрения, однако, пожалуйста, придерживайтесь темы и попытайтесь избежать брани, оскорбительных или подстрекательных комментариев. Попробуйте написать такие комментарии, которые заставят задуматься, будут проницательными или спорными. Цивилизованная дискуссия и вежливый спор делают страницу комментариев дружелюбным местом. Пожалуйста, подумайте об этом.
Несколько советов по оформлению реплик:
- Новые темы начинайте, пожалуйста, снизу.
- Используйте символ звёздочки «*» в начале строки для начала новой темы. Далее пишите свой текст.
- Для ответа в начале строки укажите на одну звёздочку больше, чем в предыдущей реплике.
- Пожалуйста, подписывайте все свои сообщения, используя четыре тильды (~~~~). При предварительном просмотре и сохранении они будут автоматически заменены на ваше имя и дату.
Обращаем ваше внимание, что комментарии не предназначены для размещения ссылок на внешние ресурсы не по теме статьи, которые могут быть удалены или скрыты любым участником. Тем не менее, на странице комментариев вы можете сообщить о статьях в СМИ, которые ссылаются на эту заметку, а также о её обсуждении на сторонних ресурсах.