TPM 2.0 参考实现中允许访问加密芯片中数据的漏洞

在 TPM 2.0(可信平台模块)规范的参考实现的代码中,发现了漏洞(CVE-2023-1017、CVE-2023-1018),这些漏洞会导致写入或读取数据超出分配的缓冲区的范围。 使用易受攻击的代码对加密处理器实现进行攻击可能会导致提取或覆盖片上存储的信息(例如加密密钥)。 攻击者可以利用覆盖 TPM 固件中数据的能力在 TPM 上下文中组织其代码的执行,例如,可用于实现在 TPM 端运行且未被检测到的后门由操作系统。

这些漏洞是由于对 CryptParameterDecryption() 函数参数大小的错误验证造成的,该函数允许在传递给 ExecuteCommand() 函数并包含 TPM2.0 命令的缓冲区边界之外写入或读取两个字节。 根据固件实现,被覆盖的两个字节可能会损坏未使用的内存和堆栈上的数据或指针。

该漏洞是通过向 TPM 模块发送专门设计的命令来利用的(攻击者必须有权访问 TPM 接口)。 这些问题已在 2.0 月份发布的 TPM 1.59 规范更新中得到解决(1.4 Errata 1.38、1.13 Errata 1.16、1.6 Errata XNUMX)。

用于 TPM 模块的软件模拟以及将 TPM 支持集成到虚拟机管理程序中的 libtpms 开放库也容易受到攻击。 该漏洞已在 libtpms 0.9.6 版本中修复。

来源: opennet.ru

添加评论