剧透:英特尔CPU再曝漏洞
研究人员又发现了一种滥用英特尔CPU预测执行功能的方法,运行进程中的秘密和其他数据均难逃该计算风险困扰。
该安全漏洞利用方式多样,浏览器页面中的恶意JavaScript、系统上运行的恶意软件,或者恶意登入用户,都可以利用该漏洞从内存中抽取口令、密钥和其他数据。攻击者需先在目标主机中拥有某种形式的据点才能执行该漏洞利用操作。除非重新设计芯片,否则该漏洞无法修复或缓解。
预测执行即处理器在等待其他计算任务完成期间执行未来可能或可能不会用到的任务,该功能也是去年年初曝出的幽灵漏洞的成因。
本月在预发布服务ArXiv上发表的研究论文《剧透(SPOILER):预测载入危害加重Rowhammer和缓存攻击》中,美国伍斯特理工学院和德国吕贝克大学的计算机科学家描述了滥用该性能提升功能的新方法。
研究人员发现,英特尔内存子系统专有实现中地址猜测功能里的一个漏洞可致内存布局数据泄露,令Rowhammer之类攻击更容易展开。
研究人员还检查了Arm和AMD处理器,但并未发现相同行为。
我们发现了一个全新的微架构泄露,能揭示用户空间进程的物理页面映射。有几条指令可以利用该漏洞,这些指令存在于所有英特尔处理器中,从第一代Core处理器开始,且与操作系统无关,甚至虚拟机和沙箱环境中都有效。
该问题独立于幽灵漏洞,现有的缓解措施都无法解决。用户空间中无需提权即可利用该漏洞。
“剧透(SPOILER)”这个名称不代表什么。研究人员只是挑了个以“Sp”开头的名字,因为这是个因预测执行( speculative execution )而起的漏洞,且某种程度上破坏了现代CPU上的安全假设。
“剧透”描述了一种识别虚拟内存和物理内存之间关系的方法:计量预测加载和存储操作的耗时,找出揭示内存布局的差异。
该问题的根源在于内存操作的预测性执行和处理器在完整物理地址位可用时解析该依赖。物理地址位是安全敏感信息,如果对用户空间可用,将会提升用户权限,使其能执行其他微架构攻击。
疯狂的内存
现代处理器用内存顺序缓冲区管理RAM读写操作。该缓冲区被用于执行存储指令和加载操作。从CPU寄存器拷贝数据到主内存的存储指令按照可执行代码中排列的顺序执行。从主内存拷贝数据到寄存器的加载操作则是预测性乱序执行。这么做可使处理器预先执行,推测性地将信息从RAM中提取到寄存器中——如果其中不涉及依赖问题的话,比如某加载操作依赖之前未完成的存储指令。
如果物理地址信息不可用,预测加载操作可能导致错误的依赖。英特尔芯片执行内存消歧以防止对来自不准确预测的无效数据进行计算。
只是,内存消歧的功效没有想象中好。论文中写道:‘剧透’的根源是英特尔内存子系统专有实现中地址预测上的缺陷,因为物理地址冲突,该预测会直接泄露时序行为。
我们的算法用偏移量相同但处在不同虚拟页的地址填充处理器的存储缓冲区。然后我们发出偏移量相同但取自不同内存页的内存加载指令,计量加载耗时。通过在大量虚拟页面上进行迭代,计时可以揭示多个阶段的依赖解析失败信息。
研究人员称,“剧透”漏洞将使现有Rowhammer和缓存攻击更加容易,让基于JavaScript的攻击更可行——Rowhammer不再需要耗费数周时间,而是几秒即可。论文描述了一种基于JavaScript的缓存“预取+探测”(prime+probe)技术,该技术鼠标一点即可泄露防不住缓存计时攻击的私密数据和加密密钥。
对付这种攻击的缓解措施可能不太容易实现。软件缓解方法无法完全消除该问题。芯片架构修复或许有用,但会出现性能损失。
据称,英特尔在2018年12月1日就接到了该漏洞报告。该芯片制造商并未即时回应评论请求。漏洞披露论文是负责人在披露间隔期后才发布的。
研究人员怀疑英特尔是否有可行的应对之策。
一旦涉及内存子系统,任何改变都很艰难,这不是什么用一条微代码就能修复的事,性能损耗会十分巨大。针对此类攻击的补丁可能5年内都出不来。或许这就是该漏洞还没纳入CVE的原因。
来自英特尔的迟缓回应
漏洞消息公布后,英特尔发言人向媒体表示,期待未来会出现可防御“剧透”攻击的应用,或者开发出硬件防护措施:
英特尔收到了该研究通告,我们认为软件可通过采用边信道安全开发实践来防止此类问题。具体方法包括避免控制流依赖相关数据。我们还认为,抗Rowhammer类攻击的DRAM模块也对该攻击免疫。保护我们的客户及其数据一直是英特尔的重中之重,我们非常感谢安全社区持续不断的研究工作。
研究论文:
https://arxiv.org/pdf/1903.00446.pdf