直接执行 chmod u-s /usr/bin/pkexec 可快速缓解 CVE-2021-4034 漏洞,因其移除 SUID 位后 pkexec 不再以 root 身份运行,使利用链失效,且不影响 polkit 正常功能。

直接执行 chmod u-s /usr/bin/pkexec 即可临时取消 SUID 权限,这是 CVE-2021-4034 最快、最有效的缓解手段。
为什么这个命令能快速止血
漏洞本质是 pkexec 作为 SUID root 程序,在解析空参数时会越界读取环境指针并触发恶意环境变量加载(如 GCONV_PATH)。只要去掉 SUID 位,它就退化为普通程序,不再以 root 身份执行,整个利用链立即失效。
-
pkexec本身不依赖 SUID 运行——它靠 polkit 后端做权限决策;去掉u+s后功能不受影响,只是无法绕过认证直接提权 - 执行后
ls -l /usr/bin/pkexec应显示-rwxr-xr-x(小写x),而非-rwsr-xr-x(带s) - 该操作瞬时生效,无需重启服务或重载任何进程
执行前必须确认的三件事
避免误操作导致系统管理功能异常:
Linux 安全审计工具,检查 SSH 配置、开放/监听端口、防火墙规则(ufw/iptables/nftables)、失败登录尝试、sudoers 权限...
- 先检查当前状态:
ls -l /usr/bin/pkexec—— 若已显示-rwxr-xr-x,说明已被修复或原本就没设 SUID - 确认文件归属:
rpm -qf /usr/bin/pkexec(RHEL/CentOS)或dpkg -S /usr/bin/pkexec(Debian/Ubuntu),确保它是官方包提供,不是被篡改的二进制 - 不要在无人值守的生产环境直接跑
chmod u-s—— 某些旧版桌面环境(如 GNOME 3.28 之前)可能用pkexec启动图形配置工具,临时去权后点开设置项会弹认证失败,但不影响核心服务
别踩这些坑
常见错误操作反而引入新风险:
- 用
chmod 0755 /usr/bin/pkexec—— 数字模式会覆盖全部权限,若原权限含g+x或o+x可能误删,应只操作 SUID 位:u-s - 顺手删掉
/usr/bin/pkexec文件 —— 这会导致 polkit 完全不可用,sudo不受影响,但系统设置、打印机配置等 GUI 工具可能报错 - 以为
systemctl restart polkit能重载 SUID —— SUID 是文件属性,跟服务进程无关,重启无意义 - 在容器镜像里提前
chmod u-s后运行 —— 有效,但要注意:若容器以--cap-add=SETUIDS启动,且镜像内有其他 SUID 文件,仍需整体评估
真正要留心的是:这个操作只是缓解,不是根治。后续必须升级 polkit 包到修复版本(如 RHEL 7 是 polkit-0.112-26.el7_9.1 及以上),否则一旦恢复 SUID 就重新暴露。很多运维习惯性“先去权再等补丁”,结果补丁拖了几个月,chmod u+s 又被某次自动化脚本悄悄加回去——这才是最常被忽略的盲点。










