В коде с эталонной реализацией спецификации TPM 2.0 (Trusted Platform Module) выявлены уязвимости (CVE-2023-1017, CVE-2023-1018), приводящие к записи или чтению данных за границей выделенного буфера. Атака на реализации криптопроцессоров, использующих уязвимый код, может привести к извлечению или перезаписи хранящейся на стороне чипа информации, такой как криптографические ключи. Возможность перезаписи данных в прошивке TPM может быть использована атакующим для организации выполнения своего кода в контексте TPM, что, например, может быть использовано для реализации бэкдоров, работающих на стороне TPM и не определяемых из операционной системы.
Уязвимости вызваны некорректной проверкой размера параметров функции CryptParameterDecryption(), допускающей запись или чтение двух байтов за границей буфера, передаваемого в функцию ExecuteCommand() и содержащего команду TPM2.0. В зависимости от реализации прошивки перезаписываемые два байта могут повредить как неиспользуемую память, так и данные или указатели в стеке.
Эксплуатация уязвимости осуществляется через отправку TPM-модулю специально оформленных команд (атакующий должен иметь доступ к интерфейсу TPM). Проблемы устранены в выпущенном в январе обновлении спецификации TPM 2.0 (1.59 Errata 1.4, 1.38 Errata 1.13, 1.16 Errata 1.6).
Уязвимости также подвержена открытая библиотека libtpms, применяемая для программной эмуляции TPM-модулей и интеграции поддержки TPM в гипервизоры. Уязвимость устранена в выпуске libtpms 0.9.6.
Уязвимости вызваны некорректной проверкой размера параметров функции CryptParameterDecryption(), допускающей запись или чтение двух байтов за границей буфера, передаваемого в функцию ExecuteCommand() и содержащего команду TPM2.0. В зависимости от реализации прошивки перезаписываемые два байта могут повредить как неиспользуемую память, так и данные или указатели в стеке.
Эксплуатация уязвимости осуществляется через отправку TPM-модулю специально оформленных команд (атакующий должен иметь доступ к интерфейсу TPM). Проблемы устранены в выпущенном в январе обновлении спецификации TPM 2.0 (1.59 Errata 1.4, 1.38 Errata 1.13, 1.16 Errata 1.6).
Уязвимости также подвержена открытая библиотека libtpms, применяемая для программной эмуляции TPM-модулей и интеграции поддержки TPM в гипервизоры. Уязвимость устранена в выпуске libtpms 0.9.6.