谷歌安全研究人员已经分析了导致数据泄露的Spectre漏洞对现今浏览器内核造成的影响,得出的结论是无法依靠单一软件阻止漏洞被利用。另一家厂商表明他们可以构建一个被称为通用小工具的程序利用系统中存在的预测功能缺陷,通用小工具允许攻击者在线程中运行代码,用于读取同地址空间中的所有内存。
例如,在Web浏览器线程中执行的恶意代码可能会对运行在同进程中另一个线程内的JavaScript进行重新编码,并从该页面窃取机密数据。上述问题在浏览器中已经有了一些新解决方法,比如场地隔离使其在单独进程中保持一致,这限制了恶意JavaScript窥探内容。至少,火狐、IE和Edge阻止使用新对象SharedArrayBuffer,它可以被利用来执行更高的性能。但是,对于所有浏览器和其他应用程序解释攻击者提供的代码来说,仍存在潜在的威胁。进程中基于语言和类似的安全措施不能停止;使用基于硬件的隔离,可通过各自的虚拟地址空间和硬件执行的列表来实现。
威胁亦或是炒作?
由于攻击者与其他用户提供的代码在同一地址空间中解释的情况并不多,因此主要考虑网络浏览器:谷歌研究主要是学术性的,而绝非毫无根据的内容。但是,若团队正在开发的是基于云环境的外部代码,客户们的线程共享相同进程,这就非常值得注意。
研究人员在标题为“幽灵所到之处:针对旁路和预测性行为的研究”中提到:
我们现在认为,今天的硬件上的预测性漏洞会破坏所有语言强制的机密性,而目前已知软件没有能够解决面临的困境,因为我们发现不受信任的代码可以构建一个通用小工具,通过旁路读取同一地址空间中的所有内存。
2018年1月幽灵被首次报道之后不久,密歇根大学计算机科学教授助理丹尼尔·格金(Daniel Genkin)也曾表示:
我们目前还没有找到有效的对策来消除幽灵,这将成为硬件无法重新设计的根本原因。
顾名思义,幽灵是涉及利用预测执行功能的。这是现代处理器的一个特征,它猜测程序的未来路径,并在处理器忙于其他任务时完成估算。如若猜到了正确的路径,则保留计算,从而节省时间并加快代码执行。但正如幽灵的缺陷所表明的那样,未来该功能可能被滥用。
有几种幽灵变种,但基本问题是芯片设计师交换安全性换取速度所引发的。研究人员观察到:研究时的心理预期模型是有误的;一直以来他们在用安全换取性能和复杂性,却忘记了这一点。幽灵变种4:预测性混乱,谷歌研究人员至今未找到的相应软件解决方案。研究人员甚至表示:变种4使他们能想到的每条对策都变得毫无意义。
最初,软件和硬件制造商推动修复。浏览器制造商谷歌降低时序数据的可访问性,让预测性攻击变得更加困难。但这似乎是徒劳的。
我们认为,通过操纵计时器来减少计时通道是不可能实现的,无论如何最终都会弄巧成拙。
谷歌在公司Chrome浏览器的JavaScript虚拟机中增加了对 “反代码” 的防御功能,并发现性能上的损失十分令人失望,因为它们减缓了速度而没有真正解决问题。
这些产品中没有提供针对幽灵的全面防护,因此减缓空间存储是种无奈之下的防护权衡方案。
这就是为什么谷歌将其浏览器安全中心转移到上述场地隔离的原因。但是,改善方案也必须来自硬件,其形式是更好的进程隔离。英特尔于2018年3月公布了部分潜在漏洞的硬件修复程序,但它声称幽灵变种1“将继续通过软件解决”,现在看起来这相当值得怀疑。
2018年1月关于幽灵相关报道地址:
https://www.theregister.co.uk/2018/01/04/intel_amd_arm_cpu_vulnerability/