研究人员在polkit的pkexec组件中发现了一个权限提升漏洞CVE-2021-4034,存在于所有主要Linux发行版的默认配置中,允许经过身份验证的用户执行权限提升攻击。pkexec应用程序是一个setuid工具,允非特权用户根据预定义的策略以特权用户身份运行命令。当前版本的pkexec无法正确处理调用参数计数,并最终尝试将环境变量作为命令执行。攻击者可以通过制作环境变量来利用这一点,从而诱导pkexec执行任意代码。成功执行攻击后,由于目标计算机上的非特权用户拥有管理权限,攻击会导致本地特权提升。

0x00:漏洞概述

2022年1月26日,北京天地和兴安全团队监测到一则Polkit组件存在本地权限提升漏洞的信息,漏洞编号:CVE-2021-4034,漏洞名为PwnKit,CVSS v3得分为7.8分,漏洞威胁等级:高危。

Qualys研究团队在polkit的pkexec中发现了一个内存损坏漏洞,该SUID根程序默认安装在每个主要的Linux发行版上。该漏洞非常容易利用,允许任何未经授权的用户通过在其默认配置中利用此漏洞,来获得易受攻击主机上的完全root权限。

Polkit以前称为PolicyKit,是一个用于在类Unix操作系统中控制系统范围权限的组件,为非特权进程与特权进程通信提供了一种有组织的方式。还可以使用polkit执行具有提升权限的命令,首先使用命令pkexec,然后执行具有root权限的命令。

0x01:影响范围

成功利用此漏洞可允许任何未经授权的用户在易受攻击的主机上获得root权限。安全研究人员已验证了此漏洞,开发了漏洞利用,并在默认安装的Ubuntu、Debian、Fedora和CentOS上获得完整的root权限。其他Linux发行版可能容易受到攻击,并且可能被利用。这个漏洞已经隐藏了12年多,自2009年5月以来的所有pkexec版本均受到影响。由于Polkit是系统预装工具,目前主流Linux版本均受影响。Linux系统广泛应用于工业基础设施、云计算、物联网、人工智能等领域,绝大多数关键基础设施管理服务器均使用Linux系统。

目前受影响的重要Linux发行版本:

Ubuntu 21.10 (Impish Indri) < Released (0.105-31ubuntu0.1)

Ubuntu 21.04 (Hirsute Hippo) Ignored (reached end-of-life)

Ubuntu 20.04 LTS (Focal Fossa) < Released (0.105-26ubuntu1.2)

Ubuntu 18.04 LTS (Bionic Beaver) < Released (0.105-20ubuntu0.18.04.6)

Ubuntu 16.04 ESM (Xenial Xerus) < Released (0.105-14.1ubuntu0.5+esm1)

Ubuntu 14.04 ESM (Trusty Tahr) < Released (0.105-4ubuntu3.14.04.6+esm1)

CentOS 6:polkit-0.96-11.el6_10.2

CentOS 7:polkit-0.112-26.el7_9.1

CentOS 8.0:polkit-0.115-13.el8_5.1

CentOS 8.2:polkit-0.115-11.el8_2.2

CentOS 8.4:polkit-0.115-11.el8_4.2

0x02:漏洞复现/技术细节

该漏洞是由于pkexec在处理传入参数的逻辑出现问题,导致环境变量被污染,最终交由pkexec代码逻辑执行实现客户机权限提升。有普通权限用户的攻击者通过执行漏洞文件,触发越界读写,从而在目标系统上造成权限提升。

漏洞复现过程如下:

0x03:修复及缓解建议

Linux官方已发布安全补丁,建议尽快应用最新安全版本。对于无法立即更新的用户,可执行以下缓解措施:

1、安装所需的systemtap包和依赖项:https://access.redhat.com/solutions/5441。

2、安装polkit调试信息:

debuginfo-install polkit

3.创建systemtap脚本,并将其命名为pkexec-block.stp:

probe process("/usr/bin/pkexec").function("main")

{

if (cmdline_arg(1) == "")

raise(9);

}

4、将systemtap模块加载到正在运行的内核中:

stap -g -F -m stap_pkexec_block pkexec-block.stp

5、确保模块已加载:

lsmod | grep -i stap_pkexec_block

stap_pkexec_block 434176 0

6、一旦polkit包更新到包含修复的版本,通过运行删除systemtap生成的内核模块:

rmmod stap_pkexec_block

使用rmmod命令后,不需要重新启动系统。

参考资源:

【1】https://access.redhat.com/security/vulnerabilities/RHSB-2022-001#mitigation

【2】https://access.redhat.com/security/cve/CVE-2021-4034

【3】https://blog.qualys.com/vulnerabilities-threat-research/2022/01/25/pwnkit-local-privilege-escalation-vulnerability-discovered-in-polkits-pkexec-cve-2021-4034

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