随机数、XKCD 漫画与 ZEN 系列最新 CPU 漏洞 CVE-2024-56161

admin 2025年2月13日23:30:49评论27 views字数 3097阅读10分19秒阅读模式

敏锐和前瞻能力很重要,尤其对于网络安全。

笔者之前已曾强调过漏洞补丁管理需要延伸到 CPU 微码补丁:

挖深网络安全的兔子洞:CPU 微码补丁管理

刚刚发布不久的漏洞公告: CVE-2024-56161[1],又再一次说明了漏洞补丁管理务必需要延伸纳入 CPU 微码补丁。

随机数、XKCD 漫画与 ZEN 系列最新 CPU 漏洞 CVE-2024-56161

笔者: 国际注册信息系统审计师(CISA)

软考系统分析师

软件工程硕士

该漏洞按 CVSS 3.1 评分7.2,关系到 AMD ZEN 系列 CPU 发布的微码更新[2]。

漏洞由 GOOGLE 安全研究人员发现[3],原理在于 CPU 使用了不安全的哈希函数去验证微码补丁的签名,导致允许具备本地管理员权限的攻击者(位于 VM 之外,RING 0 层)加载有害的微码补丁。

研究员通过测试证实,虽然该漏洞首次发现是在 ZEN 4 CPU 上,但实际从 ZEN 1 到 ZEN 4 CPU 都受影响,即包括有:

  • EPYC 7001 (Naples)
  • EPYC 7002 (Rome)
  • EPYC 7003 (Milan/Milan-X)
  • EPYC 9004 (Genoa/Genoa-X/Bergamo/Siena)

需要注意一点是海光 CPU 源自 AMD ZEN 1。但笔者条件所限,未知该 BUG 是否也存在,只能提醒一下相关读者注意了。

虽然漏洞被利用需要前提,但若实施成功,其危害性相当大,可以使攻击者攻破 AMD 最新版本的 Secure Encrypted Virtualization[4] 即 SEV-SNP(Secure Nested Paging)[5] 所保护的机密计算负载,以及还能攻破 Dynamic Root of Trust Measurement[6],简单说就是能从根本上沦陷掉整台计算机。

GOOGLE 安全研究员为此还专门开发了一个验证程序:该程序通过微码补丁更新的方式改变了 RDRAND 指令的行为,使得 CPU 返回的随机数总是 4[7]。

RDRAND 是 Intel 在 Ivy Bridege 架构中新增的 CPU 指令,利用 CPU 内部的热噪声、时序中断计数等参数产生真随机数,被广泛采信和利用于各类加密算法环境。

这个指令如果失效或被控制,这条硬件指令随机数就不再随机,甚至还不如传统的伪随机数算法产生的随机数了。

AMD 基于 X86 指令集的授权关系也实现了这条指令。

这事情有趣在于“总是返回4的随机数函数”是个梗,创意来自于著名的漫画站 XKCD,也就是如下这篇:

随机数、XKCD 漫画与 ZEN 系列最新 CPU 漏洞 CVE-2024-56161

来源:https://xkcd.com/221/

稍作解释:如图的 C 语言函数命名为“获得随机数”,只有一条返回数值4的命令,且注释是“以公平的掷骰子选出,保证随机”,哈哈哈......

其实熟悉伪随机数算法原理的读者都知道,通常只要算法种子未知,使用者就难以否定伪随机数不随机,即使它一直给出的都是同一个数......或许下一个就不是这个数呢?

随机数、XKCD 漫画与 ZEN 系列最新 CPU 漏洞 CVE-2024-56161

这就是另一著名漫画系列 Dilbert 回应给 XKCD 的创作:图1上,小恶魔对 Dilbert 说,看,这就是我们自己的随机数发生器。图2,Dilbert 仔细一看,原来是另一个小恶魔在不断地说“9 9 9 9 9 9 ......”。图3,Dilbert 不禁质疑:“你们确认那真的是随机的?” “嗯,这就是随机性的问题所在,你永远无法确认。”小恶魔回复。

所以,即使 CPU 的 RDRAND 指令总是返回 4 这么荒谬,但这数来自 CPU,又有几个人有能力怀疑并确认 CPU 已经被黑掉呢?

紧跟厂商微码更新打补丁这件事相信笔者不用强调了,但检查方法值得关注。

比如如果是用 Microsoft Windows ,可以通过访问注册表的方法检查当前应用的补丁版本,位置路径在:

HKEY_LOCAL_MACHINEHARDWAREDESCRIPTIONSystemCentralProcessor�

检查其中的二进制项目:

Update Revision

如图:

随机数、XKCD 漫画与 ZEN 系列最新 CPU 漏洞 CVE-2024-56161

(嗯,笔者手提电脑用的 Intel,此图仅为示意)

又如果是用 Linux ,可以在 root 用户下通过如下命令:

head -n7 /proc/cpuinfo

检查输出内容中的 microcode 项目的值。

将查询获得的版本值与 AMD 在 advisory 页面[2]提供的版本信息进行比较,即可判定微码补丁更新是否已经实施到位。

根据 AMD,与本漏洞相关的最新微码补丁版本如下:

Code Name
Family
CPUID
Naples
AMD EPYC™ 7001 Series
0x00800F12
Rome
AMD EPYC 7002 Series
0x00830F10
Milan
AMD EPYC 7003 Series
0x00A00F11
Milan-X
AMD EPYC 7003 Series
0x00A00F12
Genoa
AMD EPYC 9004 Series
0x00A10F11
Genoa-X
AMD EPYC 9004 Series
0x00A10F12
Bergamo/Siena
AMD EPYC 9004 Series
0x00AA0F02

最后值得注意的是,这个补丁的发现、修补和公开三阶段的时间跨度相当长,分别是:

  • 报告日期:2024年9月25日
  • 修补日期:2024年12月17日
  • 公开日期:2025年2月3日

据 Google 安全研究员的说明,延迟披露的原因在于供应链的深度导致修补的过程很长,且目前仍不适合公布所有漏洞细节,具体情况将在2025年3月5日再发布。

~ 完 ~

注:题头图由笔者自行拍摄。

参考引用:

[1] NVD - CVE-2024-56161

https://nvd.nist.gov/vuln/detail/CVE-2024-56161

[2] AMD SEV Confidential Computing Vulnerability

https://www.amd.com/en/resources/product-security/bulletin/amd-sb-3019.html

[3] AMD: Microcode Signature Verification Vulnerability

https://github.com/google/security-research/security/advisories/GHSA-4xq7-4mgh-gp6w

[4] AMD Secure Encrypted Virtualization (SEV)

https://www.amd.com/en/developer/sev.html

[5] AMD SEV-SNP

https://www.amd.com/content/dam/amd/en/documents/epyc-business-docs/white-papers/SEV-SNP-strengthening-vm-isolation-with-integrity-protection-and-more.pdf

[6] AMD Dynamic Root of Trust Measurement

https://www.amd.com/content/dam/amd/en/documents/epyc-technical-docs/user-guides/58453.pdf

[7] security-research/pocs/cpus/entrysign at master · google/security-research

https://github.com/google/security-research/tree/master/pocs/cpus/entrysign

[8] XKCD 221: Random Number

https://xkcd.com/221/

点赞和转发都是免费的↓ 

 

原文始发于微信公众号(wavecn):随机数、XKCD 漫画与 ZEN 系列最新 CPU 漏洞 CVE-2024-56161

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2025年2月13日23:30:49
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   随机数、XKCD 漫画与 ZEN 系列最新 CPU 漏洞 CVE-2024-56161https://cn-sec.com/archives/3738760.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息