太长不看:
截止本文发出时(2023-03-12),硬件厂商暂无补丁。安全管理员、系统管理员需要密切注意固件更新。
笔者:国际认证信息系统审计师、软考系统分析师
Trusted Platform Module(可信平台模块,TPM)是计算机中用于可信验证和加解密的硬件模块。
由于 Windows 11 把 TPM 2.0 作为升级安装的硬性要求,使得 TPM 从主板上一颗默默无闻不起眼的芯片而变得广为人知。还顺道带火了一波 TPM 模块的销售。
典型的 TPM 模块长这个样子:
只是,是软件就无法避免有BUG的真理再次被验证了。2023年2月28日,TPM 2.0 的模块库被 Quarkslab 的研究员 Francisco Falcon 和 Ivan Arce 发现存在两个内存越界访问漏洞。
这两个漏洞,可能影响“数以十亿计的设备”。
漏洞的CVE编号、评分如下:
CVE-2023-1017 | 越界写 | 7.8 |
CVE-2023-1018 | 越界读 | 5.5x |
相关CVE页面地址如下:
这两个漏洞实质是一样的,在 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 。可参考:
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:
如何在启用了 BitLocker 的系统上更新BIOS:
如何解决可信平台模块 (TPM) 和 BitLocker 的常见问题
要确认漏洞已经获得修补,需要检查设备的 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版本,貌似没啥用:
虽然要利用这个漏洞,攻击者需要先通过设备的身份验证,具有访问权。但是,考虑到大量终端设备已经被恶意软件侵入,所以完全是可以预期到恶意软件会升级自身去利用漏洞。
最后再强调一下,由于这是计算机底层硬件(固件)的漏洞,一般的防御手段基本无法奏效。所以,制定定期检查更新固件的策略,执行自动化的固件更新措施,确保实现持续的漏洞管理,是完全有必要的。
本站微信订阅号:
本页网址二维码: