libuser 漏洞(CVE-2015-3245 和 CVE-2015-3246)
Red Hat 产品安全团队在 userhelper
程序(usermode
软件包的一部分)和 libuser
库中发现两个安全漏洞。已验证,拥有 shell 访问权限的本地用户可以合并利用这两个漏洞,将本地用户权限升级为 root 用户。已为这些漏洞分配了 CVE-2015-3245 和 CVE-2015-3246。为这两个漏洞合并评定的等级为重要 影响。Red Hat 愿借此机会感谢 Qualys 报告这些问题。
背景资料
libuser
库采用标准化界面操纵并管理用户及组帐户。包含在 usermode
软件包中的 userhelper
程序提供基本的非互动界面,可使用该界面更改用户密码、GECOS 字段以及 shell。
影响
下面两小节描述了这两个关联的漏洞。
密码文件更新时的竞争条件(CVE-2015-3246,重要)
这个漏洞是在 libuser
库处理 /etc/passwd
文件的方式中发现的。传统的程序,比如 passwd
、chfn
和 chsh
是修改 /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_warn
和 pam_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
之后,非特权用户尝试使用 chfn
和 chsh
(以及 userhelper
程序中的对应功能)就会失败,并会在日志文件中记录(默认记录在 /var/log/secure
中)。
Comments