# 针对Intel处理器芯片存在的Meltdown和Spectre安全漏洞，应该如何规避？
#### 问题描述
北京时间1月3日，Intel处理器芯片被曝出存在严重的Meltdown和Spectre安全漏洞，漏洞详情如下：
漏洞名称：Intel处理器存在严重芯片级漏洞
漏洞编号：CVE-2017-5753、CVE-2017-5715、CVE-2017-5754
严重程度：高危
漏洞描述：CPU内核高危漏洞Meltdown（CVE-2017-5754）和Spectre（CVE-2017-5715/CVE-2017-5753）爆发，攻击者可利用这两组漏洞，绕过内存安全隔离机制，越权访问操作系统和其他程序的核心数据，造成敏感信息泄露。
#### 问题影响
该漏洞不会引起不同弹性云服务器之间的攻击，但可能会引起如下问题：
- 弹性云服务器内多个应用之间，可能存在攻击。
- 对于同一弹性云服务器，多个账号之间可能存在攻击。
使用公共镜像的弹性云服务器，云平台会对公共镜像依次修复，不会对您的业务带来影响。
使用私有镜像的弹性云服务器，请根据漏洞影响评估是否更新补丁，以规避风险，更新补丁的具体操作请参见本节内容。
 #### 背景知识
受影响的操作系统官方补丁发布状态，请参见[华为云安全公告](https://www.huaweicloud.com/notice.securecenter.html)。
#### 前提条件
为避免发生意外，修复漏洞前，建议进行充分测试，并完成弹性云服务器的数据备份操作，避免发生意外。
#### Windows弹性云服务器处理方法
1. 登录弹性云服务器。
2. 更新补丁。 
   - 方式一：使用Windows自动更新功能安装补丁
     1. 打开Windows Update，并单击"检查更新"。
     
     2. 根据需要下载安装相关安全补丁。
      
   
   - 方式二：手动下载补丁并安装 根据[背景知识]，下载官方发布的补丁并进行安装。
     
   
   
   
   
3. 重启弹性云服务器，使补丁生效。
4. 验证是否升级成功。 
   1. 检查系统运行情况是否正常。
   
   2. 检查已安装的补丁清单是否满足[背景知识]中"验证方法"的要求。
   
   
   
   
 
#### Linux弹性云服务器处理方法
1. 登录弹性云服务器。
2. 判断Linux弹性云服务器是否安装了Tools（以操作系统SUSE 11 SP1为例）。 
   1. 在任意目录下执行以下命令，查询弹性云服务器的驱动信息，如[图1]所示。
      **lsmod \| grep xen**
      图1查询驱动信息   
      ![](https://support.huaweicloud.com/ecs_faq/zh-cn_image_0092144573.jpg "点击放大") 
   
   2. 执行以下命令，查询驱动路径（以磁盘驱动为例），如[图2]所示。
      **modinfo xen_vbd**
      图2查询驱动路径   
      ![](https://support.huaweicloud.com/ecs_faq/zh-cn_image_0092144576.jpg "点击放大") 
   
   3. 查看回显，根据驱动路径中是否带有"pvdriver"字段信息，判断弹性云服务器是否安装了Tools。
      - 是，如[图2]所示，执行[3]。
      
      - 否，执行[4]。
       
   
   
   
   
3. 卸载Tools。
   
   1. 执行以下命令，切换至root用户。 **su root**
      
   
   2. 执行以下命令，在根目录下卸载Tools。 **/etc/.uvp-monitor/uninstall**
      
   
   3. 执行以下命令，重启弹性云服务器。 **reboot**
      
   
   
   
   
4. 更新补丁，升级kernel内核，具体升级方式请参见[背景知识]。
   
   ![](https://support.huaweicloud.com/ecs_faq/public_sys-resources/note_3.0-zh-cn.png)
   升级kernel内核后，请务必执行reboot命令重启弹性云服务器。
   
   
5. 验证是否升级成功。 
   1. 检查系统运行情况是否正常。
   
   2. 检查已安装的补丁清单是否满足[背景知识]中"验证方法"的要求。
   
   
   ![](https://support.huaweicloud.com/ecs_faq/public_sys-resources/note_3.0-zh-cn.png)
   补丁更新后，弹性云服务器使用的驱动是由操作系统自带。此时，Linux弹性云服务器不再支持监控指标：内存使用率、磁盘使用率，对其他特性和功能无影响。如需继续支持监控指标内存使用率、磁盘使用率，请联系客服。
   
   
 
#### 检测Linux操作系统安全漏洞是否已修复完成
1. 单击[spectre-meltdown-checker](https://github.com/speed47/spectre-meltdown-checker?spm=a2c4g.11186623.2.18.42b49d4aFDHYcV)获取spectre-meltdown-checker.sh检测脚本。
2. 将步骤[1]获取的脚本上传至云服务器。
3. 在云服务器执行以下命令，并根据脚本提示判断Meltdown或Spectre漏洞是否已经修复。 **chmod +x spectre-meltdown-checker.sh**
   **sudo bash spectre-meltdown-checker.sh**
   回显信息如[图3]所示。
   图3执行脚本后的回显信息   
   ![](https://support.huaweicloud.com/ecs_faq/zh-cn_image_0167823737.png "点击放大")
   OK为已修复漏洞，KO为未修复，如[图3]所示代表CVE-2017-5753、CVE-2017-5715、CVE-2017-5754漏洞均已修复。
   
 
#### 打开或关闭Linux操作系统的安全漏洞补丁开关
CPU的预测执行是一种性能优化技术，因此修复Meltdown或Spectre漏洞后可能导致在特定工作负载下的性能下降。
如果您认为漏洞修复对系统的性能影响不可接受或者系统有更好的保护机制，希望可以禁用部分或全部漏洞安全保护策略，那么可以参考以下操作启用或者禁用安全保护策略。
您可以根据如下具体情况配置系统来达到理想的安全策略：
- Meltdown漏洞 采取页表隔离pti（Page Table Isolation）来控制内核页表隔离功能，此功能适用于CVE-2017-5754。
  
- Spectre漏洞 采取间接分支限制预测ibrs（Indirect Branch Restricted Speculation）控制SPEC_CTRL模型特定寄存器（MSR）中的IBRS功能，结合retpoline，及间接分支预测障碍ibpb（Indirect Branch Prediction Barriers）控制PRED_CMD模型特定寄存器（MSR）中的IBPB功能，此功能适用于CVE-2017-5715。
  ![](https://support.huaweicloud.com/ecs_faq/public_sys-resources/note_3.0-zh-cn.png)
  CVE-2017-5753漏洞是通过内核补丁修复的，它无法禁用，并且它在Red Hat的性能测试中没有显示出任何可见的影响。
  
- **关闭Meltdown安全漏洞补丁**
  如果您想降低开启pti对系统的性能影响或者系统有更好的保护机制，您可以根据以下步骤操作：
  1. 根据不同的操作系统修改内核参数：
     - CentOS、EulerOS、Ubuntu、Fedora、Red Hat：添加内核参数nopti
     
     - Debian、OpenSUSE：添加内核参数pti=off
      
  
  2. 重启云服务器。
   
- **关闭Spectre安全漏洞补丁**
  如果您认为Spectre漏洞修复对系统的性能影响不可接受或者系统有更好的保护机制，您可以根据以下步骤操作：
  1. 根据不同的操作系统修改内核参数：
     - CentOS、EulerOS、Fedora、Debian、Red Hat、OpenSUSE：添加内核参数spectre_v2=off
     
     - Ubuntu：添加内核参数nospectre_v2=off
      
  
  2. 重启云服务器。
   
如果您使用的是以下操作系统，可以前往官网查询更多信息。
RedHat：<https://access.redhat.com/articles/3311301?spm=a2c4g.11186623.2.20.42b49d4aJuKYx2>
SUSE：[https://www.suse.com/support/kb/doc/?spm=a2c4g.11186623.2.21.42b49d4avOXw7d\&id=7022512](https://www.suse.com/support/kb/doc/?spm=a2c4g.11186623.2.21.42b49d4avOXw7d&id=7022512)
