每个人都或多或少有过被梦境影响情绪和行为的经历。然而,在别人做梦的时候给他们灌输一个想法,让他们醒来后做一些具体的事情,这仍然是科幻小说的内容。在2010年的电影《盗梦空间》(Inception)中,Leonardo di Caprio饰演的角色试图让一位富商的继承人瓦解他父亲的帝国。为了做到这一点,他与继承人分享了一个梦想,在这个梦想中,通过巧妙的操纵,继承人对父亲的信念被微妙地改变了,导致他放弃了已故父亲的生意。
虽然在现实中分享梦境和植入这样的想法是不可能的,但最近在计算机世界中实现了非常相似的事情。由Zurich联邦理工学院信息技术与工程系教授Kaveh Razavi领导的一组研究人员已经证明了某些CPU(中央处理器)的严重漏洞,攻击者可以在受害者的CPU中植入相当于一个想法的东西,诱使它执行某些命令,从而检索信息。Razavi和他的同事在本周的USENIX Security 2023会议上展示了他们的研究。
虽然Razavi的研究论文中包含了让人想起 James Bond和灾难电影的名字——“Spectre”和“Meltdown”,但它的大部分内容都是复杂的计算机科学。
“事实上,就像同名电影一样,Inception 的攻击特别复杂,很难解释,”Daniël Trujillo说。
“不过,”Wikner补充道,“所有这些攻击的关键问题都相当简单——即,计算机的CPU必须一直进行猜测,而这些猜测是可以被篡改的。”
在现代计算机中,猜测是必要的,因为在程序执行过程中,比如在游戏或网页浏览器中,CPU每秒必须作出数亿个决定。在执行过程中的某些时刻,后续的命令可能依赖于从计算机内存中检索的某些信息。近年来,CPU的速度变得非常快,但数据从内存(DRAM)传输到CPU的速度却无法跟上这种速度。因此,CPU必须花费大量时间等待新数据才能作出决定。
这就是猜测的作用所在:根据过去的经验,CPU创建一种查询表,并使用它来猜测最有可能的下一步,然后执行。在绝大多数情况下,CPU是正确的,从而节省了大量宝贵的计算时间。但是,它偶尔会做出错误的猜测,攻击者可以利用这种错误的预测来访问敏感信息。
“Spectre攻击是基于这种错误预测的,”Razavi说道,“但最初似乎制造商已经找到了减轻它的方法。” 实际上,芯片制造商已经提供了一些功能,用于在安全上下文之间切换(也就是在访问计算机的敏感内核时)部分删除查找表,或者添加一些信息,告诉CPU查找表中的预测是否在内核中创建,以及是否可以信任。
尽管如此,Razavi和他的同事们还是开始测试,即有了新的安全措施,袭击是否还能发动。经过长时间的搜索,他们偶然发现了一些奇怪的事情:“看起来我们可以让AMD生产的CPU相信它们以前看到过某些没有看过的指令,”Trujillo说。就像在电影中一样,研究人员可以在CPU做梦的时候向它植入一个想法。
因此,CPU以前的指令不断创建的查找表可能再次被操纵。由于CPU相信查找表中的条目来自它之前看过的指令,所以用来确保仅考虑可信预测的安全功能被绕过了。通过这种方式,ETH的研究人员能够从计算机内存中的任何位置泄露数据,包括敏感信息。
当然,这是一个非常严重的安全漏洞,所以Razavi在2月份通知AMD,以确保他们有时间在研究论文发表之前拿出一个补丁(AMD为该漏洞分配了编号CVE-2023-20569)。
“我们展示了这一类新的危险攻击概念,这与云计算尤其相关,因为在云计算中,多个客户共享相同的硬件。”Razavi 说“这也为未来提出了问题。”例如,他想弄清是否还有其他类似的攻击,以及其他制造商的 CPU 是否也可能受到类似“Inception ”的攻击。