在某些条件下,攻击者可以链接 CUPS 开源打印系统多个组件中的一组漏洞,以在存在漏洞的机器上远程执行任意代码。
这些安全漏洞被标记为 CVE-2024-47076(libcupsfilters)、CVE-2024-47175(libppd)、CVE-2024-47176(cups-browsed)和 CVE-2024-47177(cups-filters),由 Simone Margaritelli 发现,它们不会影响默认配置的系统。
CUPS(通用 UNIX 打印系统的缩写)是 Linux 系统上使用最广泛的打印系统,并且通常也支持运行类 Unix 操作系统(例如 FreeBSD、NetBSD 和 OpenBSD 及其衍生产品)的设备。
其中一个组件是 cups-browsed 守护程序,它会在本地网络中搜索已公布的网络或共享打印机,并让它们在机器上可供打印。这类似于 Windows 和 Mac 在网络中搜索要打印的远程网络打印机的方式。
Margaritelli 发现,如果启用了 cups-browsed 守护进程(大多数系统上都没有这个守护进程),它将监听 UDP 端口 631。默认情况下,它还允许来自网络上任何设备的远程连接来创建新的打印机。
他发现他可以创建一个恶意的 PostScript 打印机描述 (PPD) 打印机,该打印机可以手动播报给在 UDP 端口 631 上运行的暴露的 cups 浏览服务。
这会导致远程计算机自动安装恶意打印机并使其可供打印。如果该暴露服务器上的用户使用新打印机进行打印,PPD 中的恶意命令将在计算机本地执行。
打印时执行的命令是通过foomatic-rip 过滤器添加的,该过滤器在设备上执行命令以便正确呈现打印作业。
对世界的影响有限
虽然这是一个远程代码执行链,但从一开始就应该注意,攻击者必须克服一些障碍才能利用漏洞并真正实现远程代码执行。
首先,目标系统必须启用 cups-browsed 守护程序(通常默认情况下不启用),才能在网络上公开其 UDP 端口。然后,攻击者必须诱骗用户从其本地网络上突然出现在其机器上的恶意打印机服务器进行打印。
Sonatype 现场首席技术官 Ilkka Turunen 表示:“这是一系列漏洞,依赖于欺骗本地网络中的打印机,如果打印机已打开,则会通过网络发现自动添加该漏洞 - 通常不在默认配置中。然后是一个未经验证的变量,用于利用 CUPS 系统中的其他漏洞来执行代码,但仅在触发打印作业时才会发生。”
“好消息是,这是一个 RCE,但有几种缓解措施,包括攻击者需要能够通过 UDP 连接到计算机,而 UDP 在网络入口处被广泛禁用,并且该服务通常默认不启用。看来现实世界的影响很小。”
出于这些原因,Red Hat 将这些漏洞的严重性影响评定为“重要”,而不是“严重”。
虽然 BleepingComputer 的测试显示,我们的大多数 Linux 服务器默认未启用该服务,但我们的一台 Ubuntu VM 启用了该服务。其他人也在 Twitter 上指出,他们的 Linux 设备上默认启用了 cups-browsed。
没有补丁,但有缓解措施
虽然补丁仍在开发中,但 Red Hat 共享了缓解措施,要求管理员停止 cups-browsed 服务运行并防止其在重启时启动,使用以下命令来打破漏洞链:
sudo systemctl stop cups-browsed
sudo systemctl disable cups-browsed
Red Hat 用户还可以使用以下命令来查明 cups-browsed 是否在他们的系统上运行:
sudo systemctl status cups-browsed
如果结果显示“Active: inactive (dead)”,则漏洞利用链已停止,系统不存在漏洞。如果结果显示“running”或“enabled”,且配置文件 /etc/cups/cups-browsed.conf 中的“BrowseRemoteProtocols”指令包含值“cups”,则系统存在漏洞。
详细博客原文见:
https://www.evilsocket.net/2024/09/26/Attacking-UNIX-systems-via-CUPS-Part-I/
原文始发于微信公众号(独眼情报):Linux通用UNIX打印系统存在远程代码执行 0day
- 左青龙
- 微信扫一扫
- 右白虎
- 微信扫一扫
评论