是软件就有BUG之TPM 2.0模块库被发现两个漏洞,评分7.8和5.5

作者:Sender Su  来源:原创内容  发布日期:2023-03-12  最后修改日期:2023-03-13

太长不看:

截止本文发出时(2023-03-12),硬件厂商暂无补丁。安全管理员、系统管理员需要密切注意固件更新。

article banner

笔者:国际认证信息系统审计师、软考系统分析师

Trusted Platform Module(可信平台模块,TPM)是计算机中用于可信验证和加解密的硬件模块。

由于 Windows 11 把 TPM 2.0 作为升级安装的硬性要求,使得 TPM 从主板上一颗默默无闻不起眼的芯片而变得广为人知。还顺道带火了一波 TPM 模块的销售。

典型的 TPM 模块长这个样子:

tpm module

只是,是软件就无法避免有BUG的真理再次被验证了。2023年2月28日,TPM 2.0 的模块库被 Quarkslab 的研究员 Francisco Falcon 和 Ivan Arce 发现存在两个内存越界访问漏洞。

这两个漏洞,可能影响“数以十亿计的设备”。

漏洞的CVE编号、评分如下:

CVE-2023-1017 越界写 7.8
CVE-2023-1018 越界读 5.5x

相关CVE页面地址如下:

http://web.nvd.nist.gov/vuln/detail/CVE-2023-1017

http://web.nvd.nist.gov/vuln/detail/CVE-2023-1018

这两个漏洞实质是一样的,在 TPM2.0 的模块库中存在越界读和写漏洞。在模块库的 CryptParameterDecryption 例程中,错误地允许在 TPM 2.0 的命令结束位置之后读取或写入2字节的数据。

攻击者如果成功利用 CVE-2023-1017 的越界写漏洞,写入垃圾信息会导致 TPM 芯片停止工作或相关系统进程崩溃,从而实现拒绝服务攻击,如果精心设计,还可能导致在 TPM 芯片执行命令时关联执行任意命令代码。

至于 CVE-2023-1018 的越界读漏洞,会允许攻击者读取访问存储在 TPM 芯片内的敏感数据,典型如加密用的私钥。

也就2个字节,为何有这么严重呢?下面详细讲讲。

首先要清楚了解到,可信平台模块(TPM)技术是一种基于硬件的解决方案,目的是为操作系统提供安全的加密功能,使其能够抵抗篡改。TPM也有软件的实现方式,以适应云化的部署要求,但软件的效率必然比硬件要低。

TPM 可以以独立插卡或集成到主板的硬件形式实现。软件方式的虚拟 TPM 有两种实现方式,一种是出于节省资源和提高效率为目的的虚机监控程序形式,另一种是纯粹基于软件在虚机内运行的形式(swtpm)。

TPM 属于业界规范,由 Trusted Computing Group (可信计算组,TCG)负责维护,该组织纳入了很多硬件和软件制造商积极参与贡献。

TCG 在2014年10月发布了 TPM 2.0 标准规范,经过修订后当前最新版本是修订版 01.59,于2019年11月发布。

TPM硬件和软件制造商使用标准规范构建符合标准的固件,为需要加密保护的敏感数据实现了安全的接口。

因此,TPM技术实际应用于多种设备,包括专门的企业级硬件到物联网(IoT)设备都存在其身影,反而在个人计算机方面一直是不显眼的存在。

除非用户启用了 Bitlocker 对硬盘数据进行实时加解密,才会对 TPM 有所接触。因为没有 TPM 的 Windows 系统启用了 Bitlocker 时需要插包含有加密秘钥的U盘才能启动,用户体验下降,所以 Bitlocker 在启用时会检查和提醒用户缺乏 TPM 。可参考:

https://learn.microsoft.com/zh-cn/windows/security/information-protection/bitlocker/bitlocker-overview

TPM 库规范体系结构文档化了“基于会话的加密”。这个概念,允许加密客户端应用程序执行各种操作,包括参数化的加密能力。使用基于会话的加密,可以以确保这些参数的机密性。

