若普通用户能执行特权操作,需依次检查:一、pkexec是否受CVE-2021-4034影响;二、PAM是否误判SSH会话为allow_active;三、udisks2及libblockdev权限校验是否失效;四、是否存在异常setuid/setgid文件;五、sudoers是否配置过宽NOPASSWD规则。

如果您在Linux系统中发现普通用户能够执行本应仅限root或特权用户的操作,则可能是由于底层安全机制被绕过或配置错误导致权限被意外提升。以下是针对该风险的具体分析路径:
一、检查 pkexec 工具是否存在 CVE-2021-4034 漏洞
pkexec 是 Polkit 提供的 setuid 工具,用于授权非特权用户以其他用户身份运行命令;若其参数处理逻辑存在缺陷,攻击者可操控环境变量触发任意代码执行,从而实现本地提权。该漏洞自2009年引入以来广泛影响主流发行版。
1、执行 ls -l /usr/bin/pkexec 查看是否具有 SUID 权限(输出中应含 rwsr-xr-x)。
2、运行 pkexec --version 获取当前版本号,并比对已知不安全版本(如 Ubuntu 20.04 中低于 0.105-26ubuntu1.2 的版本)。
3、若确认存在漏洞且暂无法升级,立即执行 chmod 0755 /usr/bin/pkexec 移除 SUID 位作为临时缓解措施。
二、验证 PAM 配置是否误将远程会话识别为 allow_active
Linux PAM 配置错误可能导致 SSH 登录用户被错误标记为 allow_active 会话,进而绕过 polkit 策略限制,获得对 UDisks 等服务的越权访问能力,最终触发 CVE-2025-6018 类漏洞链。
1、检查 /etc/pam.d/common-session 或对应 SSH 会话配置文件中是否存在未加限制的 pam_systemd.so 调用。
2、确认 /etc/polkit-1/rules.d/ 目录下是否有规则显式授予非本地会话对 org.freedesktop.UDisks2.* 接口的 full-control 权限。
3、使用 loginctl show-session $(loginctl | grep $(whoami) | awk '{print $1}') -p Type 查看当前会话类型,输出应为 tty 或 seat,而非 unspecified 或 x11(SSH 会话不应被识别为 active)。
三、审计 udisks2 服务及其依赖库权限校验行为
UDisks2 守护进程通过 D-Bus 暴露磁盘管理接口,若底层 libblockdev 库未正确校验调用者会话状态与权限等级,结合 PAM 误判,可使普通用户构造恶意挂载请求完成提权。
1、运行 systemctl is-active udisks2 确认服务处于运行状态。
2、检查 udisksctl info -b /dev/sda 是否允许非 root 用户成功执行(正常应返回拒绝信息)。
3、查看 /usr/lib/udisks2/udisksd --version 输出,并核对是否达到修复版本(如 Ubuntu 20.04 LTS 需 ≥ 2.9.4-1ubuntu2.2)。
四、排查系统中是否存在异常的 setuid/setgid 二进制文件
非预期的 setuid/setgid 文件可能成为提权入口点,尤其当其存在缓冲区溢出、命令注入等传统漏洞时,可被本地用户直接利用。
1、执行 find /usr/bin /bin /usr/sbin /sbin -perm -4000 -o -perm -2000 -type f 2>/dev/null 列出所有特权程序。
2、对列表中非标准系统工具(如自编译程序、第三方安装包)使用 file 和 ldd 检查其完整性与依赖关系。
3、针对可疑文件,运行 strings [binary] | grep -i "exec\|system\|popen" 初步判断是否存在危险函数调用痕迹。
五、审查 sudoers 配置中是否存在宽泛的 NOPASSWD 权限分配
sudoers 文件中过度宽松的规则(如 ALL=(ALL) NOPASSWD: ALL)虽属管理员主动配置,但一旦账户凭证泄露,即构成事实上的权限意外提升通道。
1、运行 sudo -l -U $(whoami) 查看当前用户被授予的 sudo 命令范围。
2、检查 /etc/sudoers 及 /etc/sudoers.d/ 下所有文件,定位含 NOPASSWD 关键字且未限定命令路径的条目。
3、使用 visudo -c 验证语法正确性,并确保每条特权规则均遵循最小权限原则,明确指定绝对路径与参数约束。










