如何修补和保护Linux内核堆栈冲突漏洞CVE-2016-1000364 [19/June/2016]
在The Stack ClashLinux内核中发现了一个非常严重的安全问题。
攻击者可以利用它破坏内存并执行任意代码。
攻击者可能利用此漏洞和另一个漏洞来执行任意代码并获得管理/根帐户特权。
如何在Linux上解决此问题?
Qualys Research Labs在GNU C库的动态链接器(CVE-2016-1000366)中发现了各种问题,这些问题允许通过冲突(包括Linux内核)的堆栈来提升本地特权。
此错误会影响i386和amd64上的Linux,OpenBSD,NetBSD,FreeBSD和Solaris。
攻击者可以利用它破坏内存并执行任意代码。
什么是CVE-2016-1000364错误?
在为用户空间二进制文件在堆栈上分配内存的方式中发现一个缺陷。
如果堆(或不同的内存区域)和堆栈内存区域彼此相邻,则攻击者可能会利用此漏洞跳过堆栈保护间隙,导致进程堆栈或相邻内存区域上的受控内存损坏,从而增加其特权在系统上。
这是内核方面的缓解措施,可将堆栈保护间隙的大小从一页增加到1 MiB,从而使成功利用此问题更加困难。
根据原始研究文章:
在计算机上运行的每个程序都使用一个称为堆栈的特殊内存区域。
该内存区域是特殊的,因为当程序需要更多的堆栈内存时,它会自动增长。
但是,如果它增长太多,而又太靠近另一个内存区域,则程序可能会使堆栈与另一个内存区域混淆。
攻击者可以利用这种混淆来用其他内存区域或相反的方式覆盖堆栈。
受影响的Linux发行版列表
- 红帽企业版Linux Server 5.x
- 红帽企业版Linux Server 6.x
- 红帽企业版Linux Server 7.x
- CentOS Linux服务器5.x
- CentOS Linux服务器6.x
- CentOS Linux服务器7.x
- Oracle企业Linux服务器5.x
- Oracle企业Linux服务器6.x
- Oracle企业Linux服务器7.x
- Ubuntu 17.10
- Ubuntu 17.04
- Ubuntu 16.10
- Ubuntu 16.04 LTS
- Ubuntu 12.04 ESM(精确的穿山甲)
- Debian 9拉伸
- Debian 8杰西
- Debian 7 Wheezy
- Debian不稳定
- SUSE Linux Enterprise Desktop 12 SP2
- SUSE Linux Enterprise高可用性12 SP2
- SUSE Linux Enterprise Live Patching 12
- 适用于公共云的SUSE Linux Enterprise Module 12
- SUSE Linux Enterprise Build系统套件12 SP2
- SUSE Openstack Cloud Magnum编排7
- SUSE Linux Enterprise Server 11 SP3-LTSS
- SUSE Linux Enterprise Server 11 SP4
- SUSE Linux Enterprise Server 12 SP1-LTSS
- SUSE Linux Enterprise Server 12 SP2
- 适用于Raspberry Pi 12 SP2的SUSE Linux Enterprise Server
如何重启我的服务器吗?
是的,因为大多数服务都依赖于GNU C库的动态链接器,因此内核本身需要重新加载到内存中。
如何在Linux上修复CVE-2016-1000364?
根据您的Linux发行版执行命令。
您需要重新启动服务器。
应用补丁程序之前,请记下当前的内核版本:
$ uname -a $ uname -mrs
输出示例:
Linux 4.4.0-78-generic x86_64
Debian或Ubuntu Linux
执行以下apt命令/apt-get命令以应用更新:
$ sudo apt-get update && sudo apt-get upgrade && sudo apt-get dist-upgrade
使用重新启动命令重新启动服务器/桌面:
$ sudo reboot
Oracle/RHEL/CentOS /科学Linux
执行以下yum命令:
$ sudo yum update $ sudo reboot
Fedora Linux
执行以下dnf命令:
$ sudo dnf update $ sudo reboot
Suse Enterprise Linux或Opensuse Linux
输入以下zypper命令:
$ sudo zypper patch $ sudo reboot
SUSE OpenStack云6
$ sudo zypper in -t patch SUSE-OpenStack-Cloud-6-2016-996=1 $ sudo reboot
适用于SAP 12-SP1的SUSE Linux Enterprise Server
$ sudo zypper in -t patch SUSE-SLE-SAP-12-SP1-2016-996=1 $ sudo reboot
SUSE Linux企业服务器12-SP1-LTSS
$ sudo zypper in -t patch SUSE-SLE-SERVER-12-SP1-2016-996=1 $ sudo reboot
适用于公共云的SUSE Linux Enterprise Module 12
$ sudo zypper in -t patch SUSE-SLE-Module-Public-Cloud-12-2016-996=1 $ sudo reboot
验证
您需要确保在发出重新启动命令后版本号已更改
$ uname -a $ uname -r $ uname -mrs
输出示例:
Linux 4.4.0-81-generic x86_64