Translated message

A translation of this page exists in English.

Warning message

This translation is outdated. For the most up-to-date information, please refer to the English version.

libuser 漏洞(CVE-2015-3245 和 CVE-2015-3246)

Red Hat 产品安全团队在 userhelper 程序(usermode 软件包的一部分)和 libuser 库中发现两个安全漏洞。已验证,拥有 shell 访问权限的本地用户可以合并利用这两个漏洞,将本地用户权限升级为 root 用户。已为这些漏洞分配了 CVE-2015-3245CVE-2015-3246。为这两个漏洞合并评定的等级为重要 影响。Red Hat 愿借此机会感谢 Qualys 报告这些问题。

背景资料

libuser 库采用标准化界面操纵并管理用户及组帐户。包含在 usermode 软件包中的 userhelper 程序提供基本的非互动界面,可使用该界面更改用户密码、GECOS 字段以及 shell。

影响

下面两小节描述了这两个关联的漏洞。

密码文件更新时的竞争条件(CVE-2015-3246,重要)

这个漏洞是在 libuser库处理 /etc/passwd 文件的方式中发现的。传统的程序,比如 passwdchfnchsh 是修改 /etc/passwd 的临时副本,并最终使用 rename() 功能重新命名该临时副本,而 libuser是直接修改 /etc/passwd文件。遗憾的是,如果在这个修改过程中出现任何问题,libuser 就可能让 /etc/passwd 处于不一致的状态。

这个行为可能会造成本地拒绝服务攻击(denial-of-service attack)。此外,如果与第二个漏洞(CVE-2015-3245,如下所述)联合,就可能导致将权限升级为 root 用户。

请在下表中查看有关讨论这个问题的安全公告链接。

缺少 GECOS 字段内容验证(CVE-2015-3245,中等)

我们发现 userhelper 程序的 chfn 功能无法正确过滤新建行字符。userhelper 程序采用的 chfn 功能可确认命令行中给出的字段是否有效(就是说确认字段中不包含禁用字符)。遗憾的是这些禁用字符(:,=)不包括 \n 字符,并允许本地攻击者在 /etc/passwd 文件中插入新建行字符,并以非预期的方式更改这个文件。

本地攻击者可利用这个漏洞破坏 /etc/passwd 文件,并可能造成系统中的拒绝服务攻击。

注: 随着在 usermode 软件包中添加该属性,这个问题会在更新 libuser 时得到解决,因为无论如何都必须修改 libuser以便解决 CVE-2015-3246 漏洞。

安全公告

所有包含在 Red Hat Enterprise Linux 6 和 7 中的 libuser 库版本都会受到这些漏洞的影响。请在下表中查看修复这个问题的安全公告链接。

产品 公告
Red Hat Enterprise Linux 6 RHSA-2015:1482
Red Hat Enterprise Linux 7 RHSA-2015:1483

 
这个问题还会影响 Red Hat Enterprise Linux 5,目前该产品处于支持及维护生命周期的产品阶段 3。因此目前没有计划在将来的 Red Hat Enterprise Linux 5 更新中涉及这个问题。有关详情,请查看 Red Hat Enterprise Linux 生命周期

原子主机 & 容器

Red Hat 官方发布的所有容器映像中均包含 libuser 库的易受攻击版本。有疑问的用户可以使用这些容器的内置 yum 功能更新至修复的版本(请查看下面的‘解决方案’)。这个方案可修复这个漏洞。近期将发布这些容器的更新版本,以体现这些更新。

原子主机包含 libuser 库的易受攻击版本。可以使用其内置 yum 功能将 Atomic 托管的任意容器更新至这些软件包的修复版本。但无法让容器内的原子主机避免这些问题的影响。在下一次累计更新中将包含对原子主机的修复。

云映像及应用

Red Hat 官方发布的所有云及应用映像中均包含 libuser 库的易受攻击版本。有疑问的用户可以使用这些容器的内置 yum 功能更新至修复的版本(请查看下面的‘解决方案’)。这个方案可以修复这个漏洞。近期将发布这些容器更新的芯片改版(respin),以体现这些更新。

Amazon 网页服务

Red Hat Enterprise Linux Amazon Machine Instance 包含 libuser 库的易受攻击版本。可以使用其内置的 yum 功能(请查看下面的‘解决方案’),将任意系统更新至这些软件包的修复版本。

RHEV-H 映像

Red Hat Enterprise Virtualization Hypervisor 应用映像包含 libuser 库的易受攻击版本。这些映像应只用来托管虚拟机,且不应包含不可信本地用户。

不可能利用这些漏洞从虚拟机攻击 RHEV-H 主机。会在将来的 RHEV-H 映像更新中涉及这个漏洞。

解决方案

为消除该漏洞被恶意利用的可能性,请安装更新的 libuser 软件包,具体软件包已在上表中的公告栏中列出。

请使用 yum 软件包管理程序,按以下方法安装这些更新:

yum update

如果只更新 libuser 软件包及其相依性软件包,请使用:

yum update libuser

缓解操作

鉴于 libuser 的工作方式,只有那些拥有 /etc/passwd 中所列出帐户的用户才可以利用这些漏洞,同时该用户需要在进攻时提供帐户密码。这些要求意味着只有 LDAP(或其他 NSS 数据源)中列出的帐户才可以利用这些漏洞,换句话说,没有有效密码的系统帐户无法利用这个漏洞。

在不可能更新 libuser 的系统中,系统管理员可以在文件 /etc/pam.d/chfn/etc/pam.d/chsh中添加 pam_warnpam_deny 规则,以防止非 root 用户使用易受攻击的服务。编辑后,这些文件应包含:

#%PAM-1.0
auth       sufficient   pam_rootok.so
auth required pam_warn.so
auth required pam_deny.so
auth       include      system-auth
account    include      system-auth
password   include      system-auth
session    include      system-auth

之后,非特权用户尝试使用 chfnchsh(以及 userhelper 程序中的对应功能)就会失败,并会在日志文件中记录(默认记录在 /var/log/secure 中)。

Comments