BLSA-2018:0007 – [重要] kernel的安全警告及修复方法



  • BLSA-2018:0007 – [重要] kernel的安全警告及修复方法

    问题描述

           最近 ,Intel CPU 被披露存在一个严重的芯片级安全漏洞,这个漏洞几乎影响了现在所有正在使用的 CPU 型号,影响范围广泛而深远。攻击者可以利用该漏洞从普通程序入口获取推测到本该受到保护的内核内存区域的内容和布局,可以从数据库或者浏览器的 JavaScript 程序获取用户的内存信息。
           目前要修复这个漏洞,暂时无法依靠处理器代码更新,必须是在操作系统层面升级入手。BCLinux系统提供的kernel更新包提供了修复该漏洞的修复补丁。鉴于该漏洞影响范围广、破坏力强,为了增加系统安全强度,建议所有使用受影响产品的用户都安装 BCLinux 提供的的更新补丁。

    漏洞简介
    关于这个漏洞,有三个变种,分别是:bounds check bypass (CVE-2017-5753);branch target injection (CVE-2017-5715);rogue data cache load (CVE-2017-5754)。基于这三种变种问题,现在有两种已知的攻击方式:Spectre (幽灵),基于变种 1 和变种 2;Meltdown (崩溃),基于变种 3。
    崩溃 Meltdown简介
    攻击会影响到台式、笔记本和云设备。技术层面上,每一个具备乱序执行的 Intel 处理器都有影响,即1995年后的处理器(除了 Itanium 和 Atom 型号)。到目前为止,仅能做到对Intel 处理器进行测试,尚不清楚 ARM 和AMD处理器是否能承受第一种的 Meltdown 攻击。使用 Intel CPU和Xen PV虚拟化的云服务商均存在安全隐患。没有真正应用硬件虚拟化,只是依赖容器来共享内核的也会受到影响,例如Docker,LXC,或者OpenVZ。
    幽灵 Spectre简介
    影响范围除了上述内容,还会额外影响智能手机。所有能够 “让多条指令处在in flight 状态” 的处理器都会受到影响,在 Intel、AMD 和ARM处理器上都验证了 Spectre 攻击。当前,Spectre 只影响到了用户级的进程。但是将来可能会有更加严重的影响。他不像 Meltdown, Spectre 要靠处理器架构上面的改变才可以消除。而且将来,Spectre 对云提供商的影响可能大过 Meltdown。Meltdown 只是允许未授权的应用去读取同台机器上的系统级内存里面的敏感数据。而 Spectre 能够诱骗虚拟化层向其运行的客户机传输数据。

    影响范围

    该漏洞存在于英特尔(Intel)x86_64的硬件中,1995年以后生产的Intel处理器芯片都可能受到影响,同时AMD,Qualcomm,ARM处理器也受影响。

    影响版本

    • BigCloud Enterprise Linux 6.8
    • BigCloud Enterprise Linux 6.5
    • Red Hat Enterprise Linux 6.8
    • Red Hat Enterprise Linux 6.5
    • CentOS Linux 6.8
    • CentOS Linux 6.5

    详细介绍

    • CVE-2017-5753 [重要]
      变体CVE-2017-5753通过污染分支预测,来绕过kernel或hypervisor的内存对象边界检测。该漏洞依赖于特权代码中精确定义的指令序列,以及内存的越界访问。因此,非特权攻击者可以利用这个漏洞,跨越系统调用边界并通过执行有针对性的缓存旁路攻击来读取特权内存信息。

    • CVE-2017-5715 [重要]
      变体CVE-2017-5715通过污染分支目标注册触发预测执行。该漏洞依赖于特权代码中精确定义的指令序列,以及内存的越界访问。因此,非特权攻击者可以利用这个漏洞,跨越系统调用边界和访客/主机边界,并通过执行有针对性的缓存旁路攻击来读取特权内存信息。

    • CVE-2017-5754 [重要]
      变体CVE-2017-5754依赖于以下事实:在受影响的微处理器上,在预测执行指令权限错误期间,由错误访问触发的异常生成被抑制,直到整个指令块退出为止。结合内存访问可能填充高速缓存的事实,即使该块被丢弃并且从不提交(执行),非特权本地攻击者也可以通过执行有针对性的高速缓存侧通道来读取特权(内核空间)内存攻击。

    解决方案

    目前,BCLinux 的官方源已经提供 kernel 的更新软件包,受影响的 BCLinux 6.5/6.8 客户端用户需要升级到 2.6.32-696.18.7.el6 版本。

    注:
    此次漏洞修复,可能对Linux系统造成一定程度的性能影响。为了保证业务的稳定性,请用户根据自身业务情况决定是否升级修复漏洞。

    BCLinux 6.5 用户升级修复

    1.添加 BCLinux CR 源;

    [root@BCLinux6_5 ~]# vi /etc/yum.repos.d/BCLinux-CR.repo 
    
    [cr]
    name=BCLinux-$releasever - CR
    baseurl=http://mirrors.bclinux.org/bclinux/el$releasever/cr/$basearch/
    enabled=1
    gpgcheck=0
    gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-BCLinux-6
    
    

    2.检查YUM源设置,确保使用的是 BCLinux 官方YUM源

    [root@BCLinux6_5 ~]# ls -l /etc/yum.repos.d/
    total 16
    -rw-r--r--. 1 root root  969 Nov 16  2015 BCLinux-Base.repo
    -rw-r--r--. 1 root root  181 Oct  9 16:43 BCLinux-CR.repo
    -rw-r--r--. 1 root root 1053 Nov 16  2015 BCLinux-Source.repo
    -rw-r--r--. 1 root root 1184 Nov 16  2015 BigCloud.repo
    

    3.安装更新

    [root@BCLinux6_5 ~]# yum update kernel
    Loaded plugins: fastestmirror
    Loading mirror speeds from cached hostfile
    Setting up Update Process
    Resolving Dependencies
    --> Running transaction check
    ---> Package kernel.x86_64 0:2.6.32-696.18.7.el6 will be installed
    --> Processing Dependency: kernel-firmware >= 2.6.32-696.18.7.el6 for package: kernel-2.6.32-696.18.7.el6.x86_64
    --> Processing Dependency: dracut-kernel >= 004-408.el6 for package: kernel-2.6.32-696.18.7.el6.x86_64
    --> Running transaction check
    ---> Package dracut-kernel.noarch 0:004-335.el6 will be updated
    ---> Package dracut-kernel.noarch 0:004-409.el6_8.2 will be an update
    --> Processing Dependency: dracut = 004-409.el6_8.2 for package: dracut-kernel-004-409.el6_8.2.noarch
    ---> Package kernel-firmware.noarch 0:2.6.32-431.el6 will be updated
    ---> Package kernel-firmware.noarch 0:2.6.32-696.18.7.el6 will be an update
    --> Running transaction check
    ---> Package dracut.noarch 0:004-335.el6 will be updated
    ---> Package dracut.noarch 0:004-409.el6_8.2 will be an update
    --> Finished Dependency Resolution
    
    Dependencies Resolved
    
    ===============================================================================================================================================
     Package                                        Arch                                  Version                                             Repos
    ===============================================================================================================================================
    Installing:
     kernel                                         x86_64                                2.6.32-696.18.7.el6                                 cr   
    Updating for dependencies:
     dracut                                         noarch                                004-409.el6_8.2                                     updat
     dracut-kernel                                  noarch                                004-409.el6_8.2                                     updat
     kernel-firmware                                noarch                                2.6.32-696.18.7.el6                                 cr   
    
    Transaction Summary
    ===============================================================================================================================================
    Install       1 Package(s)
    Upgrade       3 Package(s)
    
    Total download size: 61 M
    Is this ok [y/N]: y
    

    4.复查

    [root@BCLinux6_5 ~]# rpm -q kernel
    kernel-2.6.32-431.el6.x86_64
    kernel-2.6.32-696.18.7.el6.x86_64
    

    5.重启机器

    安装升级包以后,重启机器,更新生效。

    BCLinux 6.8 用户升级修复方法

    1.打开 BCLinux CR 源选项(enabled设置为1);

    [root@BCLinux6_8 ~]# vi /etc/yum.repos.d/BCLinux-CR.repo 
    
    [cr]
    name=BCLinux-$releasever - CR
    baseurl=http://mirrors.bclinux.org/bclinux/el$releasever/cr/$basearch/
    enabled=1
    gpgcheck=0
    gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-BCLinux-6
    
    

    2.检查YUM源设置,确保使用的是 BCLinux 官方YUM源

    [root@BCLinux6_8 ~]# ls -l /etc/yum.repos.d/
    total 20
    -rw-r--r--. 1 root root  960 Jun  9 11:15 BCLinux-Base.repo
    -rw-r--r--. 1 root root 1513 Jun 16 15:59 BCLinux-CR.repo
    -rw-r--r--. 1 root root  686 Jun  9 11:15 BCLinux-Debuginfo.repo
    -rw-r--r--. 1 root root 1085 Jun  9 11:15 BCLinux-Source.repo
    -rw-r--r--. 1 root root 1198 Jun  9 11:15 BigCloud.repo
    

    3.安装更新

    [root@BCLinux6_8 ~]# yum update kernel
    Loaded plugins: fastestmirror
    Setting up Update Process
    Loading mirror speeds from cached hostfile
    Resolving Dependencies
    --> Running transaction check
    ---> Package kernel.x86_64 0:2.6.32-696.18.7.el6 will be installed
    --> Processing Dependency: kernel-firmware >= 2.6.32-696.18.7.el6 for package: kernel-2.6.32-696.18.7.el6.x86_64
    --> Running transaction check
    ---> Package kernel-firmware.noarch 0:2.6.32-642.el6 will be updated
    ---> Package kernel-firmware.noarch 0:2.6.32-696.18.7.el6 will be an update
    --> Finished Dependency Resolution
    
    Dependencies Resolved
    
    ===============================================================================================================================================
     Package                               Arch                         Version                                     Repository                Size
    ===============================================================================================================================================
    Installing:
     kernel                                x86_64                       2.6.32-696.18.7.el6                         cr                        32 M
    Updating for dependencies:
     kernel-firmware                       noarch                       2.6.32-696.18.7.el6                         cr                        29 M
    
    Transaction Summary
    ===============================================================================================================================================
    Install       1 Package(s)
    Upgrade       1 Package(s)
    
    Total download size: 61 M
    Is this ok [y/N]: y
    

    4.复查

    [root@BCLinux6_8 ~]# rpm -q kernel
    kernel-2.6.32-642.el6.x86_64
    kernel-2.6.32-696.18.7.el6.x86_64
    

    5.重启机器

    安装升级包以后,重启机器,更新生效。

    外部链接

    1.BCLinux安全更新