Linux致命漏洞CVE-2025-6018和CVE-2025-6019
Qualys 最近披露了两个影响主流 Linux 发行版的本地权限提升 (LPE) 漏洞,分别是 CVE-2025-6018 和 CVE-2025-6019。这两个漏洞可以被串联利用,使得非特权用户在几秒钟内获得系统的 root 权限,从而实现对系统的完全控制。
一、漏洞详情
这两个漏洞的详细情况如下:
1. CVE-2025-6018:PAM 中的非特权用户到 allow_active
权限提升
- 影响范围: 主要存在于 openSUSE Leap 15 和 SUSE Linux Enterprise 15 的 Pluggable Authentication Modules (PAM) 配置中。
- 漏洞性质: 这是一个本地权限提升漏洞。
- 工作原理: 允许一个非特权的本地攻击者(例如通过 SSH 连接的用户)将权限提升到 "allow_active" 用户。这个 "allow_active" 权限通常保留给物理在场的用户,用于执行特定的 Polkit 操作。Qualys 的研究表明,通过 PAM 的配置缺陷,攻击者可以篡改环境变量,从而绕过 Polkit 的
allow_active
信任区域。
2. CVE-2025-6019:allow_active
用户到 root 权限提升
- 影响范围: 影响
libblockdev
库,并通过udisks
守护进程进行利用,udisks
守护进程在大多数 Linux 发行版中默认安装。 - 漏洞性质: 这是一个本地权限提升漏洞。
- 工作原理: 这个漏洞允许具有 "allow_active" 权限的用户获得完整的 root 权限。即使 CVE-2025-6019 独立利用需要先获得 "allow_active" 权限,但当它与 CVE-2025-6018 串联使用时,一个完全非特权的攻击者也能最终获得 root 权限。攻击者可以利用
udisks
的功能,例如通过挂载带有 SUID-root shell 的任意 XFS 镜像,并请求udisks
守护进程调整文件系统大小(这会在/tmp
挂载时不会带有nosuid
和nodev
标志),从而执行 SUID-root shell,最终获得 root 权限。
二、漏洞链的危害
这两个漏洞的真正危险之处在于它们可以串联使用。具体来说:
- CVE-2025-6018 允许非特权用户将权限提升到 "allow_active" 状态。
- 一旦获得 "allow_active" 权限,攻击者就可以利用 CVE-2025-6019,通过
libblockdev
和udisks
进一步将权限提升到 root。
这意味着,拥有任何活跃 GUI 或 SSH 会话的攻击者,只要利用这两个漏洞,就可以在几秒钟内从普通登录用户直接获得系统的完全控制权。一旦获得 root 权限,攻击者将可以随意修改安全控制、植入后门以进行持久化访问,并将受感染系统作为跳板进行进一步的网络渗透。
Qualys 表示已开发出概念验证 (PoC) 漏洞利用,并在包括 Ubuntu、Debian、Fedora 和 openSUSE Leap 15 在内的多个主流 Linux 发行版上验证了这些漏洞。
三、缓解措施
鉴于这些漏洞的严重性和易于利用性,Qualys 强调这应被视为一个关键且普遍的风险。
- 立即打补丁: 最重要的缓解措施是立即从您的 Linux 发行版供应商处获取并应用相应的补丁。许多主流发行版(如 Ubuntu)已经发布了针对这些漏洞的修复。
- 配置更改: 如果暂时无法打补丁,Qualys 专家建议修改
polkit
规则中针对 "org.freedesktop.udisks2.modify-device" 的allow_active
设置,将其从yes
更改为auth_admin
。这将要求管理员认证才能执行该操作,从而增加利用难度。
四、如何检查你的系统是否受影响
由于这些是新发现的漏洞,并且补丁正在陆续发布,最准确的检查方法是:
-
查看你的发行版官方安全公告: 访问你的 Linux 发行版(如 Ubuntu、Debian、Fedora、openSUSE 等)的官方安全公告页面。搜索 CVE-2025-6018 和 CVE-2025-6019。这些公告会详细说明受影响的版本、已发布的补丁版本以及任何临时的缓解措施。
- Ubuntu: 通常在 Ubuntu Security Notices 页面查找。
- Debian: 可以在 Debian Security Advisories 页面查找。
- Fedora/Red Hat: 可以在 Red Hat Security Advisories 或 Fedora Project Updates 页面查找。
- openSUSE/SUSE: 可以在 SUSE Security Advisories 页面查找。
-
检查相关软件包版本:
- CVE-2025-6018 主要涉及 PAM (Pluggable Authentication Modules) 的配置,尤其是在 openSUSE Leap 15 和 SUSE Linux Enterprise 15 上。Ubuntu 默认安装可能不受此特定漏洞的影响,但最好还是查看官方说明。
- CVE-2025-6019 影响
libblockdev
库,并通过udisks
守护进程利用。这个漏洞在大多数 Linux 发行版中都存在,因为它涉及到udisks
这个普遍存在的组件。 - 你可以使用包管理器查询当前安装的
libblockdev
和udisks2
(或udisks
)软件包版本。- Debian/Ubuntu:
dpkg -l | grep libblockdev
和dpkg -l | grep udisks2
- Fedora/CentOS/RHEL:
rpm -qa | grep libblockdev
和rpm -qa | grep udisks2
- openSUSE/SUSE:
rpm -qa | grep libblockdev
和rpm -qa | grep udisks2
- Debian/Ubuntu:
- 然后将你查询到的版本与官方安全公告中提及的已修复版本进行比对。
-
Qualys 漏洞检测: 如果你的组织使用 Qualys 等漏洞扫描工具,它们会发布相关的 QID(Qualys ID)来检测这些漏洞,通过扫描你的系统可以快速识别是否存在风险。
五、如何更新(打补丁)
更新你的系统以修复这些漏洞的关键在于应用最新的官方补丁。具体步骤取决于你的 Linux 发行版。
1. Ubuntu/Debian
通常,这两个发行版使用 apt
或 apt-get
包管理器。
- 更新包列表:
sudo apt update
- 执行系统升级:
或者执行更全面的发行版升级(如果需要升级到新的主要版本,但在大多数情况下sudo apt upgrade
upgrade
足够):
这会下载并安装所有可用的安全更新和软件包更新,包括针对这两个 CVE 的补丁(如果你的发行版已发布)。sudo apt dist-upgrade
- 检查更新后的版本: 更新完成后,可以再次使用
dpkg -l
命令检查libblockdev
和udisks2
(以及 PAM 相关组件)的版本,并与官方公告中的修复版本进行核对。 - 重启系统: 如果涉及到内核、
glibc
、PAM 或其他核心系统组件的更新,强烈建议重启你的系统以确保所有更改生效,并且旧的、有漏洞的服务进程被替换。
2. Fedora/CentOS/RHEL
这些发行版使用 dnf
或 yum
包管理器。
- 更新包列表并安装更新:
这将下载并安装所有可用的安全更新和软件包更新。sudo dnf update # 或者 sudo yum update
- 检查更新后的版本: 更新完成后,使用
rpm -qa | grep libblockdev
和rpm -qa | grep udisks2
来验证版本是否已更新到安全版本。 - 重启系统: 同样,强烈建议重启系统以确保所有关键组件的更新生效。
3. openSUSE/SUSE Linux Enterprise
openSUSE 使用 zypper
包管理器。
- 更新包列表并安装更新:
或者只安装推荐的更新:sudo zypper refresh sudo zypper update
sudo zypper patch
- 检查更新后的版本: 使用
rpm -qa | grep libblockdev
和rpm -qa | grep udisks2
来验证版本。 - 重启系统: 建议重启系统以应用所有更新。
六、临时缓解措施 (如果无法立即打补丁)
如果无法立即应用补丁,Qualys 建议采取以下临时缓解措施,但这不能完全替代打补丁:
- 修改 Polkit 规则: 修改
/etc/polkit-1/rules.d/
目录下相关的 Polkit 规则文件(可能需要根据你的系统找到正确的文件),将org.freedesktop.udisks2.modify-device
动作的allow_active
设置从yes
更改为auth_admin
。 例如,你可能需要编辑一个类似于/etc/polkit-1/rules.d/10-udisks2.rules
或类似的文件,找到类似以下内容:
将其中的polkit.addRule(function(action, subject) {if (action.id == "org.freedesktop.udisks2.modify-device" &&subject.isInGroup("users") || subject.active) { // subject.active 部分return polkit.Result.YES; // 更改为 polkit.Result.AUTH_ADMIN;} });
polkit.Result.YES
更改为polkit.Result.AUTH_ADMIN
。这会要求管理员认证才能执行该操作,从而增加攻击者利用的难度。请务必小心操作,并在修改前备份相关文件。
重要提示:
- 及时关注官方公告: Linux 发行版会不断发布新的安全更新。请务必定期查看你所用发行版的官方安全公告,以获取最准确和最新的信息。
- 重启的重要性: 即使你的包管理器显示更新已完成,许多核心组件(如PAM库、udev等)的更改只有在进程重启后才能完全生效。对于服务器,这可能意味着需要计划停机以进行完整的系统重启。
七、 排查脚本示例
# 检查是否仍允许 allow_active
grep -A3 modify-device /usr/share/polkit-1/actions/org.freedesktop.UDisks2.policy \
| grep -q "<allow_active>yes</allow_active>" && \
echo "[!] 仍存在风险,需改成 auth_admin"# 检查 libblockdev 版本
rpm -q libblockdev || dpkg -l | grep libblockdev
八、总结
CVE-2025-6018 和 CVE-2025-6019 是非常危险的本地权限提升漏洞,它们可以被串联利用,让非特权用户轻松获得 Linux 系统的 root 权限。系统管理员应高度重视这些漏洞,并尽快采取措施进行修复,以保护系统安全。