Уязвимость в 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 остаются валидными, что позволяет злоумышленнику провести атаку по миграции виртуальных машин из окружений, защищённых от уязвимости, в окружения, подверженные проблеме. Также упоминается возможность совершения атаки по откату версии прошивки на старый уязвимый выпуск, но данная возможность пока не подтверждена.

Источники править

 
 
Creative Commons
Эта статья содержит материалы из статьи «Уязвимость в AMD SEV, позволяющая определить ключи шифрования», опубликованной OpenNET и распространяющейся на условиях лицензии Creative Commons Attribution (CC BY) — указание автора, источник и лицензию.
 
Эта статья загружена автоматически ботом NewsBots в архив и ещё не проверялась редакторами Викиновостей.
Любой участник может оформить статью: добавить иллюстрации, викифицировать, заполнить шаблоны и добавить категории.
Любой редактор может снять этот шаблон после оформления и проверки.

Комментарии

Викиновости и Wikimedia Foundation не несут ответственности за любые материалы и точки зрения, находящиеся на странице и в разделе комментариев.