PwnKit 被攻击者们实际利用恐怕将只是时间问题。
本周二,突然曝出的坏消息令 Linux 用户们错愕不已 —— Polkit 系统工具中存在一项已有 12 年“悠久历史”的大 bug,攻击者能够借此在大多数主流 Linux 发行版中获得至高无上的 root 权限。
Polkit 之前曾被称为 PolicyKit,负责在类 Unix 操作系统中管理系统内各项权限。它的作用是为非特权进程与特权进程提供一种彼此安全交互的机制。另外,Polkit 还允许用户在命令中配合使用名为 pkexec 的组件,借此执行高权限操作。
易于利用、百分百可靠
与大多数操作系统一样,Linux 也拥有一套明确的权限层级结构,用以控制哪些应用程序或用户在哪些情况下可以与敏感的系统资源进行交互。
有了这套体系,我们就能避免网络管理控制权落入不受信任的用户手中,或者应用程序遭到黑客入侵或恶意篡改时造成严重后果。
但自 2009 年以来,pkexec 中就一直包含一个内存破坏漏洞,因此恶意人士完全可以利用此漏洞在目标设备上一路将权限提升至 root 级别。而且根据相关消息,这个漏洞不仅利用难度低、而且发挥相当稳定,可靠性高达 100%。
只要在存在漏洞的设备上完成了初步驻留,攻击者就能利用这个 bug 以最高系统权限运行恶意载荷或者命令。更可怕的是,研究人员们发现即使 Polkit 守护程序本身并没有启动,其中的这个 PwnKit 漏洞也能发挥作用。
PwnKit 最初于去年 11 月被安全厂商 Qualys 的研究人员所发现,并在大部分 Linux 发行版完成补丁更新后于本周二被正式披露。PwnKit 现已被记录为 CVE-2021-4034。
在采访邮件中,Qualys 公司漏洞威胁研究总监 Bharat Jogi 回复道:
可能性最大的攻击场景来自内部威胁,恶意用户可以一路从无权限升级至完全 root 权限。而从外部威胁的角度来看,只要攻击者能够通过其他漏洞或密码泄露方式在系统上初步驻留,接下来就能利用这项漏洞提升至完全 root 权限。Jogi 还提到,攻击者需要对存在漏洞的设备进行本地身份验证访问,之后才能真正利用这个 bug。如果未经身份验证,则此 bug 无法远程运行。
点击此处可查看漏洞利用视频。
目前,Qualys 公司并未发布漏洞利用概念验证代码,这主要是担心说得太多会给黑客们可乘之机。但另一来源已经发布了概念验证代码,研究人员们还表示 PownKit 被攻击者们实际利用恐怕将只是时间问题。
SANS 渗透测试员兼漏洞处置人员 Bojan Zdrnja 表示,“预计这项漏洞将很快广为人知,攻击者也会着手加以利用。所以任何允许用户访问 shell 的多用户系统都要当心了。”这位研究人员还强调,他已经成功在运行有 Ubuntu 20.04 的设备上验证了漏洞利用效果。
发现这项漏洞的还不止是 Qualys 公司的研究人员们,之前也有人发现了同样、至少是非常相似的 bug。2013 年,研究员 Ryan Mallon 公开报告了几乎相同的问题:,甚至为此编写了修复补丁,但他一直找不到成功利用该漏洞的方法。而去年 6 月,Github 安全研究员 Kevin Backhouse 报告了另一个权限提升漏洞,最终被收录为 CVE-2021-3560 并由各大 Linux 发行商创建了修复补丁。
我在 2013 年就写过一篇关于 polkit 漏洞的博文: https://t.co/a6ciqwCmyt。我一直没能找到实际利用这个漏洞的办法,但已经发现了引发漏洞的根本原因。
— Ryan Mallon (@ryiron) 2022年1月26日
各大 Linux 发行版已经针对此漏洞发布了补丁,安全专家们强烈敦促管理员们尽快安装。如果无法立即修复,用户也应使用 chmod 0755 /usr/bin/pkexec 命令将 pkexec 中的 SUID 位删除,以防止它在非特权用户的执行操作中以 root 身份运行。感兴趣的朋友可以点击此处、此处和此处分别参考 Debian、Ubuntu 与 Red Hat 发布的处理建议。
如果大家想审查自己的系统是否已经被入侵,可以查看日志条目中是否存在“The value for the SHELL variable was not found the /etc/shells file(在/etc/shells 文件中找不到 SHELL 变量的值)”或者“The value for environment variable […] contains suspicious content(环境变量的值…包含可疑内容)”之类的异常信息。
但 Qualys 也提醒大家,攻击者完全有办法在利用 PwnKit 的同时不留下任何痕迹。总之小心为上,祝好运。
原文链接:
评论