TPM Genie 是一个用于独立可信平台模块的 I2C 总线中间件。
TPM Genie 旨在辅助可信平台模块(TPM)的漏洞研究。作为串行总线中间人设备,TPM Genie 能够拦截并修改主机与独立 TPM 芯片之间通过 I2C 通道传输的所有流量。
在研究之外,TPM Genie 所展示的威胁模型要求攻击者临时获得目标机器的物理访问权限,以便植入该中间人设备。此类攻击可能发生在“邪恶女仆”场景中,或由数据中心内拥有 TPM 企业服务器的内部员工实施,也可通过类似 NSA ANT 目录 中的硬件植入物那样的供应链拦截攻击实现。
许多独立 TPM 通过简单的排针或插座引出到子卡上,并与主板相连。因此,植入中间人设备的过程相当直接,攻击者无需进行任何电路修改攻击。植入过程仅需几秒钟即可完成。
TPM Genie 已针对符合 TPM v1.2 协议规范的 Infineon SLB9645 I2C TPM 进行了广泛测试。
此工具主要用于操纵 TPM 响应数据包,以触发主机端 TPM 驱动程序的解析漏洞。这些漏洞可能存在于 Linux 内核以及多种引导加载程序(如 Tboot 和 Tianocore EDKII)中。通过利用这些漏洞,攻击者有可能在主机成功启动并进入完全度量与证明状态后,对其发起攻击。
TPM Genie 还能够作为中间人拦截 PCR Extend 操作,从而破坏 TPM 的大部分既定用途:度量启动、远程证明和密封存储。通常情况下,如果攻击者修改了度量启动过程中的任何组件,证明或解封操作应会失败。然而,中间人设备可以通过替换在总线上传输的与 PCR Extend 序数相关的负载,实现对这些度量的伪造。
此外,TPM Genie 可以削弱 Linux 硬件随机数生成器。在某些系统上,/dev/hwrng 与可信平台模块相关联,使得对该字符设备的所有读取实际上都会由 TPM 芯片提供随机字节。通过这种方式,中间人设备可以微妙地改变平台的 RNG,从而影响主机上的密码学操作。
最后,TPM Genie 可用于简单地嗅探总线以捕获秘密信息,例如与 OIAP 和 OSAP 命令相关的会话数据。并且,只需增加名义上的工程工作量,TPM Genie 应能够伪造背书密钥、获得 AuthData 的控制权并重新计算授权会话 HMAC。(更多信息请参阅我的白皮书。我保证会尽快实现该功能。)