天天看点

linux远程利用漏洞CVE-2016-4484 93次空密码重试就可以获得root权限 影响大多数Linux版本

在linux上只需要按住enter键约70秒 或者 重试93次空密码,黑客拿到了具有根权限的shell,从而获得了对加密linux机器的完全远程控制。这个安全缺陷已被确认影响debian、ubuntu、fedora和其他许多linux版本。arch linux和solus用户不受此安全问题影响。

这个安全问题源于cryptsetup工具实现上的一个漏洞(cve-2016-4484)。cryptsetup工具通过linux unified key setup (luks)来加密硬盘;而在基于linux的操作系统上,luks是标准的硬盘加密实现。据说这个东西,2004年就有了,你可以想象这个漏洞影响范围有多大。

luks(linux unified key setup)为linux硬盘加密提供了一种标准,它不仅能通用于不同的linux发行版本,还支持多用户/口令。因为它的加密密钥独立于口令,所以如果口令失密,我们可以迅速改变口令而无需重新加密真个硬盘。通过提供一个标准的磁盘上的格式,它不仅方便之间分布的兼容性,而且还提供了多个用户密码的安全管理。必须首先对加密的卷进行解密,才能挂载其中的文件系统。

cryptsetup就是加密工具,默认已经安装在系统中。使用cryptsetup对分区进行了加密后,这个分区就不再允许直接挂载。如果要使用这个分区,必须对这个分区做一个映射,映射到/dev/mapper这个目录里去,我们只能挂载这个映射才能使用。然而做映射的时候是需要输入解密密码的。

问题就出在这个挂载过程中,对于密码重试居然没有限制 (这是哪个程序员干的事情,拖出去打死……)

这个漏洞实际存在于系统启动时cyrpsetup工具在解密过程中对错误密码的处理上,使得用户可以多次尝试密码操作。即使用完了所有的93次密码尝试机会,用户仍会掉进一个具有根权限的shell(ubuntu中为busybox)。也就是说,如果你输入93次空白密码,或者按住"enter"键约70秒,你就能访问根initramfs(初始ram文件系统)shell。

linux远程利用漏洞CVE-2016-4484 93次空密码重试就可以获得root权限 影响大多数Linux版本

一旦获得目标linux机器上的根shell,你就能复制、修改或者破坏硬盘,或者通过网络偷出数据。

由西班牙安全研究人员hector marco和ismael ripoll发现的这个漏洞影响几乎所有的linux发行版本,包括debian、ubuntu、fedora、red hat enterprise linux(rhel)、以及suse linux enterprise server (sles)。这可能置数以百万计的用户于风险之中。

在今年奥地利维也纳的deepsec大会上发布的安全公告中,这两位研究人员这样解释这个漏洞:

“这个漏洞允许攻击者获取受影响系统的根initramfs shell。这个漏洞不受具体系统或配置的限制,因而非常切实可靠。攻击者可以复制、修改或者破坏硬盘,并设置网络来偷出数据。在图书馆、自动柜员机、机场设备、实验室等环境下,这个漏洞尤其严重。在这些环境下,整个启动过程都受到(bios和grub中的密码)保护,而我们只能使用键盘和鼠标。”

此时你可能会认为,只有在能物理访问目标系统时,才可能利用这个漏洞。但是,这个漏洞也可能被远程利用。如果使用了利用linux的云端服务,你就可以远程利用这个漏洞,而不需要“物理访问”。

然而,重要的是要意识到,虽然这个shell允许攻击者进行一系列的操作,但攻击者并不能利用这个漏洞来访问加密盘中的数据。根据marco的描述,攻击者可以进行下列操作:

权限提升 :因为引导区一般都不会被加密,

它可被用来存储setuid位被使能的可执行文件。这个文件随后可被本地用户利用来提升权限。 如果引导区未被防护,攻击者随后就可能替换掉内核和initrd镜像。

信息泄露 :攻击者可能访问所有的磁盘。虽然系统分区是被加密的,但它可能会被复制到外部设备,并随后被暴力破解。显然,在外部设备上访问解密后的信息是有可能的。

拒绝服务 (dos):攻击者有能力删除所有磁盘上的信息。

幸运的是,这个漏洞非常容易被修复。

首先,在luks密码提示窗口下按住enter键约70秒,直到出现一个shell,以查看你的系统是否存在这个漏洞。如果存在,你需要向你的linux版本提供商确认是否有可用的补丁。

linux远程利用漏洞CVE-2016-4484 93次空密码重试就可以获得root权限 影响大多数Linux版本

如果没有可用的补丁,修改cryptroot文件从而在密码尝试次数达到上限时终止启动程序,也可以修复这个漏洞。为此,你可以将下列命令行添加到启动配置中:

sed -i 's/grub_cmdline_linux_default="/grub_cmdline_linux_default="panic=5 /' /etc/default/grub grub-install

由于已经有可用的补丁,因此请确保你始终使用最新的补丁包版本和最新的操作系统。

原文发布时间:2017年3月24日 

本文由:hackernews 发布,版权归属于原作者

原文链接:http://toutiao.secjia.com/linux-remote-exploit-cve-2016-4484

本文来自云栖社区合作伙伴安全加,了解相关信息可以关注安全加网站

继续阅读