开发者社区> 晚来风急> 正文

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和Cryptsetup是什么

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

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

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

93次空密码重试就可以获得root权限

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

initramfs%20shell.png

一旦获得目标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的云端服务,你就可以远程利用这个漏洞,而不需要“物理访问”。

漏洞影响大多数Linux版本 提权、泄露、DoS一个都不少

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

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

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

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

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

如何修复这个漏洞

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

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

shell.png

如果没有可用的补丁,修改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
本文来自云栖社区合作伙伴安全加,了解相关信息可以关注安全加网站

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
+关注
9379
文章
243
问答
文章排行榜
最热
最新
相关电子书
更多
OceanBase 入门到实战教程
立即下载
阿里云图数据库GDB,加速开启“图智”未来.ppt
立即下载
实时数仓Hologres技术实战一本通2.0版(下)
立即下载