PwnKit 是什么
polkit 的 pkexec 曾被披露本地提权漏洞 PwnKit(CVE-2021-4034):任何已登录的普通用户都能借此拿到 root,利用不需要交互、成功率很高。自查要点是确认 polkit 版本并与发行版公告给出的修复版本比对,未修复就升级。判断是否受影响不看业务有没有用到 polkit,只要 pkexec 文件存在且可执行,就具备被利用的条件。
基本信息
| 影响组件 | polkit,Debian 系包名为 policykit-1,核心文件 /usr/bin/pkexec |
|---|---|
| 漏洞编号 | CVE-2021-4034(PwnKit) |
| 适用平台 | Linux |
| 风险等级 | 高 |
| 缓解手段 | 升级到修复版本;无法升级时去除 pkexec 执行位 |
典型使用场景
- 收到 PwnKit 通告后做应急排查,确认主机是否受影响
- 多用户主机与容器宿主机等本地提权后果最严重的场景
- 容器镜像安全基线核查,镜像里同样带 polkit
- 取证阶段确认攻击者能否由普通用户提权
- 老旧系统暂时无法升级时的临时缓解处置
版本核查与升级
版本核查与升级
pkexec --version 2>&1 | head -2 # 确认 pkexec 是否存在及版本
rpm -q polkit 2>/dev/null # RHEL 系的包版本
dpkg -l policykit-1 2>/dev/null | tail -2 # Debian 系的包版本
ls -l /usr/bin/pkexec 2>/dev/null # 文件权限与属主,判断是否可执行
dnf update -y polkit 2>/dev/null || apt-get install --only-upgrade -y policykit-1 # 升级到修复版本复核必查项
| 检查项 | 含义 | 处置 |
|---|---|---|
| polkit 版本 | 是否达到发行版公告的修复版本 | 未达标立即升级 |
| 包名差异 | RHEL 系 polkit 与 Debian 系 policykit-1 | 升级命令按发行版写对包名 |
| pkexec 是否存在 | 存在且可执行即具备利用条件 | 不使用则去掉执行位 |
| 容器镜像 | 镜像内同样携带 polkit | 修宿主时同步重建镜像 |
| 临时缓解 | 去除 pkexec 的 SUID 或执行位 | 仅在无法升级时使用并留记录 |
本地提权漏洞对已经登录的低权限用户直接有效:多用户主机、跳板机、容器宿主机的修复优先级最高,一旦有低权账号被拿下就会直接丢 root。
去掉 pkexec 执行位只是缓解,不等于修复;发行版补丁可用后仍要升级,并复查期间是否存在异常的提权或审计痕迹。