Pkexec中本地权限升级漏洞的技术细节分析

Qualys研究团队在polkit的pkexec中发现了一个内存破坏漏洞,pkexec是一个SUID-root程序,默认安装在每个主要的Linux发行版上。这个容易被利用的漏洞允许任何没有相关权限的用户通过利用默认配置中的这个漏洞获得脆弱主机上的完全根权限。

关于Polkit pkexec for Linux

Polkit(以前是PolicyKit)是一个用于控制类unix操作系统中的系统权限的组件。它为非权限进程提供了一种有组织的方式来与权限进程进行通信。还可以使用polkit来执行具有更高权限的命令,使用命令pkexec,后面跟着要执行的命令(具有根权限)。

PwnKit漏洞的潜在影响

如果有人成功利用该漏洞,任何非权限用户都可以获得该漏洞主机上的root权限。Qualys的安全研究人员已经能够独立验证该漏洞,并利用该漏洞,进而获得Ubuntu、Debian、Fedora和CentOS默认安装的全部root权限。其他 Linux 发行版可能容易受到攻击并且可能被利用。这个漏洞已经隐藏了 12 年多,并影响自 2009 年 5 月第一个版本以来的所有 pkexec 版本(commit c8c3d83, “Add a pkexec(1) command”)。

在我们的研究团队确认该漏洞后,Qualys负责漏洞的披露,并与供应商和开源发行方协调,公布了该漏洞。

