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 版本。”
CVE-2021-20226:详解 Linux 内核 IO_URING 子系统中的引用计数漏洞
开源包管理器Homebrew被曝 RCE,影响 macOS 和 Linux 系统
https://www.theregister.com/2021/06/11/linux_polkit_package_patched/
题图:Pixabay License
本文由奇安信编译,不代表奇安信观点。转载请注明“转自奇安信代码卫士 https://codesafe.qianxin.com”。
奇安信代码卫士 (codesafe)
国内首个专注于软件开发安全的
产品线。