Warning message

This translation is outdated. For the most up-to-date information, please refer to the English version.

POP SS debug 异常 - CVE-2018-8897 [Moderate] & CVE-2018-1087 [Important]

Public Date: May 8, 2018, 12:00 am
Updated -
Ongoing Status
Important Impact

红帽已了解到,在 Linux 内核处理由 POP SS 和 MOV SS 指令触发的异常时存在一个漏洞。这个问题可能会导致在没有应用相关补丁程序的系统上发生 DoS(拒绝服务)。

这些指令会停止提供中断、数据断点、单步的 trap 异常,直到这个指令到下一个指令的界线。这个问题被划分为针对 Linux 内核的问题,以及针对 KVM 的问题。

背景信息

现代的处理器都会提供 debug 的机制,系统设计人员和应用程序开发人员可以使用它来对软件进行故障诊断。这个机制会包括一组 debug 寄存器 (DR0...DR7),以及其它的 MSR(Machine Specific Registers)。用户可以配置这些寄存器来监控包括内存访问(读或写)、指令执行和 I/O 端口访问等事件。当在程序执行时发现这类事件时,处理器会发出一个 Debug Exception (#DB),从而把执行控制移交给 debug 软件(如 gdb)。这可以捕获 debug 异常信息,从而使开发人员可以检查程序的执行状态。例如,为了检测对地址 ‘0x4007c7’ 的内存访问,用户可以把地址 ‘0x4007c7’ 保存在 DR0...DR3 的一个 debug 寄存器中,当程序执行时,如果内存地址 ‘0x4007c7’ 被访问,处理器就可以产生一个 #DB。debug 寄存器中的这些地址被称为断点(Breakpoint)。

        Mov %DR0, 0x4007c7

通常情况下,异常会在指令的边界中产生,导致异常的指令以前的所有其它指令都允许完成运行,而导致异常的指令会被停止运行,直到异常被处理后再恢复运行。在一些情况下,指令会导致一个任务切换或堆栈切换,这些异常会在指令执行后出现,而导致出现异常的指令可以完成运行,如 MOV SS 和 POP SS。

致谢

红帽非常感谢 Everdox Tech LLC 的 Nick Peterson 报告了 CVE-2018-8897
红帽同时感谢 Andy Lutomirski 报告了 CVE-2018-1087

受影响的产品

红帽产品安全团队已将内核问题(CVE-2018-8897)的安全影响级别定为 Moderate(中度)

红帽产品安全团队已将 KVM 问题(CVE-2018-1087)的安全影响级别定为 Important(重要)

以下红帽产品版本会受影响:

  • Red Hat Enterprise Linux 5
  • Red Hat Enterprise Linux 6
  • Red Hat Enterprise Linux 7
  • Red Hat Enterprise Linux Atomic Host
  • Red Hat Enterprise MRG 2

安全攻击介绍

典型的堆栈切换包括两个操作:一个是加载堆栈端选择器(SS)寄存器,另一个是设置堆栈指针寄存器(RSP)。例如:

        Mov SS, [RAX]
        Mov RSP, RBP

当通过 MOV SS (OR POP SS) 指令进行堆栈切换时,处理器会停止提供所有中断和诊断异常(#DB)。这是因为,如果一个异常发生在 SS(Segment Selector)寄存器已加载,而 RSP(Stack Pointer (RSP) )寄存器还没有被正确分配地址时,中断处理器会看到一个无效的堆栈状态。因此,当执行堆栈切换时,处理器会在第一个指令后提供待处理的中断和诊断异常。

现在假设,在堆栈切换过程中,一个断点(Breakpoint)被设置在内核位置([RAX] 上面),它可以被 Mov SS 指令访问。这个断点将会在堆栈切换后产生一个断点异常(#BP)。现在,如果堆栈切换后的第一个指令是一个改变当前权限级别(CPL < 3)的指令,如 SYSCALL、SYSENTER 或 INT3 等,则以上被延迟的断点异常(#BP)会被提供到内核空间,因此就可能实现潜在的权限升级。

对于 Linux 内核的 KVM hypervisor,在堆栈切换操作中,处理器不会提供中断和异常,它们会在堆栈切换执行后的第一个指令中被提供。一个没有相关权限的 KVM 客户机的用户就有可能利用这个漏洞,升级他们在客户机上的权限。


检查您的系统是否存在这个安全漏洞 - 待续

检查您的系统是否存在这个安全漏洞。使用检测脚本来检测您的系统当前是否存在这个安全问题。要检查脚本的真实性,请同时下载它的 GPG 签名。

需要采取的行动

我们强烈推荐,所有运行受影响产品版本的红帽用户,在相关补丁程序发布时尽快进行更新。受影响的用户请马上进行相关的更新。


受影响产品的更新

产品软件包公告/更新
Red Hat Enterprise Linux 7 (z-stream)kernelRHSA-2018: 1318
Red Hat Enterprise Linux 7kernel-rtRHSA-2018: 1355
Red Hat Enterprise Linux 7.4 Extended Update Support**kernelRHSA-2018: 1345
Red Hat Enterprise Linux 7.3 Extended Update Support**kernelRHSA-2018: 1348
Red Hat Enterprise Linux 7.2 Update Services for SAP Solutions, & Advanced Update Support***,****kernelRHSA-2018: 1347
Red Hat Enterprise Linux 6 (z-stream)kernelRHSA-2018: 1319
Red Hat Enterprise Linux 6.7 Extended Update Support**kernelRHSA-2018: 1346
Red Hat Enterprise Linux 6.6 Advanced Update Support***,****kernelRHSA-2018: 1351
Red Hat Enterprise Linux 6.5 Advanced Update Support***kernelRHSA-2018: 1350
Red Hat Enterprise Linux 6.4 Advanced Update Support***kernelRHSA-2018: 1349
Red Hat Enterprise Linux 5 Extended Lifecycle Support*kernelRHSA-2018: 1353
Red Hat Enterprise Linux 5.9 Advanced Update Support***kernelRHSA-2018: 1352
RHEL Atomic Hostkernel待定
Red Hat Enterprise MRG 2kernel-rtRHSA-2018: 1354


*需要一个有效的 ELS 订阅才可以访问这个补丁程序。如果您的账户中不包括有效的 ELS 订阅,请联系红帽的销售人员或您的销售代表。

**需要一个有效的 EUS 订阅才可以访问这个补丁程序。如果您的账户中不包括有效的 EUS 订阅,请联系红帽的销售人员或您的销售代表。

什么是 Red Hat Enterprise Linux Extended Update Support 订阅?

***需要一个有效的 AUS 订阅才可以访问 RHEL AUS 中的这个补丁程序。

什么是 Advanced mission critical Update Support (AUS)?

****需要一个有效的 TUS 订阅才可以访问 RHEL TUS 中的这个补丁程序。


虽然红帽的 Linux Container 不会直接受到内核问题的影响,但它们的安全性取决于主机内核环境的安全性。红帽建议您使用最新版本的容器镜像。Red Hat Container Catalog 所提供的 Container Health Index 可以用来验证红帽容器的安全状态。为了保护使用中的容器,您需要确保容器主机已针对这个安全漏洞进行了更新。红帽已针对这个安全问题发布了一个更新的 Atomic Host 版本。

补救方案

除了应用厂商提供的软件更新外,当前没有其它补救方案 。