对 AMD 安全处理器的功能了解多少?

信息安全 硬件 可信计算 固件 x86
2021-09-03 17:03:08

我发现了大量关于英特尔 ME 功能的研究,包括 Joanna Rutkowska 的“英特尔 x86 被认为有害(第 4 章是关于 ME)”调查报告,但我很难找到有关 AMD 安全的信息处理器(以前称为 PSP)。

一些人断言 AMD PSP与 ME “一样糟糕”“更差” 。(例如,在 libreboot 项目的网站上有一个经常被引用的页面,声称有很多关于 PSP 的内容,但我还没有找到其中许多声明的独立证实,而且 libreboot 的观点明显不同于实际的观点安全研究员。)

最终,我想为自己回答的是:如果一个人的威胁模型假设 AMD 没有在工厂预先安装其 CPU/APU,那么安全处理器作为未来后门的载体有多大风险(如“环 - AMD 或第三方在 Intel 上展示了 3 个 rootkits),这种威胁是否可以缓解?

但不太主观的是,我想知道安全处理器上已经看到了哪些功能,以及与我所知道的相比如何:

  • 是否用于类似于 Intel 的 AMT 的远程管理?
  • 它有自己的网络堆栈吗?
  • 它是否有软件可更新的固件,该固件是如何保护的?
  • 是否有任何已知的针对它的漏洞利用,或者对其固件进行过任何公开研究?
  • 有什么理由可以说 AMD PSP 的情况比 Intel ME 的情况“好”或“差”?
2个回答

我对同样的问题很感兴趣,并做了一些初步的研究。我将尝试回答一些问题,但作为非 AMD 工程师我不能确定。

它有软件可更新的固件吗?

是的,它确实。此固件是AGESA(AMD 通用封装软件架构)的一部分,AGESA 是从 AMD 分发给 UEFI 固件供应商的二进制 blob。还有 coreboot,它们带有发行说明PSP 部分提到了不同平台的 PSP 版本号。这表明它们是可更新的。

该固件是如何保护的?

我一直无法提取固件代码,也不知道它是如何保护的。一个可能的迹象是如何保护 SMU 固件:在标头中使用 HMAC-SHA,并使用隐藏的密钥(请参阅Rudolf Marek 的演示文稿)。

是否用于类似于 Intel 的 AMT 的远程管理?

不可能知道它的用途。但是,我的发现表明远程管理不是主要目的(与英特尔的 ME 不同)。我发现它的作用是:

  • PSP在CPU的启动过程中扮演着重要的角色(这个经常被引用,所以我不再赘述)。

  • PSP 为私钥管理提供 fTPM(基于固件的 TPM)API。

  • PSP 对 SEV(安全加密虚拟化 API)、VM 内存加密进行密钥管理。这使用了 PSP 的 API要查看具体细节,有一个Linux 补丁 RFC来引入支持。

  • PSP 可用于加密卸载。对此的支持登陆在 Linux 内核下drivers/crypto/ccp

然而:有证据表明代码可以动态加载,

  • 在 coreboot 中加载“trustlets”。进一步分析的指针:coreboot 中的 PSP 库
  • drivers/gpu/drm/amd/amdgpu/psp_gfx_if.hLinux 内核中的注释“将受信任的应用程序二进制文件加载到 PSP 操作系统中的命令” 。这可能会处理 GPU 芯片上的不同 PSP,但由于它是 AMD 代码,即使那样也可能存在重叠。

它有自己的网络堆栈吗?

不,不知道库存配置中有网络堆栈。所有的 API 似乎都面向 CPU,而不是外部世界。

了解这些处理器是如何按照“企业客户”和 DRM 供应商的模糊规范设计的,就有可能加载带有网络堆栈的远程管理模块。但是,我发现的任何东西都无法确凿地证明这一点。

是否有任何已知的针对它的漏洞利用,或者对其固件进行过任何公开研究?

fTPM API 中有一个公共漏洞我找不到任何关于固件的公开研究。

有什么理由可以说 AMD PSP 的情况比 Intel ME 的情况“好”或“差”?

与 Intel ME 不同,至少 AMD 安全处理器不提供开箱即用的远程管理 API(据我们所知)。为了把它变成一个网络监听后门,操作系统软件必须提供更多的模块,甚至可能破坏它。

然而,正如我们发现的那样,它是一个黑匣子,很少有公共研究投入其中。在密码学中,系统在经常被分析并且没有发现漏洞之后获得信任。默默无闻的安全性是不可接受的。不幸的是,没有人认为安全处理器符合 Kerckhoffs 的原则。

因此,我要说的是,任何提供直接内存访问并且本质上代表处理器进行处理的东西都是您正在引入计算平台的另一组威胁面。所以我想说威胁面是相似的,如果不一样的话。

PSP 的运作方式在很多方面都模仿了 ME,但它也将参与加密操作,因为这似乎是它的主要关注点。目前还没有正在讨论的平台上的野外攻击。

让我相信它可能会以这种方式被利用的部分是一个预告片:防盗软件是 PSP 应该启用的功能之一......几乎所有这种情况都利用 ME 或笨拙的 UEFI 垫片,如果这意味着更多相同,那么我将假设 PSP 片上系统具有一些驻留/离线管理功能。

规范中没有任何内容直接与网络堆栈对话,但有一个要求与“IO”交互,这可能是一个存根。

如果 AMD 忽略了他们的主要竞争对手的一个已经存在了近十年的功能,我也会感到惊讶。但这不是决定性的。