潜在漏洞利用路径的视频可以点此查看。(https://player.vimeo.com/video/669715589)

另外可以查看本视频(https://player.vimeo.com/video/670582239),了解如何使用Qualys VMDR查看PwnKit漏洞。

PwnKit漏洞的技术细节介绍

pkexec的main()函数的开头处理命令行参数(第534-568行),如果它的路径不是绝对的,则在path环境变量的目录中搜索要执行的程序(第610-640行):

不幸的是,如果命令行参数argc的数量是0,这意味着如果我们传递给execve()的参数列表argv是空的,即{NULL},那么argv[0]就是NULL。这是参数列表的终止符。所以:

在第534行,整数n被永久地设置为1;

在第610行,从argv[1]越界读取指针路径;

在第639行,指针s被越界写入argv[1];

但是,这个越界的argv[1]到底要读写什么呢?

要回答这个问题,我们必须稍微离题一下。当execve()一个新程序时,内核将我们的参数、环境字符串和指针(argv和envp)复制到新程序堆栈的末尾,例如:

显然,因为argv和envp指针在内存中是连续的,如果argc是0,那么越界的argv[1]实际上是envp[0],指向我们的第一个环境变量value的指针。结果:

在第 610 行,要执行的程序的路径从 argv[1](即 envp[0])越界读取,并指向“value”;

在第 632 行,这个路径“value”被传递给 g_find_program_in_path()(因为“value”在第629行不是以斜杠开头的);

然后,g_find_program_in_path() 在我们的 PATH 环境变量的目录中搜索一个名为“value”的可执行文件;

如果找到这样的可执行文件,则将其完整路径返回给 pkexec 的 main() 函数(在第 632 行);

最后,在第 639 行,这个完整路径被越界写入 argv[1](即 envp[0]),从而覆盖了我们的第一个环境变量。

所以,更准确地说:

如果我们的PATH环境变量是” PATH=name “,并且目录” name “存在(在当前工作目录中)并且包含一个名为” value “的可执行文件,那么一个指向字符串” name/value “的指针将被写入envp[0]。

如果我们的 PATH 是“PATH=name=.”,并且目录是“name=.”存在并包含一个名为“value”的可执行文件,然后将指向字符串“name=./value”的指针越界写入 envp[0]。

换句话说,这种越界写入允许我们将“不安全的”环境变量(例如,LD_PRELOAD)重新引入到pkexec的环境中。在调用main()函数之前,这些“不安全的”变量通常会(通过ld.so)从SUID程序的环境中删除。我们将在下一节中使用这个强大的原语。

不过要注意的是,polkit也支持非linux操作系统,如Solaris和*BSD,但我们尚未调查它们的可利用性。然而,我们注意到OpenBSD是不可利用的,因为如果argc为0,它的内核拒绝execve()一个程序。

如何修复PwnKit漏洞

考虑到该漏洞在Linux和非Linux操作系统中的攻击范围,Qualys建议用户立即更新此应用。

目前Qualys客户可以搜索CVE-2021-4034的相关新闻,以识别该漏洞的所有QID 和设备。

现在可以开始免费的 Qualys VMDR 试用,以获得对 CVE-2021-4034 的 QID(检测)的完全访问权限,其中可以识别所有易受攻击的设备。

Qualys研究团队在polkit的pkexec中发现了一个内存破坏漏洞,pkexec是一个SUID-root程序,默认安装在每个主要的Linux发行版上。这个容易被利用的漏洞允许任何没有权限的用户通过利用默认配置中的这个漏洞获得脆弱主机上的完全根权限。

关于Linux的Polkit pkexec

Qualys QID 覆盖范围

Qualys 将发布下表中的 QID,因为它们从 vulnsigs 版本 VULNSIGS-2.5.387-2 和 Linux 云代理清单版本 lx_manifest-2.5.387.2-1 开始可用。

使用 Qualys VMDR 发现易受攻击的 Linux 服务器

识别运行 Linux 内核的设备

接下来会介绍当前 Qualys 客户如何在他们的环境中检测 PwnKit。

管理这一关键漏洞和降低风险的第一步是识别运行Linux操作系统的所有设备。Qualys VMDR使得识别此类设备变得很容易。

Query: operatingSystem.category1:`Linux`

一旦主机被识别出来,就可以将它们与“动态标签”组合在一起,比如说:“Linux 服务器”。这有助于自动对具有上述漏洞的现有主机以及在你的环境中启动的任何新 Linux 设备进行分组。标签使得这些分组设备可以在整个Qualys云平台上进行查询、报告和管理。

基于 RTI 的优先级

使用 Qualys VMDR,可以使用以下实时威胁指标 (RTI) 确定 PwnKit 漏洞的优先级:

  • Predicted_High_Risk
  • Privilege_Escalation
  • Easy_Exploit
  • High_Lateral_Movement

使用Qualys VMDR修复

我们预计供应商将在短期内发布针对该漏洞的修复。当修复可用时,Qualys Patch Management可用于将这些修复部署到易受攻击的设备中。

使用基于上述 RTI 方法的相同优先级,客户可以使用漏洞右侧的“立即修复”按钮将 PwnKit 添加到修复作业中。一旦修复发布,Qualys将找到该漏洞的相关修复,并自动将这些修复添加到修复作业中。这将允许客户将这些修复部署到易受攻击的设备上,所有这些修复都来自Qualys云平台。

使用威胁防护检测受影响的设备

VMDR还允许你使用威胁保护自动映射易受PwnKit漏洞攻击的设备。

使用 VMDR 仪表板跟踪漏洞

使用 VMDR 仪表板,你可以实时跟踪此漏洞、受影响的主机、状态和整体管理。为仪表板小部件启用趋势分析后,你可以使用“PwnKit”仪表板跟踪环境中的这些漏洞发展趋势。

利用 Qualys XDR 识别漏洞利用尝试

Qualys XDR 客户可以使用标题为“T1068 – Linux:检测到 Polkit pkexec 本地特权升级漏洞 (CVE-2021-4034)”的规则名称来检测受影响系统上的利用后活动。启用后,客户还可以使用以下 QQL 查询搜索易受攻击的系统:

  • eventName:” The value for the SHELL variable was not found the /etc/shells file“ or “contains suspicious content“

客户将能够看到类似以下截图的输出:

常见问题

哪些版本易受攻击?

从2009年开始的所有Polkit版本都很脆弱。

Qualys研究团队是否会发布此漏洞的利用代码?

不会。但鉴于利用该漏洞非常容易,我们预计在本博客发布日期后的几天内,公开的漏洞利用将变得可用。

是否有缓解措施?

如果你的操作系统没有可用的补丁,你可以从 pkexec 中删除 SUID 位作为临时缓解措施;例如:

# chmod 0755/usr/bin/pkexec

这个漏洞可以远程利用吗?

不可以,但是如果攻击者可以以任何非特权用户身份登录,则可以快速利用该漏洞来获得 root 特权。

能不能查到被攻击的证据?

是的,这种利用技术会在日志中留下痕迹,比如“在/etc/ SHELL文件中找不到SHELL变量的值”或者“环境变量的值[……]包含可疑内容”。但是,请注意,这个漏洞也可以被利用,不会在日志中留下任何痕迹。

本文翻译自:https://blog.qualys.com/vulnerabilities-threat-research/2022/01/25/pwnkit-local-privilege-escalation-vulnerability-discovered-in-polkits-pkexec-cve-2021-4034

文章来源网络,作者:运维,如若转载,请注明出处:https://shuyeidc.com/wp/121737.html<

(0)
运维的头像运维
上一篇2025-02-22 00:39
下一篇 2025-02-22 00:41

相关推荐

  • 个人主题怎么制作?

    制作个人主题是一个将个人风格、兴趣或专业领域转化为视觉化或结构化内容的过程,无论是用于个人博客、作品集、社交媒体账号还是品牌形象,核心都是围绕“个人特色”展开,以下从定位、内容规划、视觉设计、技术实现四个维度,详细拆解制作个人主题的完整流程,明确主题定位:找到个人特色的核心主题定位是所有工作的起点,需要先回答……

    2025-11-20
    0
  • 社群营销管理关键是什么?

    社群营销的核心在于通过建立有温度、有价值、有归属感的社群,实现用户留存、转化和品牌传播,其管理需贯穿“目标定位-内容运营-用户互动-数据驱动-风险控制”全流程,以下从五个维度展开详细说明:明确社群定位与目标社群管理的首要任务是精准定位,需明确社群的核心价值(如行业交流、产品使用指导、兴趣分享等)、目标用户画像……

    2025-11-20
    0
  • 香港公司网站备案需要什么材料?

    香港公司进行网站备案是一个涉及多部门协调、流程相对严谨的过程,尤其需兼顾中国内地与香港两地的监管要求,由于香港公司注册地与中国内地不同,其网站若主要服务内地用户或使用内地服务器,需根据服务器位置、网站内容性质等,选择对应的备案路径(如工信部ICP备案或公安备案),以下从备案主体资格、流程步骤、材料准备、注意事项……

    2025-11-20
    0
  • 如何企业上云推广

    企业上云已成为数字化转型的核心战略,但推广过程中需结合行业特性、企业痛点与市场需求,构建系统性、多维度的推广体系,以下从市场定位、策略设计、执行落地及效果优化四个维度,详细拆解企业上云推广的实践路径,精准定位:明确目标企业与核心价值企业上云并非“一刀切”的方案,需先锁定目标客户群体,提炼差异化价值主张,客户分层……

    2025-11-20
    0
  • PS设计搜索框的实用技巧有哪些?

    在PS中设计一个美观且功能性的搜索框需要结合创意构思、视觉设计和用户体验考量,以下从设计思路、制作步骤、细节优化及交互预览等方面详细说明,帮助打造符合需求的搜索框,设计前的规划明确使用场景:根据网站或APP的整体风格确定搜索框的调性,例如极简风适合细线条和纯色,科技感适合渐变和发光效果,电商类则可能需要突出搜索……

    2025-11-20
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注