Уязвимость в AMD SEV, позволяющая определить ключи шифрования

Discussion in 'Мировые новости. Обсуждения.' started by Suicide, 26 Jun 2019.

  1. Suicide

    Suicide Super Moderator
    Staff Member

    Joined:
    24 Apr 2009
    Messages:
    1,993
    Likes Received:
    4,764
    Reputations:
    693
    Разработчики из команды 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 остаются валидными, что позволяет злоумышленнику провести атаку по миграции виртуальных машин из окружений, защищённых от уязвимости, в окружения, подверженные проблеме. Также упоминается возможность совершения атаки по откату версии прошивки на старый уязвимый выпуск, но данная возможность пока не подтверждена.

     
    CKAP, Baskin-Robbins and seostock like this.
Loading...