TPM 2.0 参考实现代码中的漏洞

TPM 2.0 参考实现代码中的漏洞

在这篇博文中,我们将详细讨论在可信平台模块 (TPM) 2.0 参考实现代码中发现的两个漏洞。这两个漏洞,越界写入 (CVE-2023-1017) 和越界读取 (CVE-2023-1018),影响了多个 TPM 2.0 的软件实现(例如虚拟化软件使用的那些)以及多个硬件 TPM。

介绍

2021 年 10 月,微软发布了 Windows 11。其中一个引人注目的安装要求是需要可信平台模块 (TPM) 2.0。此要求的含义是,为了能够在虚拟机中运行 Windows 11,虚拟化软件必须向 VM 提供 TPM,方法是直通主机上的硬件 TPM,或提供虚拟 TPM 给他们。

我们发现这是一个有趣的漏洞研究主题,因为虚拟 TPM 的添加意味着虚拟化软件的攻击面扩大,可以从客户机内部访问,因此可能被用于虚拟机逃逸。作为研究成果,我们发现了两个安全问题:标识为 CVE-2023-1017 的越界写入和标识为 CVE-2023-1018 的越界读取。它们可以通过发送带有加密参数的恶意 TPM 2.0 命令来触发用户模式应用程序。有趣的是,这两个漏洞的影响范围比我们最初想象的要大得多:由于它们起源于可信计算组织(简称 TCG,发布和维护 TPM 规范的非营利组织)发布的参考实现代码,这些安全漏洞不仅影响了我们测试的每一个虚拟化软件,还影响了硬件实现。

请注意,本篇博文中的大部分评估(例如关于可利用性、影响或受影响的平台)都是基于我们对软件虚拟 TPM 的分析,因为我们可以通过一种简单的方式调试它们以执行动态分析(尽管 Hyper-V 的虚拟 TPM 运行为 IUM 进程 ,但那是另一回事)。相反,在没有调试接口的单独芯片中运行 TPM 固件,并了解运行时发生了什么是一个完全不同的问题。即使对硬件 TPM 固件进行静态分析也很困难:我们尝试分析的几个 TPM 固件更新恰好是加密的。因此,缺乏对硬件 TPM 的具体评估并不意味着它们不受影响;这只是由于缺乏可观察性,我们无法评估它们中的大多数如何受到影响。然而,使用这篇博文中发布的概念验证代码,我们已经证实至少有一些单独的 TPM 芯片容易受到攻击。在尝试 OOB 写入之后,芯片将停止响应(即不再识别命令),需要重新启动计算机才能再次正常工作,并确认其漏洞状态。

受影响的平台

这些受影响的软件和硬件平台并非详尽列表。此处列出的产品是我们借助本文中提供的 PoC 证明漏洞存在的产品,但其他 TPM(无论是虚拟的还是物理的)很可能也存在漏洞。

漏洞代码存在于 TPM 2.0 参考实现的最新可用版本(在我们进行研究时):Trusted Platform Module Library Specification, Family “2.0”, Level 00, Revision 01.59 – November 2019;
Windows 10 上的 Microsoft Hyper-V(受影响的模块:TPMEngUM.dll,版本 10.0.19041.1415);
VMware Workstation 版本 16.2.4 build-20089737(受影响的模块:tpm2emu.exe,可执行文件中没有版本信息);
Libtpms/SWTPM,由 Qemu 和 VirtualBox 使用(从 master 分支编译,commit 520a2fa27d27a4ab18f4cf1c597662c6a468565f);
Nuvoton 硬件 TPM(固件版本:1.3.0.1);
通常来说,所有基于可信计算组织提供的参考代码实现的 TPM 2.0 固件都有可能受到影响。

对云计算的威胁

所有主要的云计算提供商都提供带有虚拟 TPM 的实例。这暴露了一个有趣的场景,因为恶意行为者可能会尝试利用虚拟 TPM 中的这些漏洞来逃离虚拟机并危害主机系统。

Amazon AWS 有 NitroTPM;
Microsoft Azure 提供虚拟 TPM 作为 Trusted Launch 的一部分;
Google Cloud 提供虚拟 TPM 作为 Shielded VMs 的一部分;
Oracle Cloud Infrastructure 提供虚拟 TPM 作为 Shielded Instances 的一部分。
那些使用基于 TCG 参考实现的虚拟 TPM 的供应商预计会受到攻击。就 Google Cloud 而言,上面链接的博文提到他们的虚拟 TPM 的核心来自 IBM 发布的代码,它是从 TPM 2.0 规范的完整源代码中自动提取的,我们验证了其中的错误 CryptParameterDecryption 功能都存在于其中。对于 Microsoft Azure,之前链接的文档提到他们的虚拟 TPM“符合 TPM 2.0 规范”,我们已经验证 Windows 10 上可用的 Hyper-V 版本中包含的虚拟 TPM 确实是易受伤害的。这些错误也存在于 Microsoft 的开源参考实现中。

关于 Amazon AWS 和 Oracle Cloud Infrastructure,我们没有太多关于它们使用什么的细节,只是 NitroTPM 文档提到它“符合 TPM 2.0 规范”并带有指向 TCG 网站的链接。

修复

参考实现

Trusted Computing Group 发布了 TCG Trusted Platform Module Library 勘误表 1.4 版,并提出了针对这两个错误的修复建议。

软件产品

微软在 2023 年 3 月的安全更新中修补了 Hyper-V 中的漏洞。他们对 Azure 的 Pluton/HCL/Overlake/Manticore 标准服务器中 TPM 2.0 中 OOB 写入影响的评估很低,因为覆盖只有 2 个字节,他们的团队还没有确定一种一致且易于实现的方法来获得 EoP 或 RCE只有 2 个字节。
微软还通过提交 9bdd9f0aaba5e54b3c314cfff02cf532281a067e 修补了他们的开源参考实现。
VMware 预计将在 2023 年 4 月发布针对这些错误的修复程序。
Libtpms 修补了提交 324dbb4c27ae789c73b69dbf4611242267919dd4 中的错误。
Chromium OS 修补了提交 3b87ed233acb4c76c27872e1ac0b74dc032199f1 中的漏洞。
IBM 在提交 102893a5f45dbb0b0ecc0

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值