Lazy FPU Save/Restore (CVE-2018-3665)
Environment
- Red Hat Enterprise Linux 5
- Red Hat Enterprise Linux 6
- Red Hat Enterprise Linux 7
Issue
红帽已了解到一个安全问题 - 运行在常用现代处理器(x86)上的操作系统和虚拟机,在切换应用程序进程的上下文时,可能会使用 “lazy restore” 的方式处理浮点状态,而不是使用 “eagerly” 的方式来保存和恢复浮点状态。一个攻击者可以利用这个浮点状态处理方式获得其它应用程序(包括已加密操作)的信息。这个安全漏洞会影响到 CPU 的预测执行(speculative execution)机制,它与其它当前发现的侧通道(side channel)安全漏洞类似。这个最新发现的安全漏洞已被记录为 CVE-2018-3665。红帽产品安全团队把这个安全漏洞的严重性级别设定为 Moderate(中度)。
Resolution
RHEL-7 缓解措施
- RHEL-7 会在 Sandy Bridge 和更新的 Intel 处理器上默认使用 “eager” 方式(安全方式)处理浮点寄存器恢复操作,因此这个安全漏洞不会影响到这些处理器。AMD 处理器也不会受到影响。
- 如果使用较老的处理器,可以在引导内核时使用 eagerfpu=on 参数来启用 “eager” FPU 恢复模式。在使用这个模式时,无论当前的进程是否调用 FPU 指令,在每次处理任务/上下文切换时,FPU 的状态都会被保存和恢复。引导内核时使用这个参数不会对性能造成影响,也不会影响到不存在这个安全漏洞的处理器。
RHEL 6 和更早的版本会受到这个 CVE 的影响,而且无法使用 eagerfpu 参数。红帽将会发布相应的更新来解决这个问题。
Root Cause
“Lazy” 保存和恢复 FPU/SSE/AVX 状态:
现代处理器会使用不同的技术来提高系统性能。其中的一个就是,在进行任务切换时延迟保存和恢复特定 CPU 的上下文状态。处理器现在一般都会带有专门的浮点单元(Floating Point Unit,简称 FPU)来处理高精度的浮点操作(科学计算、工程计算以及图形应用程序都需要这类浮点操作)。FPU 会在数据寄存器、状态寄存器、控制寄存器和 opcode 寄存器中维护它自己的上下文状态。
当用户应用程序调用一个内核功能,或当一个进程被清空来调度队列中的下一个任务时,就会发生任务/上下文切换操作。当进行任务切换时,处理器会保存它当前的执行上下文(各种寄存器、指令和堆栈指针等),并加载新进程的上下文。在出现以上情况时,因为并不是所有的应用程序都会使用 FPU,所以处理器可能会延迟恢复 FPU/SSE 的上下文状态。如果新调度的进程不使用 Floating-Point (FP) 指令,则不需要保存/恢复 FPU 的上下文状态。这样做可以节省执行周期并提高性能。
在使用“lazy restore”机制时,当任务切换发生时,一个进程执行的第一个 FP 指令会产生一个 “Device not Available (DNA)” 异常,DNA 异常处理程序会把当前 FPU 的上下文保护到旧任务的状态保存区域中,并为当前进程加载新的 FPU 上下文。这也可以被理解为,加载 FPU 状态的行为会被延迟进行,直到当前的任务调用了一个 FP 指令。这就是所谓的 Lazy FPU restore。
当前的处理器都会包括一个处理器扩展 (“XSAVEOPT”),它会更高效地在硬件中实现 FPU 恢复功能,在不需要依赖 DNA 异常的情况下获得 lazy FPU 所带来的性能优势。在这些处理器中,Red Hat Enterprise Linux 7 已使用了 eager FPU 恢复机制,因此不存在这里所介绍的安全漏洞。在实际操作中,FPU 寄存器通常会使用块内存复制以及字符串操作,因此,即使在老的处理器中, lazy FPU restore 机制通常也不会带来实际的性能提高。
影响
一个新调度的任务有可能利用这里所介绍的安全漏洞访问到其它任务的浮点寄存器状态数据,从而可能会导致敏感数据泄漏的问题。
This solution is part of Red Hat’s fast-track publication program, providing a huge library of solutions that Red Hat engineers have created while supporting our customers. To give you the knowledge you need the instant it becomes available, these articles may be presented in a raw and unedited form.
Comments