Alibaba Cloud Linux系统关闭CPU漏洞修复的方法

重要

本文中含有需要您注意的重要提示信息,忽略该信息可能对您的业务造成影响,请务必仔细阅读。

Alibaba Cloud Linux系统默认启用漏洞修复功能,但该功能可能对系统性能产生影响。您可以根据实际需要选择关闭漏洞修复。本文将介绍Alibaba Cloud Linux系统中存在的CPU漏洞、漏洞状态文件以及关闭漏洞修复的方法。

背景信息

201801月,Google Project Zero公布现代处理器存在安全漏洞SpectreMeltdown。攻击者通过这些漏洞窃取高特权级的数据,因而对系统安全存在严重威胁。这两组漏洞几乎涉及当今大部分主流处理器(包括Intel、AMD、ARM等多种架构),自公开以来便引发了广泛的讨论。不可避免地,阿里云相关产品也受到这些漏洞的影响。随后,包括Linux在内的主流操作系统都对漏洞进行了相应的软件修复。自201801SpectreMeltdown漏洞首次公布以来,新变种以及新类型的漏洞不断出现,因此可以预见,在未来相当一段时间内,这些漏洞的存在将成为常态。

重要
  • 由于漏洞利用处理器硬件的推测执行(Speculative Execution)以及乱序执行(Out-of-order Execution)特性,而这些特性对于现代处理器的性能提升具有不可或缺的作用,因此修复漏洞会有一定的性能回退。

  • 软件修复通常只能缓解,不能根治漏洞问题。

安全漏洞说明

下面分别介绍Alibaba Cloud Linux 2Alibaba Cloud Linux 3系统中的安全漏洞详情,以及如何通过启动命令行(boot cmdline)关闭安全漏洞修复。

Alibaba Cloud Linux 3

x86

CVE

漏洞状态文件所在路径

默认处理方式

关闭漏洞修复的方法

Spectre Variant 1(Bounds Check Bypass)

/sys/devices/system/cpu/vulnerabilities/spectre_v1

默认开启漏洞修复

强制开启,无法关闭

Spectre Variant 1(swapgs)

/sys/devices/system/cpu/vulnerabilities/spectre_v1

默认开启漏洞修复

添加nospectre_v1参数

Spectre Variant 2

/sys/devices/system/cpu/vulnerabilities/spectre_v2

默认开启漏洞修复

添加nospectre_v2参数

Spectre Variant 4(Speculative Store Bypass)

/sys/devices/system/cpu/vulnerabilities/spec_store_bypass

内核根据硬件特性自动开启漏洞修复

添加以下任意一个参数:

  • nospec_store_bypass_disable

  • spec_store_bypass_disable=off

Meltdown

/sys/devices/system/cpu/vulnerabilities/meltdown

默认开启漏洞修复

添加以下任意一个参数:

  • pti=off

  • nopti

L1TF

/sys/devices/system/cpu/vulnerabilities/l1tf

默认开启漏洞修复

添加l1tf=off参数

MDS

/sys/devices/system/cpu/vulnerabilities/mds

默认开启漏洞修复

须同时添加以下两个参数:

  • mds=off

  • tsx_async_abort=off

SRBDS

/sys/devices/system/cpu/vulnerabilities/srbds

默认由处理器微码修复

添加srbds=off参数

MMIO Stale Data

/sys/devices/system/cpu/vulnerabilities/mmio_stale_data

默认开启漏洞修复

须同时添加以下三个参数:

  • mmio_stale_data=off

    说明

    5.10.134-12及之后的内核版本支持。

  • mds=off

  • tsx_async_abort=off

TAA

/sys/devices/system/cpu/vulnerabilities/tsx_async_abort

默认开启漏洞修复

须同时添加以下两个参数:

  • tsx_async_abort=off

  • mds=off

RETBleed

/sys/devices/system/cpu/vulnerabilities/retbleed

默认开启漏洞修复

添加retbleed=off参数

说明

5.10.134-12及之后的内核版本支持。

不涉及

不涉及

不涉及

添加mitigations=off参数关闭所有漏洞修复

ARM64

CVE

漏洞状态文件所在路径

默认处理方式

关闭漏洞修复的方法

Spectre Variant 1(Bounds Check Bypass)

/sys/devices/system/cpu/vulnerabilities/spectre_v1

