7 年前一个未被发现的错误允许使用 polkit 进行权限提升

凯文·巴克豪斯 (安全研究员) 共享 几天前在 GitHub 博客上的注释是 在 polkit 服务中遇到错误 与 systemd(一个常见的 Linux 系统和服务管理器组件)相关联,其中存在七年的漏洞 允许进行特权升级 它一直潜伏在各种 Linux 发行版中,并于上周在一个协调版本中进行了修补。

Polkit 是用于定义和管理策略的应用程序级工具包 这允许 非特权进程 与特权进程交谈,它默认安装在各种 Linux 发行版上。 该漏洞于七年前在 0.113 版本中引入(commit bfa5036),并在安全研究员 Kevin Backhouse 最近披露后于 3 月 XNUMX 日修复。

作为 GitHub 安全实验室的成员,我的工作是通过发现和报告漏洞来帮助提高开源软件的安全性。 几周前,我在 polkit 中发现了一个提权漏洞。 与 polkit 维护人员和红帽安全团队协调漏洞披露。 它已公开,该修复程序于 3 年 2021 月 2021 日发布并指定为 CVE-3560-XNUMX

“每个使用 polkit 易受攻击版本的 Linux 系统都有可能受到利用 CVE-2021-3560 缺陷的攻击,”Backhouse 说。 说这个漏洞非常容易被利用, 因为它只需要一些使用标准终端工具(如 bash、kill 和 dbus-send)的命令。

“该漏洞是通过启动 dbus-send 命令触发的,但在 polkit 仍在处理请求时将其杀死,”Backhouse 解释说。

巴克豪斯 发布了一个视频 利用此漏洞的攻击的 PoC 表明它很容易被激活。

“该漏洞允许无特权的本地用户获得系统上的 root shell。 使用一些标准的命令行工具很容易利用,正如您在这个短视频中看到的那样,“专家在博客文章中写道。

杀死 dbus-send 时 (进程之间的通信命令), 在身份验证请求中间导致错误 这来自 polkit 请求不再存在的连接的 UID(因为连接已断开)。

“确实,polkit 以一种特别不幸的方式错误地处理了错误:它没有拒绝请求,而是将其视为来自 UID 0 的进程,”Backhouse 解释道。 “换句话说,您立即授权请求,因为您认为请求来自根进程。”

这不会一直发生,因为 polkit 对 dbus-daemon 的 UID 查询在不同的代码路径上多次发生。 Backhouse 说,通常这些代码路径会正确处理错误,但代码路径容易受到攻击,如果在该代码路径处于活动状态时发生断开连接,则会发生特权提升。 这只是时间问题,由于涉及多个进程,因此会以不可预测的方式变化。

另外, 研究人员公布了下表 其中包含当前易受攻击的发行版列表:

分布 易受伤害的?
RHEL 7 没有
RHEL 8
Fedora 20(或更早版本) 没有
Fedora 21(或更高版本)
Debian 10(“破坏者”) 没有
Debian测试
Ubuntu的18.04 没有
Ubuntu的20.04

安装了 polkit 0.113 或更高版本的 Linux 发行版,例如 Debian(不稳定分支)、RHEL 8、Fedora 21 和更高版本以及 Ubuntu 20.04,都会受到影响。

巴克豪斯推测,这个漏洞的间歇性是它七年来未被发现的原因。

“CVE-2021-3560 允许无特权的本地攻击者获得 root 权限,”Backhouse 说。 “利用它非常简单且快速,因此尽快更新 Linux 安装非常重要。”

最后 如果您有兴趣了解更多信息, 您可以查看详细信息 在下面的链接中。


发表您的评论

您的电子邮件地址将不会被发表。 必填字段标有 *

*

*

  1. 负责资料:AB Internet Networks 2008 SL
  2. 数据用途:控制垃圾邮件,注释管理。
  3. 合法性:您的同意
  4. 数据通讯:除非有法律义务,否则不会将数据传达给第三方。
  5. 数据存储:Occentus Networks(EU)托管的数据库
  6. 权利:您可以随时限制,恢复和删除您的信息。