如何修补和保护Linux内核堆栈冲突漏洞CVE-2016-1000364 [19/June/2016]

时间:2020-01-09 10:40:34  来源:igfitidea点击:

在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