严重 CUPS 漏洞使 Linux 和其他系统面临远程攻击

阅读量105914

发布时间 : 2024-09-29 15:50:58

x
译文声明

本文是翻译文章,文章原作者 Do son,文章来源:securityonline

原文地址:https://securityonline.info/critical-cups-vulnerabilities-expose-linux-and-other-systems-to-remote-attacks/

译文仅供参考,具体内容表达以及含义原文为准。

在网络安全的重大发展中,在 CUPS(通用 Unix 打印系统)中发现了多个关键漏洞,CUPS(通用 Unix 打印系统)是 Linux 系统和其他平台(如 BSD、Oracle Solaris 和 Google Chrome OS)上广泛使用的打印服务器。安全研究员 Simone Margaritelli 发现了这些漏洞,并提供了一份全面的文章,详细说明了它们的潜在影响。

CVE 详情

Margaritelli 在他的博客文章中总结了核心问题:

“未经身份验证的远程攻击者可以静默地将现有打印机(或安装新打印机)的 IPP URL 替换为恶意 URL,从而导致在(从该计算机)启动打印作业时(在计算机上)执行任意命令。”

这些漏洞不会影响 Linux 内核本身,但会影响 CUPS 系统的组件。分配的 CVE 包括:

  • CVE-2024-47176漏洞此漏洞存在于 cups-browsed(最高版本 2.0.1)中。cups-browsed 守护程序在端口 631 上侦听 UDP 数据包,并使用 DNS 服务发现自动查找打印机,使其可供用户使用。该漏洞是由于未正确验证打印机发现期间收到的 URL 造成的。攻击者可利用此漏洞诱骗 cups-browsed 请求任意 URL。
  • 漏洞:CVE-2024-47076此漏洞存在于 libcupsfilters(最高版本 2.1b1)中,它与库如何处理文件转换以使其可在特定打印机上打印有关。与上一个问题类似,它允许攻击者注入恶意数据,这些数据会传递到其他 CUPS 组件。
  • CVE-2024-47175漏洞此漏洞会影响 libppd(最高版本 2.1b1)。该库无法验证 IPP 属性,并无意中将它们添加到 PPD(PostScript 打印机描述)文件中,然后由驱动程序和其他组件使用,这可能会导致进一步的漏洞利用。
  • CVE-2024-47177漏洞在 cups-filters(版本 2.0.1)中,此缺陷允许由无效的 PPD 参数触发任意命令执行。cups-filters 组件执行外部代码(“filters”)来转换文件。通过接受来自未经验证的外部来源的数据,它为攻击者执行任意代码打开了大门。具体来说,“foomatic-rip”过滤器使攻击者能够提供任意命令行。

此外,根据 Margaritelli 的说法,还有“其他几个或多或少可以利用的错误”。

利用链

这些漏洞可以链接在一起以实现远程代码执行。利用过程包括:

  1. 启用 cups-browsed:必须在目标系统上手动启用或启动 cups-browsed 服务。
  2. 访问易受攻击的服务器:攻击者通过以下方式获得对易受攻击的服务器的访问权限:
    • 不受限制的公共 Internet 访问,或
    • 访问本地连接受信任的内部网络。
  3. 公布恶意 IPP 服务器:攻击者公布虚假 IPP 服务器,从而有效地配置恶意打印机。
  4. 受害者发起打印作业:用户尝试使用恶意打印机进行打印。
  5. 执行任意代码:攻击者在打印作业启动期间在受害者的计算机上执行任意代码。

值得注意的是,假设 CUPS 端口通过路由器或防火墙打开,则可以通过公共互联网通过将 UDP 数据包发送到端口 631 来利用这种远程代码执行,而无需任何身份验证。LAN 攻击也可以通过欺骗 zeroconf、mDNS 或 DNS-SD 通告来实现。

影响和受影响的系统

由于 CUPS 在各种平台上的广泛使用,这些漏洞具有广泛的影响。运行 Linux 发行版的系统、某些 BSD 变体、Oracle Solaris 和 Google Chrome OS 都会受到影响。截至目前,没有适用于 Linux 系统的可用修复程序,因此立即缓解至关重要。

