sechub官方2023-07-13文章来源:SecHub网络安全社区
近期,国外安全研究团队在 polkit 的 pkexec 中发现存在的本地权限提升漏洞(CVE-2021-4034)
关于 Polkit pkexec for Linux Polkit(以前称为 PolicyKit)是一个用于在类 Unix 操作系统中控制系统范围权限的组件。它为非特权进程与特权进程通信提供了一种有组织的方式。也可以使用 polkit 执行具有提升权限的命令,使用命令 pkexec 后跟要执行的命令(具有 root 权限)。
原理:polkit 的 pkexec 实用程序中存在一个本地权限提升漏洞。当前版本的 pkexec 无法正确处理调用参数计数,并最终尝试将环境变量作为命令执行。攻击者可以通过控制环境变量来利用这一点,从而诱导 pkexec 执行任意代码。利用成功后,会导致本地特权升级,非特权用户获得管理员权限。
Debain stretch policykit-1 < 0.105-18+deb9u2
Debain buster policykit-1 < 0.105-25+deb10u1
Debain bookworm, bullseye policykit-1 < 0.105-31.1
Ubuntu 21.10 (Impish Indri) policykit-1 < 0.105-31ubuntu0.1
Ubuntu 21.04 (Hirsute Hippo) policykit-1 Ignored (reached end-of-life)
Ubuntu 20.04 LTS (Focal Fossa) policykit-1 < 0.105-26ubuntu1.2)
Ubuntu 18.04 LTS (Bionic Beaver) policykit-1 <0.105-20ubuntu0.18.04.6)
Ubuntu 16.04 ESM (Xenial Xerus) policykit-1 <0.105-14.1ubuntu0.5+esm1)
Ubuntu 14.04 ESM (Trusty Tahr) policykit-1 <0.105-4ubuntu3.14.04.6+esm1)
CentOS 6 polkit < polkit-0.96-11.el6_10.2
CentOS 7 polkit < polkit-0.112-26.el7_9.1
CentOS 8.0 polkit < polkit-0.115-13.el8_5.1
CentOS 8.2 polkit < polkit-0.115-11.el8_2.2
CentOS 8.4 polkit < polkit-0.115-11.el8_4.2
CentOS系列:
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
Ubuntu系列:
Ubuntu 20.04 LTS:policykit-1 - 0.105-26ubuntu1.2
Ubuntu 18.04 LTS:policykit-1 - 0.105-20ubuntu0.18.04.6
Ubuntu 16.04 ESM:policykit-1 - 0.105-14.1ubuntu0.5+esm1
Ubuntu 14.04 ESM:policykit-1 - 0.105-4ubuntu3.14.04.6+esm1
1、攻击者需要一个本地用户权限
2、恶意文件需要可执行
上传测试文件到当前目录下,当前无执行权限,需要加执行权
使用此文件需要经过gcc编译,如没有gcc自行下载,此测试文件来自:https://github.com/arthepsy/CVE-2021-4034
输入:gcc cve-2021-4034-poc.c -o exp
得到exp文件:./exp 即可执行,验证id,得到当前权限为root
上传整个测试目录到当前目录下,当前目录下文件无执行权限,需要加执行权,此测试文件来自:https://github.com/berdav/CVE-2021-4034
cd CVE-2021-4034
make
./CVE-2021-4034
输入make,得到【cve-2021-4034】文件,./cve-2021-4034执行,验证id,当前权限为root
CentOS 用户可采用如下命令升级到安全版本或更高版本:
yum clean all && yum makecache
yum update polkit -y
验证修复,通过以下命令可查看 Polkit 是否为安全版本:
rpm -qa polkit
Ubuntu 用户可采用如下命令升级至安全版本或更高版本:
sudo apt-get update
sudo apt-get install policykit-1
验证修复,通过以下命令可查看 Polkit 是否为安全版本:
dpkg -l policykit-1
Ubuntu:https://ubuntu.com/security/CVE-2021-4034
Redhat:https://access.redhat.com/security/cve/CVE-2021-4034
Debian:https://security-tracker.debian.org/tracker/CVE-2021-4034