默认开启漏洞修复

强制开启,无法关闭

Spectre Variant 2

/sys/devices/system/cpu/vulnerabilities/spectre_v2

默认开启漏洞修复

添加nospectre_v2参数。具体操作,请参见关闭漏洞修复

Spectre Variant 2 (BHB)

/sys/devices/system/cpu/vulnerabilities/spectre_v2

默认开启漏洞修复

添加nospectre_bhb参数

说明

5.10.134-12及之后的内核版本支持。

Spectre Variant 4(Speculative Store Bypass)

/sys/devices/system/cpu/vulnerabilities/spec_store_bypass

默认开启漏洞修复

添加ssbd=force-off参数

Meltdown

/sys/devices/system/cpu/vulnerabilities/meltdown

默认开启漏洞修复

添加kpti=0参数

不涉及

不涉及

不涉及

添加mitigations=off参数关闭所有漏洞修复

Alibaba Cloud Linux 2

CVE

漏洞状态文件所在路径

默认处理方式

关闭漏洞修复的方法

Spectre Variant 1(Bounds Check Bypass)

/sys/devices/system/cpu/vulnerabilities/spectre_v1

默认开启漏洞修复

强制开启,无法关闭

Spectre Variant 1(swapgs)

/sys/devices/system/cpu/vulnerabilities/spectre_v1

默认开启漏洞修复

nospectre_v1=off

说明

4.19.57-15.al7及之后的内核版本支持。

Spectre Variant 2

/sys/devices/system/cpu/vulnerabilities/spectre_v2

默认开启漏洞修复(spectre_v2=auto)

添加以下任意一个参数:

  • nospectre_v2

  • spectre_v2=off

说明

4.19.43-13.al7及之后的内核版本支持。

Spectre Variant 4(Speculative Store Bypass)

/sys/devices/system/cpu/vulnerabilities/spec_store_bypass

若处理器支持Speculative Store Bypass Disable特性,则开启修复,否则不开启任何修复。 (spec_store_bypass_disable=auto)

添加以下任意一个参数:

  • spec_store_bypass_disable=off

  • nospec_store_bypass_disable

说明

4.19.43-13.al7及之后的内核版本支持。

Meltdown

/sys/devices/system/cpu/vulnerabilities/meltdown

默认开启漏洞修复

添加以下任意一个参数:

  • pti=off

  • nopti

说明

4.19.43-13.al7及之后的内核版本支持。

L1TF

/sys/devices/system/cpu/vulnerabilities/l1tf

Guest Kernel中只开启PTE Inversion修复

l1tf=off

说明

4.19.43-13.al7及之后的内核版本支持。

MDS

/sys/devices/system/cpu/vulnerabilities/mds

默认开启漏洞修复

mds=off

说明

4.19.43-13.al7及之后的内核版本支持。

不涉及

不涉及

不涉及

添加mitigations=off参数关闭所有漏洞修复

说明

漏洞状态文件表示Alibaba Cloud Linux系统所在实例的CPU是否存在漏洞以及采取的处理措施,各状态表示:

  • Not affected:表示当前CPU不存在该漏洞。

  • Vulnerable:表示当前CPU存在该漏洞,没有采取任何缓解措施(关闭漏洞修复)。

  • Mitigation:表示当前CPU存在该漏洞,采取了相应缓解措施(开启漏洞修复)。

关闭漏洞修复

以在Alibaba Cloud Linux 3系统中关闭spectre_v2漏洞修复为例。

  1. 执行以下命令,将nospectre_v2参数添加到默认内核的boot cmdline中,以关闭安全漏洞修复功能。

    sudo grubby --update-kernel=`sudo grubby --default-kernel` --args='nospectre_v2'
  2. 执行以下命令,重启实例使配置生效。

    警告

    重启实例将导致您的实例暂停运行,这可能引发业务中断和数据丢失。因此,建议您在执行此操作之前备份关键数据,并选择在非业务高峰期进行。

    sudo reboot
  3. 执行以下命令,查看漏洞状态文件,确认漏洞修复是否关闭。

    cd /sys/devices/system/cpu/vulnerabilities/
    for i in `ls`;do echo -n $i": ";cat $i;done

    如下图所示,spectre_v2: Vulnerable表示当前CPUspectre_v2漏洞修复已关闭。

    image.png