上周,影响Linux 多个发行版本的一个已存在7年之久的提权漏洞被修复。

上周四,GitHub 的安全研究员 Kevin Backhouse 发布博客文章表示自己从与常见的 Linux 系统和服务管理器组件 system 相关链的服务 polkit 中找到了一个 bug (CVE-2021-3560)。

该 bug 首次在7年前的 commit bfa5036 中引入,现身于 polkit版本 0.113 中,影响 Linux 的多个发行版本。例如,虽然并不影响 Debian 10 但影响 Debian 不稳定版本。

Polkit 此前被称为 PolicyKit,用于评估特定的 Linux 活动是否要求高于当前的权限,当用户尝试创建新的用户账户时就会用到这一功能。

Backhouse 指出,该漏洞极其易于利用,仅要求使用标准终端工具的命令如 bash、kill 和 dbus-send。Backhouse 解释称,“开始 dbus-send 命令时会触发该漏洞,而杀死该命令时 polkit 仍然正在处理该请求。”在认证请求过程中杀死 dbus-send(进程间通信命令)会引发 polkit 发生错误,因为它要求提供不再存在的某个连接的 UID(该连接已被杀死)。

Backhouse 解释称,“实际上,polkit 以非常遗憾的方式错误地处理了该错误,它并未拒绝该请求,而是将该请求当作源自 UID 为0的进程。换句话说,它立即授权该请求,原因时以为该请求源自 root 进程。”

这种情况并不是一直都会发生,因为 dbus-daemon 的 polkit UID 查询在不同的代码路径中发生了多次。通常而言,这些代码路径会正确地处理该错误,但一个代码路径易受攻击,而且如果在代码路径仍然活跃的情况下发生链接断开的情况,则会发生提权。这种情况的发生只是一个时间问题,由于涉及多种进程,因此发生的情况不可预知。

Backhouse 认为该 bug 断断续续的情况应该是7年后才被检测到的原因。

受影响版本

安装了 polkit 版本0.113或后续版本的 Linux 系统如 Debian(不稳定版)、RHEL 8、Fedora 21+ 和 Ubuntu 20.04 均受影响。

Backhouse 表示,“CVE-2021-3560 使低权限的本地攻击者可获得 root 权限。该漏洞非常易于且快速利用,因此用户应尽快更新 Linux 版本。”

原文链接

https://www.theregister.com/2021/06/11/linux_polkit_package_patched/

声明:本文来自代码卫士,版权归作者所有。文章内容仅代表作者独立观点,不代表安全内参立场,转载目的在于传递更多信息。如有侵权,请联系 anquanneican@163.com。