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

Alibaba Cloud Linux 3系统默认开启漏洞修复,但是漏洞修复会对系统有性能方面的影响,您可以根据实际需要选择关闭漏洞修复。本文主要介绍Alibaba Cloud Linux 3系统中存在的CPU漏洞、漏洞状态文件、关闭漏洞修复的方法等。

背景信息

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

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

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

安全漏洞介绍

Alibaba Cloud Linux 3系统支持x86处理器与arm64处理器,这两类处理器在CPU安全漏洞的处理上有一定区别,下面分别介绍Alibaba Cloud Linux 3系统中x86与arm64的安全漏洞详情,以及如何通过启动命令行(boot cmdline)关闭安全漏洞修复。

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 3系统所在实例的CPU是否存在漏洞以及采取的处理措施,各状态表示:

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

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

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

操作步骤

以下步骤以关闭spectre_v2漏洞修复为例,介绍如何关闭Alibaba Cloud Linux 3系统的安全漏洞修复。

  1. 远程连接Alibaba Cloud Linux 3所在的ECS实例。

    具体操作,请参见通过密码或密钥认证登录Linux实例

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

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

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

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

    如下图所示,spectre_v2: Vulnerable表示当前CPU存在spectre_v2漏洞,没有采取相应缓解措施,即漏洞修复已关闭。

    image.png