SUSE 安全团队聚焦 2025 年春季
#spotlight目录
- 1) 引言
- 2) GDM:用于修改系统范围网络设置的 Polkit 权限
- 3) Flatpak:家长控制 Polkit 操作
- 4) ModemManager:
CellBroadcastPolkit 操作 - 5) cyrus-imapd:从
cyrus到root的权限提升攻击向量 - 6) systemd-coredump:对 sysctl 配置文件进行的更改
- 7) 结论
1) 引言
虽然 SUSE 安全团队的大部分成员已经享受夏季时光,但我们想回顾一下 2025 年春季在我们团队中发生的一些值得注意的事情。在此期间,我们忙于处理一些我们在其他博文中已经详细介绍过的重要任务和披露流程。
- 从 openSUSE 中移除 Deepin 桌面
- GNU Screen 中的多个安全问题
- Kea DHCP 服务器中的本地权限提升
- 在 SELinux 启用的情况下使 Gaming 在 openSUSE 上正常工作
- sslh 中的远程拒绝服务漏洞
一如往常,在聚焦系列中,我们希望深入了解我们的一些工作,这些工作超出了这些发布的内容:一些审查虽然没有导致重大的安全发现,但仍然让我们忙碌,有时也促成了上游的改进。
这次我们将讨论 GDM、Flatpak 和 ModemManager 中新添加的 Polkit 功能;cyrus-imapd 中的符号链接攻击面以及 systemd-coredump 的 sysctl 配置更改。
2) GDM:用于修改系统范围网络设置的 Polkit 权限
我们的 Gnome 显示管理器 (GDM) 打包人员 要求我们接受一个额外的 Polkit 规则文件,该文件出现在 GDM 48.0 中。新添加的逻辑允许 gdm 服务用户通过 Network Manager D-Bus 接口完全控制系统范围的网络设置。
这样做的原因是显示管理器中的一项功能,允许从登录屏幕修改网络设置。我们对这一更改并不完全满意,因为它是一个对于相当不常见的用例来说过于强大的权限。不过,gdm 服务用户本来就相当强大,而且至少这是一个在此处授予的明确定义的权限。因此,我们接受了此更改。
3) Flatpak:家长控制 Polkit 操作
在 Flatpak 版本 1.16.1 中,出现了一个新的 override-parental-controls-update Polkit 操作。正如该操作的名称所示,这与在 Linux 桌面实现家长控制有关。Flatpak 中此功能的实现有些特殊。例如,一个带有家长控制限制的 Flatpak 应用程序将首先被下载和安装,如果家长控制策略拒绝安装,则会被再次删除。此外,如果应用程序已安装并且有更新可用(这正是新添加的操作所针对的),则会忽略家长控制限制。这样做的原因在于 Flatpak 开发人员认为应用安全修复比强制执行家长控制更重要。
虽然我们没有发现此特定 Polkit 操作背后的逻辑问题,但我们在其与一个较旧的相关 Polkit 操作 override-parental-controls(没有 -update 后缀)的 Polkit 身份验证中发现了一个问题。这两个 Polkit 操作的身份验证方式不安全,它们基于 Polkit UNIX 进程主体,而 Flatpak 中所有其他 Polkit 操作都是基于 D-Bus 发送方主体进行身份验证的。由于这本身不影响系统安全,只影响应用程序级别的策略,因此我们决定 公开报告此问题。尽管如此,我们已经有一段时间没有收到上游对此的回复了。
4) ModemManager:CellBroadcast Polkit 操作
在 ModemManager 版本 1.24.0 中,出现了一个新的 org.freedesktop.ModemManager1.CellBroadcast Polkit 操作。要弄清楚此操作的用途并不容易,因为文档和代码并不完全匹配。我们确定了蜂窝广播 API 的以下特性:
- 蜂窝广播消息是当今蜂窝网络用于广播紧急消息的一项功能。
- ModemManager D-Bus API 允许对任何此类消息进行未经身份验证的读取访问。这没关系,因为这些消息不被视为敏感数据。
CellBroadcastPolkit 操作实际上用于保护这些消息的删除。只有物理上在场用户才能删除它们。从我们的角度来看,这也没有问题。
在验证了新 Polkit 操作的正确使用后,我们将其列入白名单,以便我们的打包人员可以继续将其更新提交给 openSUSE Tumbleweed。
总的来说,ModemManager 拥有一个复杂且不断增长的 API,这使得我们难以跟踪即使是增量更改。这正是我们认为有必要进行更深入研究以避免任何不愉快的意外的原因,特别是考虑到 ModemManager 在许多 Linux 发行版中默认运行。
5) cyrus-imapd:从 cyrus 到 root 的权限提升攻击向量
通过我们对新打包的 systemd 单元文件的常规监控,我们偶然发现了 cyrus-imapd 包,它提供了一个 IMAP 邮件服务器守护进程。我们发现该包存在三个不同的本地权限提升攻击向量,允许从 cyrus 服务用户提升到 root,从而绕过预期的用户隔离。
其中一个攻击向量存在于一个 SUSE 特定的 daily-backup.sh 脚本中,该脚本在 /var/lib/imap 状态目录(bsc#1241536)下以 root 身份运行,而该目录属于 cyrus。该脚本在该目录中执行 chown 和 chmod 操作,这将允许一个被攻破的 cyrus 用户进行符号链接攻击,从而导致本地 root 漏洞。我们为此问题分配了 CVE-2025-23394,并通过仅以 cyrus:mail 凭据而不是 root 身份运行此脚本来修复该问题。
另外两个攻击向量存在于上游代码中,因此我们联系了上游,并与他们讨论了错误修复和协调发布程序。由于这些问题仅影响纵深防御,而不是直接可利用的,因此我们留给上游决定是否分配 CVE。上游认为这些问题严重性较低,因此没有分配 CVE。也没有建立正式的禁运。攻击向量将在接下来的两段中描述。
当依赖 cyrus-imapd 内置的权限下降逻辑时(而不是立即以降低的权限启动它,例如通过 systemd 配置设置),守护进程只会在不安全地操作 /run/cyrus-imapd 和/var/lib/imapd/cores(bsc#1241543)之后才下降权限。这些不安全的文件操作允许一个被攻破的 cyrus 用户在任意位置创建空的、对所有人都可读的文件,截断任意文件,或进入原本无法访问的任意目录。上游的 commit 3a0db22f7 确保 cores 目录仅在权限下降后使用。此外,commit 9634fc8311c 在创建 PID 文件时添加了 O_NOFOLLOW 标志,以防止符号链接攻击。
在审查这些上游错误修复时,我们发现了 另一个符号链接攻击问题,由于一个以 root 身份执行的 chmod(s->listen, 0777),该操作授予了对/run/cyrus-imapd/socket 的全局访问权限,而该路径又处于 cyrus 服务用户的控制之下。当套接字被替换为符号链接时,这可用于进行完整的本地 root 漏洞利用。此 chmod() 调用仅用于遗留 UNIX 系统,上游因此在 commit 81f342bb902 中将其删除。
6) systemd-coredump:对 sysctl 配置文件进行的更改
我们的团队还限制了例如在/etc/sysctl.d 中的 sysctl 配置文件的打包。sysctl 配置设置可能具有安全影响,并且它们的全局性质可能导致具有不同配置需求的软件包之间产生冲突。
我们收到了关于 systemd-coredump 安装的 50-coredump.conf 配置文件内容的 更改请求。作为 CVE-2025-4598 的修复的一部分,需要调整 coredump 处理程序在内核中的安装方式。
对文件的更改很小且易于理解,因此我们很快将其列入白名单,以便 bug 修复过程继续进行。
7) 结论
正如 SUSE 安全团队聚焦版所显示的,即使是小型常规审查工作也能带来对上游项目和潜在漏洞的有趣见解。我们相信,对软件包的持续监控以及与打包人员和上游项目的互动,整体上提高了发行版的安全性,并为整个开源社区带来了净收益。