据BleepingComputer消息, Linux 系统中广泛使用的打印系统CUPS(Common UNIX Printing System)存在漏洞,能在受攻击的电脑上远程执行任意代码。目前该漏洞尚未有修复补丁。
这些安全漏洞由 Simone Margaritelli 发现,被跟踪为 CVE-2024-47076 (libcupsfilters)、CVE-2024-47175 (libppd)、CVE-2024-47176 (cups-browsed) 和 CVE-2024-47177 (cups-filters),主要涉及到CUPS中的一个组件 cups-browsed。
Cups-browsed 是一个守护进程,可以在本地网络中搜索网络打印机或共享打印机,并使它们可用于在计算机上打印。这类似于 Windows 和 Mac 在网络中搜索需要打印到的远程网络打印机。
Margaritelli 发现,如果启用了 Cups-browsed 守护进程(大多数系统都没有启用),它就会监听 UDP 631 端口,默认情况下还允许从网络上的任何设备创建新打印机的远程连接。如果攻击者创建一个恶意 PostScript 打印机描述(PPD),就可手动将其公布给在 UDP 631 端口上运行的 cups-browsed 进程,从而导致远程设备自动安装恶意打印机,并使其可用于打印。如果该暴露服务器上的用户使用这些新打印机进行打印,PPD 中的恶意命令就会在计算机本地执行。
虽然这是一个远程代码执行攻击,但攻击者必须克服一些障碍才能利用漏洞并真正实现远程代码执行。
首先,目标系统必须启用 cups-browsed 守护程序(默认情况下通常不启用),才能在网络上公开其 UDP 端口。之后,攻击者必须诱骗用户从其本地网络上使用新出现的恶意打印机服务器进行打印。此外,UDP 在网络入口时被广泛禁用,并且该服务通常默认不开启。出于这些原因,Red Hat 已将这些缺陷评级为“重要”而非“严重”级别。
虽然目前漏洞补丁仍在开发中,但 Red Hat分享了缓解措施,管理员可使用以下命令阻止 cups-browsed 服务运行并防止其在重启时自动启用:
sudo systemctl stop cups-browsed
sudo systemctl disable cups-browsed
此外还可以使用以下命令来查明系统是否正在运行 cups-browsed:
sudo systemctl status cups-browsed
如果结果显示 “Active: inactive ”,表明 cups-browsed 已被禁止。如果结果显示 “running” 或 “enabled”,并且 “BrowseRemoteProtocols” 指令在配置文件 /etc/cups/cups-browsed.conf 中包含值 “cups”,表明 cups-browsed正在运行,需要将其关闭。
参考来源:
CUPS flaws enable Linux remote code execution, but there’s a catch