
TPM Genie — это интерпозер шины I2C для дискретных доверенных платформенных модулей.
TPM Genie предназначен для помощи в исследовании уязвимостей доверенных платформенных модулей. Будучи интерпозером последовательной шины, TPM Genie способен перехватывать и изменять весь трафик, передаваемый через канал I2C между хост-машиной и дискретным чипом TPM.
Вне исследовательского контекста модель угрозы, демонстрируемая TPM Genie, требует, чтобы злоумышленник имел временный физический доступ к целевой машине для имплантации устройства-интерпозера. Такая атака может быть проведена в сценарии "Evil Maid", недобросовестным сотрудником в дата-центре с корпоративными серверами, поддерживающими TPM, или в рамках атаки на цепочку поставок в стиле имплантов из каталога ANT АНБ.
Многие дискретные TPM выведены на дочернюю плату, которая подключается к основной плате через простой разъём или гнездо. Следовательно, процесс имплантации интерпозера довольно прост и не требует от злоумышленника модификации цепей. Имплант может быть установлен всего за несколько секунд.
TPM Genie был тщательно протестирован с Infineon SLB9645 I2C TPM, который соответствует спецификации протокола TPM v1.2.
Этот инструмент был в первую очередь разработан для манипуляции ответными пакетами TPM с целью обнаружения ошибок парсинга в драйверах TPM на стороне хоста. Эти ошибки могут быть найдены в ядре Linux, а также в различных загрузчиках, таких как Tboot и Tianocore EDKII. Используя эти уязвимости, злоумышленник может скомпрометировать хост-машину после её успешной загрузки в полностью измеренное и аттестованное состояние.
TPM Genie также способен выполнять атаку «человек посередине» на операции PCR Extend, что позволяет подрывать большинство заявленных целей TPM: измеренную загрузку, удалённую аттестацию и запечатанное хранение. В обычных условиях аттестация или распечатывание должны завершаться неудачей, если злоумышленник модифицирует какой-либо компонент процесса измеренной загрузки. Однако интерпозер делает возможной подмену этих измерений путём замены полезной нагрузки, связанной с порядковым номером PCR Extend, при её передаче по шине.
Кроме того, TPM Genie может ослабить аппаратный генератор случайных чисел Linux. В некоторых системах /dev/hwrng привязан к доверенному платформенному модулю таким образом, что все чтения символьного устройства фактически приводят к предоставлению случайных байт чипом TPM. Таким образом, интерпозер может незаметно изменить ГСЧ платформы, что потенциально нарушит криптографические операции на хосте.
Наконец, TPM Genie можно использовать для простой «прослушки» шины с целью захвата секретов, таких как данные сессий, связанные с командами OIAP и OSAP. И при минимальных дополнительных инженерных усилиях TPM Genie сможет подменять ключ подтверждения (Endorsement Key), получать контроль над AuthData и пересчитывать HMAC сессии авторизации. (Подробнее об этом в моём техническом документе. Обещаю реализовать это в ближайшее время).