Margaritelli 针对 CVE-2024-47176 开发了概念验证 (PoC),可在 GitHub 公告中找到。另一个基于 OpenPrinting CUPS 存储库中提交的 PoC 也已在 GitHub 上发布。
截至 9 月 26 日,Shodan.io 显示有超过 75,000 台可访问 Internet 的主机正在运行 CUPS。FOFA 搜索引擎发现了超过 270,000 个唯一 IP 地址,其中近 70,000 个专门与 IPP 相关。这表示有大量可通过 Internet 访问的主机,其中大多数主机使用默认端口 631。

图片:Shodan.io

 

图片来源: FOFA

公告和所有错误均已发布:

  • https://github.com/OpenPrinting/cups-browsed/security/advisories/GHSA-rj88-6mr5-rcw8
  • https://github.com/OpenPrinting/libcupsfilters/security/advisories/GHSA-w63j-6g73-wmg5
  • https://github.com/OpenPrinting/libppd/security/advisories/GHSA-7xfx-47qg-grp6
  • https://github.com/OpenPrinting/cups-filters/security/advisories/GHSA-p9rh-jxmq-gq47

OpenPrinting 现在也已开始发布修复程序:

  • CVE-2024-47175:https://github.com/OpenPrinting/libppd/commit/d681747ebf
  • CVE-2024-47076:https://github.com/OpenPrinting/libcupsfilters/commit/95576ec3
  • CVE-2024-47176 的临时解决方法:https://github.com/OpenPrinting/cups-browsed/commit/1debe6b140c

缓解策略

鉴于这些漏洞的严重性,建议立即采取行动:

  • 禁用 cups-browsed:由于 cups-browsed 是漏洞利用链的核心,因此禁用它可以阻止潜在的攻击。
    $ sudo systemctl stop cups-浏览
  • 防止 cups-browsed 在重新启动时启动
    $ sudo systemctl disable cups-浏览
  • 阻止流向 UDP 端口 631 的流量:如果禁用 cups-browsed 不可行,则阻止所有流向 UDP 端口 631 的流量可以减少暴露。
    $ sudo iptables -A 输入 -p tcp –dport 631 -j DROP
    $ sudo iptables -A 输入 -p udp –dport 631 -j DROP
  • 更新 CUPS 组件:请留意补丁,并在修复程序发布后立即更新 CUPS 和相关组件。

检测

要检查您的系统是否易受攻击,请验证 cups-browsed 的状态:

$ sudo systemctl status cups-浏览
  • 如果结果包括 “Active: inactive (dead)”,则漏洞利用链已停止,系统不易受到攻击。
  • 如果服务处于 “running” 或 “enabled” 状态,并且 BrowseRemoteProtocols 指令在配置文件 /etc/cups/cups-browsed.conf 中包含值 “cups”,则系统容易受到攻击。

供应商响应

红帽

Red Hat 已确认这些漏洞,并将其严重性影响评为“重要”。虽然 Red Hat Enterprise Linux (RHEL) 的所有版本都受到影响,但默认配置并不容易受到攻击。Red Hat 建议管理员禁用 cups-browsed 作为缓解措施。他们正在与上游社区和研究人员合作开发补丁。

Palo Alto 网络

在最近的更新中,Palo Alto Networks 确认其所有产品均未受到这些漏洞的影响,这为他们的安全解决方案的用户提供了一些缓解。

规范

Canonical 的安全团队已针对所有支持的 Ubuntu LTS 版本发布了多个 CUPS 软件包的更新,包括 cups-browsed、cups-filters、libcupsfilters 和 libppd。强烈建议升级这些软件包并重新启动 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 重新启动 cups-browsed restart cups-browsed
本文翻译自securityonline 原文链接。如若转载请注明出处。
分享到:微信
+10赞
收藏
安全客
分享到:微信

发表评论

内容需知
合作单位
  • 安全客
  • 安全客
Copyright © 北京奇虎科技有限公司 三六零数字安全科技集团有限公司 安全客 All Rights Reserved 京ICP备08010314号-66