软件定义网络、软件定义汽车的出现,说明“软件定义”已经成为系统设计的趋势。软件定义硬件,同样已经在主流处理器中得到使用。随着软件与硬件的边界不断模糊,处理器的性能在软件灵活性的加持下得到了飞跃性的提升。然而,软件中的安全问题也随之进入到了硬件中。Tavis Ormandy 是黑客圈如雷贯耳的一个名字。早在他作为创始成员组建 Project Zero 之前,他就曾在 Sophos Antivirus 产品中发现了蠕虫级漏洞,之后又在卡巴斯基、Trend Micro 及赛门铁克的安全产品中发现多个漏洞。2017 年,Tavis 还发现了 Cloudflare 基础设施中影响上百万网站的漏洞,可能导致这些网站的敏感信息发生泄露,并称之为 Cloudbleed。Tavis 甚至曾在洗澡时思考代码发现过 LastPass 漏洞2023 年 7 月,Tavis 曝光了 AMD 系列处理器存在一个 CPU 硬件级漏洞,称之为 Zenbleed 漏洞。攻击者能通过 Zenbleed 漏洞泄露同处理器上其他进程中的数据。Zenbleed 漏洞的利用简单、稳定,对使用 AMD 处理器的云服务产生严重安全威胁。与之前出现的基于侧信道的处理器漏洞不同,Zenbleed 漏洞则是一个由软件设计思想而导致的硬件漏洞。寄存器和指令在早期芯片设计中完全属于硬件范畴,汇编语言中的寄存器与物理存储单元直接对应,处理器按顺序忠实执行每一条汇编指令。
随着微码、乱序执行、预测执行等技术的引入,现代 CPU 的性能不断提升;同一块 CPU 上的核数不断提升,寄存器与指令的复杂度也不可同日而语。
为了进一步提升性能,寄存器与指令的实现中加入了软件逻辑。部分寄存器会进行映射,而不再对应固定的物理存储单元,也就意味着不同的寄存器会使用同一块物理存储单元进行存储。
在引入预测执行后,为了提高执行效率、恢复执行错误的结果,在处理器执行预测指令时,清空寄存器并不会真正清空对应物理存储单元中的内容,而是标志该寄存器为零。当预测执行错误时只需要将寄存器再指向之前的物理存储单元即可,以此提升分支预测错误时的恢复速度。内存管理,一直以来都是软件漏洞的高发地,当硬件中也加入了内存管理,内存管理漏洞也随之而来。Tavis 发现,vzeroupper 指令在 AMD 处理器的实现中,会将 ymm 寄存器的高位清空,也就是标志 ymm 寄存器的高位为零,其所对应的物理存储单元标志为未使用的状态。但是在 AMD 处理器分支预测错误时,虽然其他预测执行的操作均会进行回滚,ymm 寄存器高位所对应物理存储单元的状态却不会回滚。这块物理存储单元被其他核的寄存器使用后,依然能从当前核读取到这块物理存储单元的内容。自从 2018 年 Spectre 漏洞曝光后,大量 CPU 漏洞如雨后春笋般涌现。直到 2023 年,仍有 Spectre 漏洞的变体出现。然而这些漏洞依然属于侧信道漏洞的范畴,需要根据例如 cache 的访问时间等,推测出目标的内容。通常,侧信道漏洞利用的复杂度及时间需求都较高。而 Zenbleed 则属于由于软件设计缺陷而导致的漏洞,其利用稳定性高、复杂度低,短时间内就能够泄露出大量信息:处理器硬件的封闭性,使得其实现逻辑难以被分析,安全研究员想要发现处理器指令相关的问题,除了阅读手册之外,就只能通过大量的测试以观察处理器的行为。Google 的安全研究人员通过 fuzz CPU 发现了不少硬件方面的漏洞,Zenbleed 漏洞同样是通过 fuzz 发现的。不过 Tavis 使用 Oracle Serialization Fuzz 的方式,通过对比两组功能相同程序的状态,以检查由于乱序执行等 CPU 特性所导致的指令行为差异。不仅 Zenbleed,Tavis 和同事使用 Oracle Serialization Fuzz 的方式还发现了 Intel CPU 中的漏洞 Reptar。Intel 使用微码更新的方式修复了漏洞,并支付了 5 千美元漏洞奖励一句题外话,事实上发现 Zenbleed 时 Tavis 早已从 Project Zero 离开,加入了 Google 的另一个安全团队。随着 Tavis Ormandy、Ben Hawkes 等创始人的离开,Project Zero 近年来的发声也越来越少。曾是十年来安全研究员最向往之处之一的 Project Zero,未来还会保持安全研究最顶尖的水平吗?随着软件下沉到硬件,硬件拥有了软件的灵活性,不仅让硬件的性能得到飞跃性提升,而且能够动态调整硬件的实现。但也将软件中的安全问题带到了硬件中。
毫无疑问的是,硬件软件化是一种进步。两个领域的有机结合能够带来 1+1>2 的效果,但在边界处往往会出现新的问题。
Zenbleed 开拓了“硬件”中软件安全漏洞的研究思路。我们相信,未来会有更多的“硬件”层面的软件问题出现,汽车、网络、存储等领域中引入软件定义所带来的安全问题同样不容小觑。
[1] https://lock.cmpxchg8b.com/zenbleed.html[2] https://github.com/google/security-research/tree/master/pocs/cpus/zenbleed[3] https://en.wikipedia.org/wiki/Tavis_Ormandy[4] https://lock.cmpxchg8b.com/reptar.html明日,请继续关注《深蓝洞察 | 2023 年度安全报告》第九篇。
文章来源: https://mp.weixin.qq.com/s?__biz=MzkyMjM5MTk3NQ==&mid=2247485526&idx=1&sn=316cfca21c48869e0100d71724b9955d&chksm=c1f44c9ef683c5886d170dc2831a116a08509487ce006a273f4d2699f36d60b1c5b02eb9d1ee&scene=58&subscene=0#rd
如有侵权请联系:admin#unsafe.sh