Linux CUPS 9.9/10 评分高危漏洞 Ubuntu下的修复方法,Canonical已发布安全更新补丁

原文

以下内容整理、翻译自下述来源:

省流版

  • Ubuntu已经释放更新,能更新的就通过 sudo apt update && sudo apt upgrade 更新即可。
  • 不用打印,没有cups-browsed的不受影响,大部分VPS应该都没有这个问题。
  • 部署防火墙规则是个好习惯

CUPS远程代码执行漏洞修复

四个CVE ID已被分配,这些ID共同构成了围绕CUPS的高影响力漏洞链: CVE-2024-47076CVE-2024-47175CVE-2024-47176CVE-2024-47177

Canonical安全团队已为所有在标准支持下的Ubuntu LTS 版本发布了cups-browsed、cups-filters、libcupsfilters 和 libppd 包的更新。这些更新修复了CVE-2024-47076、CVE-2024-47175 和 CVE-2024-47176,而CVE-2024-47177则通过修复其他三个漏洞得以解决。有关受影响版本的信息可以在上述链接的CVE页面上找到。如果您已安装这些组件,建议尽快更新。阅读下文了解更多详细信息。ESM版本的安全更新也将在近期发布。

漏洞链的工作原理

核心上,该漏洞通过诱骗CUPS生成一个由攻击者控制的打印机PPD(PostScript Printer Description)文件来利用,PPD文件中包含任意命令。每当下一次打印作业发送到该打印机时,该命令将以lp用户身份执行(这是CUPS守护进程运行的用户,除非存在其他可利用的漏洞,否则不会具有提升的权限)。

生成被操控的PPD文件有两条途径:

  • 在本地网络上,mDNS可用于自动注册新打印机或替换现有打印机关联的PPD文件。这要求攻击者能够生成多播数据报并将其发送到cups-browsed守护进程(端口631)。由于多播流量不会通过互联网转发,此攻击向量虽有所减少,但仍具有相当的威胁。
  • 在任何网络(包括互联网)上,可以使用基于UDP的旧协议来注册带有恶意PPD文件的新打印机。这要求攻击者能够向目标主机的端口631(由cups-browsed处理)发送UDP数据报。防火墙(或NAT路由器)可以阻止此攻击向量。

影响有限

虽然这是一个远程代码执行漏洞链,但需要注意的是,攻击者必须克服一些障碍才能利用这些漏洞并真正实现远程代码执行。

首先,目标系统必须启用cups-browsed守护进程,通常默认情况下并未启用该服务,才能在网络上暴露其UDP端口。接下来,攻击者还需要诱骗用户从其本地网络上突然出现的恶意打印服务器进行打印操作。

正如Sonatype的现场CTO Ilkka Turunen所描述:

“这是一个漏洞链,依赖于在本地网络中伪造打印机,如果启用了网络发现功能,该打印机会被自动添加——但这通常不是默认配置。然后,利用CUPS系统中的其他漏洞通过一个未验证的变量执行代码,但仅在触发打印作业时执行。”

“好消息是——这是一个RCE漏洞,但有几个缓解因素,包括攻击者需要能够通过UDP连接到计算机,而UDP在网络入口处通常被禁用,并且该服务通常默认未开启。看起来其现实世界的影响较低。”

基于这些原因,Red Hat将这些漏洞评为“重要”级别的严重性,而非关键级别。

尽管BleepingComputer的测试表明大多数Linux服务器默认情况下未启用该服务,但我们的一台Ubuntu虚拟机启用了它。其他人也在Twitter上指出,cups-browsed在他们的Linux设备上默认启用了。

受影响的对象

CUPS,或更具体地说,cups-browsed通常安装在配置为打印服务器的桌面计算机和服务器上。漏洞链仅在发送打印作业时才会完成——因此如果从未打印,即使安装了漏洞组件并且恶意攻击者尝试了漏洞利用,也不会发生命令执行。

我们建议任何安装了受影响组件的用户尽快应用安全更新。没有配置适当防火墙规则的服务器以及可能连接到不受信任网络的笔记本电脑尤其容易受到攻击。

如何应对

我们建议您升级所有软件包,并重启CUPS守护进程:

sudo apt update && sudo apt upgrade  
sudo systemctl restart cups.service  

如果这无法实现,可以只针对受影响的组件进行更新:

sudo apt update && sudo apt install --only-upgrade cups-browsed cups-filters cups-filters-core-drivers libcupsfilters2t64 libppd2 libppd-utils ppdc  
sudo systemctl restart cups  

从Ubuntu 16.04 LTS开始,默认启用了自动升级功能。该服务:

  • 每24小时自动应用新的安全更新
  • 如果启用了该功能,以上补丁将在24小时内自动应用
  • 不过,我们仍建议使用systemctl restart cups.service重启CUPS守护进程

缓解措施

最强的防护是应用安全更新。以下缓解措施已被探讨,但有其局限性,且可能导致意外的副作用。

对于桌面计算机,移除cups-browsed组件或禁用网络协议将影响网络打印机的检测能力。

对于打印服务器,禁用网络打印机检测可以作为一种适当的缓解措施,因为已配置的打印机将继续可用。但在Ubuntu系统上,修改相关的配置文件将阻止未来的自动升级成功完成。因此,我们不推荐此方法。如果无法应用安全更新,您应该仅在最后手段时遵循以下步骤,并在应用更新后恢复原始配置文件。

以下缓解步骤将移除打印服务器检测新网络打印机的能力,并阻止恶意PPD文件的注入:

  1. 编辑 /etc/cups/cups-browsed.conf
  2. 查找 BrowseRemoteProtocols 配置选项
  3. 将选项设置为 none(默认值为 "dnssd cups")
  4. 使用 systemctl restart cups-browsed 重启cups-browsed

在暂时无法升级情况下的缓解措施

停止运行cups-browsed服务,并通过以下命令阻止其在重启时启动,以切断漏洞链:

sudo systemctl stop cups-browsed  
sudo systemctl disable cups-browsed  

使用以下命令检查系统上是否正在运行cups-browsed:

sudo systemctl status cups-browsed  

如果结果显示 "Active: inactive (dead)",则漏洞链已被阻断,系统不再易受攻击。如果结果显示 "running" 或 "enabled",并且在配置文件 /etc/cups/cups-browsed.conf 中的 BrowseRemoteProtocols 指令包含值 "cups",则系统仍然存在漏洞。

点赞
  1. rar说道:

    雞太多了,一個個修復太累了

  2. hetray说道:

    @rar #1 不用打印机,没有cups-browsed的就不受影响,大部分vps应该都没有这个问题

  3. NiDie-1688说道:

    debian能用嗎?

发表回复

电子邮件地址不会被公开。必填项已用 * 标注

×
订阅图标按钮