操作系统或加密客户端软件依赖于 TPM 安全地提供诸如 Cipher Feedback(CFB)这样的功能,可用于块存储的数据加密,或按预期参数进行混淆后的的数据流。

Quarkslab 安全研究人员发现,在 TPM 参考规范中,处理部分 TPM 命令中的某些参数的方式,存在漏洞。具体在 CryptParameterDecryption 例程中存在越界(Out Of Bound, OOB)漏洞,允许对非当前会话的数据进行2字节的读取访问,或者在当前命令缓冲区结束后写入2个字节而导致内存损坏。

对于可以访问到具有该漏洞的设备的攻击者来说,可以通过向 TPM 发送精心制作的命令来触发此错误,使得 TPM 能访问不属于预期操作的数据。

关键是,操作系统依赖(信任)TPM 固件,因此,传统的基于主机的安全功能可能很难检测或阻止这种访问。

说了一大堆,但是解决办法呢?

暂时还未出现。虽然 TCG 已经发布了更新后的规范和勘误表,但用户还需要等到软硬件厂商释出修补后的 TPM 固件或软件。尤其是固件更新因为开发和测试的复杂性,需要等待的时间会更长一些。现在已经确认是否受影响的厂商并不多,大部分厂商还在确认过程中。

比较啰嗦的是,升级 TPM 固件有可能要先清除 TPM 存储的内容,这对于启用了 Bitlocker 的计算机用户来说,需要比较复杂的升级后重新设置 Bitlocker 密钥的操作。比如如下的硬件厂商专属说明:

如何更新TPM:

https://www.dell.com/support/kbdoc/zh-cn/000184894/

如何在启用了 BitLocker 的系统上更新BIOS:

https://www.dell.com/support/kbdoc/000134415/

如何解决可信平台模块 (TPM) 和 BitLocker 的常见问题

https://www.dell.com/support/kbdoc/zh-cn/000103639/

要确认漏洞已经获得修补,需要检查设备的 TPM 版本如下:

  • TPM 2.0 v1.59 勘误版本 1.4 或更高

  • TPM 2.0 v1.38 勘误版本 1.13 或更高

  • TPM 2.0 v1.16 勘误版本 1.6 或更高

个别厂商已经率先发布了安全指引,作为补丁释出之前的防御指引,可以参考。

对于Windows 10或11设备,可以在安全中心或者PowerShell窗口使用 get-tpm 命令查看 TPM 的版本信息,但测试发现,并没有显示出Errata版本,貌似没啥用:

win 11 security center

powershell get-tpm

虽然要利用这个漏洞,攻击者需要先通过设备的身份验证,具有访问权。但是,考虑到大量终端设备已经被恶意软件侵入,所以完全是可以预期到恶意软件会升级自身去利用漏洞。

最后再强调一下,由于这是计算机底层硬件(固件)的漏洞,一般的防御手段基本无法奏效。所以,制定定期检查更新固件的策略,执行自动化的固件更新措施,确保实现持续的漏洞管理,是完全有必要的。

本栏目相关
  •  2024-11-13 挖深网络安全的兔子洞:CPU 微码补丁管理
  •  2024-11-10 安全加固基准搅合国产操作系统上下游关系
  •  2022-05-11 CIS-CAT 配置评估工具介绍及操作实践
  •  2022-03-16 Windows 系统安全基线及软件工具介绍
  •  2022-08-28 网络攻防中的色彩象征
  •  2022-03-11 安装RHEL/CentOS时如何选择配置安全策略?
  •  2023-02-27 注意:TightVNC 2.8.75 释出,修补 zlib 漏洞 CVE-2022-37434
  •  2022-03-25 从甲方角度介绍“CIS互联网安全中心”
  •  2022-03-17 详细了解微软安全合规工具包(SCT)
  • 本站微信订阅号:

    微信订阅号二维码

    本页网址二维码: