近日,Intel 被暴其近十年来生产的 Intel 芯片都存在严重漏洞,即使修复该漏洞,CPU 性能也会有 5%-30% 的明显下降。
该漏洞的具体细节还未披露,但是根据分析,可以判定漏洞为“内核内存泄漏”,它使得用户态程序可以在一定程度上探测出系统内核内存区域的布局或具体信息。目前来看微指令更新无法解决该问题,需要从硬件层面进行整改,这也迫使 Linux 与 Windows 内核进行重新设计。
最近几周,开发人员对 Linux 内核的虚拟内存子系统进行了重大修改,使用内核页面表隔离(Kernel Page Table Isolation,KPTI)机制将内核的内存与用户进程完全分开。虽然 Linux 官方没有承认,但是这被认为就是对此次 Intel 漏洞进行的暂缓修复方案。
通常来说,Linux 内核部分较大的更新需要经过数月甚至数年的讨论,然而此次 Linux 内核更新显得很急促,并且,这些改动不仅内嵌在即将到来的 Linux 内核 4.15 版本中,而且还被反向移植到已经发布了的内核 4.9 和 4.14 中。
而微软从 11 月份开始也已经在悄悄地进行类似的系统修复工作,并且据预测,在下周二微软即将发布的系统更新中,将会公布该漏洞的具体细节。
类似的操作系统,如苹果的 macOS,也将需要做出更新,因为这个缺陷发生在 Intel x86-64 硬件上,只要使用了该芯片,问题就存在。相反,AMD 声明使用其芯片的机器无需担忧。
而分析称,想要完全解决该问题,需要从硬件层面去入手,目前的 KPTI 只是暂缓解决方案。
相比个人计算机受到的威胁,该漏洞的另一个更重大的影响体现在云服务提供商上,它使得恶意软件在共享的公共云服务器上,可以从某个主机的虚拟机上读写另一个虚拟机上受内核保护的敏感信息。
有工程师近日发表了一篇文章称,Intel 这个漏洞将会影响包括 Amazon EC2、Microsoft Azure 和 Google Compute Engine 在内的大牌云计算环境。运行大量 Linux 和 Windows 的 Microsoft Azure 将在 1 月 10 日进行重启维护,而亚马逊也通过电子邮件警告用户“本周五将有重大安全更新发布”,似乎都是在对该漏洞进行应急处理。
根据目前已经了解到的对该漏洞的修复方案 KPTI 的分析,专家称其将引起 Intel 机器 5% 至 30% 的性能下降。
当程序需要执行操作,如写入文件时,需要暂时将 CPU 的控制权交给内核。为了高效地从用户态切换到内核态,并在操作结束后回到用户态,内核会存在于所有进程的虚拟内存地址空间中;也就是将整个内核存储区域映射在分页表上,在程序执行过程中内核的分页表一直处于可用状态,这可以避免大量的上下文切换开销。
而 KPTI 机制阻止了这一“便捷性”,它将内核移到了一个完全独立的地址空间,使得每次系统调用和硬件中断时,在内存地址之间的切换变得很耗时,因为它需要强制 CPU 转储缓存数据并从内存中重新加载相关信息。
简单点说,这个机制增加了内核的开销,并减慢了你计算机的速度。
随着互联网业务的飞速发展,系统动辄要支持亿级流量压力,架构设计不断面临新的挑战。海量系统设计、容灾、健壮性,架构师要考虑多方面的需求做出权衡。不如来听听国内外知名互联网公司的架构师分享架构设计背后的挑战与问题解决之道。
QCon 北京 2018 目前 8 折报名中,立减 1360 元,有任何问题欢迎咨询购票经理 Hanna,电话:15110019061,微信:qcon-0410。