博客

深度解析:应对 GNU-Linux 系统中的关键 CUPS 漏洞

October 7, 2024
Laura Verheyde

Linux 用户最近的日子并不好过,过去几年中,据报道有多个高危漏洞以各种方式影响着该系统。安全研究人员现在又发现了一组新的漏洞,它们都与针对 GNU/Linux 系统的通用 UNIX 打印系统 (CUPS) 功能有关,并可能为远程代码执行 (RCE) 提供途径。

2024 年 9 月 27 日,evilsocket.net 的 Simone Margaritelli 发布了关键信息,披露了 CUPS 中存在的多个可利用漏洞,随后其中四个漏洞被分配了 CVE 编号。这个数字可能会增加,但截至撰写本文时,安全社区仍在讨论这些发现的实际严重程度。虽然其中一个漏洞 CVE-2024-47177 目前被 MITRE 评为 9.1 级的严重漏洞,但要成功利用这一命令注入缺陷,前提是服务器必须启用了 CUPS 服务,并且还需要能够访问 UDP 631 端口或 DNS-SD。红帽 (RedHat) 指出,将 CUPS 重新映射到其他端口是可能的。

Margaritelli 对此次事件的全面剖析揭示了一个阴险且复杂的攻击链,尽管社区对此存在分歧,但绝不应忽视。它给我们上了一课:如果威胁行为者足够坚定,且糟糕的编码模式留下了微小的机会窗口,那么看似无害的依赖项也可能被深度利用。

CUPS 的情况与许多开发人员和应用安全专业人员之前遇到的情况有所不同,让我们一起来看看,并在过程中测试您的技能。

漏洞:通过 CUPS 实现远程代码执行 (RCE)

The Evilsocket blog provides an unmatched, thorough background to these exploits, and this is a resource we will continue to follow closely. Margaritelli also quotes an unnamed source in his article, who does not appear optimistic about the general security robustness of Linux:

‍

“从通用的安全角度来看,当今的整个 Linux 系统简直就是一个无穷无尽、毫无希望的安全漏洞集合,正等待着被利用。”

这是一个发人深省的提醒,说明开源环境中依然普遍存在固有的安全风险,更不用说全球开发社区对提高安全意识和掌握安全编码技能的迫切需求了。

让我们来看看这些 CVE:

‍该漏洞链影响范围广泛,目前影响以下软件包的所有当前版本及先前版本:

  • distrotech/cups-filters
  • OpenPrinting/cups-filters
  • Cups-browsed
  • libcupsfilters
  • libppd

CUPS 作为 UNIX 和 Linux 操作系统的传统组件已存在二十多年。它作为打印服务依赖项的功能使其倾向于执行网络请求,从而成为 RCE 类漏洞的主要目标。

然而,在这种情况下,攻击组合以实现成功结果的方式颇具“独创性”。这本质上是让未经身份验证、未被检测到的攻击者能够用恶意 URL 替换互联网打印协议 (IPP) URL,此外还可以修改指令,从而在 PPD(PostScript 打印机描述)文件中导致命令注入,该文件用于描述新添加打印机的功能。一旦打印作业被激活,这就会导致命令执行攻击,且依赖于 CUPS 组件中缺乏输入验证的问题。

此外,正如 Evilsocket 指出的那样,修复此特定漏洞是一把双刃剑。CUPS 包含 foomatic-rip 过滤器,这是一个历史上曾被视为高风险、可利用组件的可执行文件。与该组件相关的 CVE 可追溯到 2011 年,虽然已经确定 foomatic-rip 可被利用来执行操作系统命令,但修复它会导致稳定性问题并失去对许多旧打印机的支持。这是一个难以克服的复杂问题。

  1. 威胁行为者发起攻击
    1. CVE-2024-47176:cups-browsed <= 2.0.1 存在漏洞,因为它使用 INADDR_ANY 绑定到 UDP 631 端口,这意味着它信任来自任何来源的任何数据包。这允许未经身份验证的远程攻击者发送带有被篡改 IPP URL(指向攻击者控制的 IPP 服务器)的恶意 UDP 数据包,从而触发漏洞。受害者的机器现在认为它正在连接到一台新打印机,并发送请求询问打印机属性。
  2. 受害者系统处理打印机属性
    1. CVE-2024-47076:libcupsfilters <= 2.1b1 在 cfGetPrinterAttributes5 中存在漏洞,该函数无法正确验证或清理从 IPP 服务器返回的 IPP 属性。当 cups-browsed 处理该数据包时,它可能会被诱骗读取攻击者发送的恶意属性。
  3. 受害者系统连接到攻击者控制的 IPP 服务器
    1. CVE-2024-47175:libppd <= 2.1b1 中的 ppdCreatePPDFromIPP2 函数在将 IPP 属性保存到临时 PPD(PostScript 打印机描述)文件时,无法正确验证或清理这些属性。这允许攻击者将任意数据注入 PPD 文件,包括 FoomaticRIPCommandLine 指令,打印系统稍后可能会执行该指令。
  4. 受害者系统启动打印作业,攻击者的代码被执行
    CVE-2024-47177
    :cups-filters <= 2.0.1 存在漏洞,因为 foomatic-rip 过滤器通过 FoomaticRIPCommandLine 指令执行任意命令,允许攻击者以 cups-browsed 进程的身份运行命令。攻击者等待受害者机器启动打印作业。一旦发生这种情况,攻击者的恶意代码就会被执行(远程代码执行)。

您如何降低 RCE 风险?

对于在业务运营中使用 CUPS 的公司,必须遵循 Evilsocket 和 红帽 (RedHat) 推荐的补救建议。这包括但不限于将应用安全补丁作为紧急优先级。

关于命令注入的常规信息,请查看我们的 综合指南。

如果您想获取更多免费的编码指南,请查看 Secure Code Coach,它能助您掌握安全编码的最佳实践。

标语

在 AI 驱动的开发成果发布前实现有效治理

评估 AI 辅助风险,在提交代码时强制执行安全编码策略,并加速整个软件开发生命周期的安全交付。

预约演示
资源库

探索更多博客

获取有关安全编码、人工智能治理和软件风险管理的专家内容。

浏览全部
案例研究
筛选标签
这是 div 块中的一段文本。

Supercharged Security Awareness: How Tournaments are Inspiring Developers at Erste Group

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse varius enim in eros elementum tristique. Duis cursus, mi quis viverra ornare, eros dolor interdum nulla, ut commodo diam libero vitae erat. Aenean faucibus nibh et justo cursus id rutrum lorem imperdiet. Nunc ut sem vitae risus tristique posuere.

了解更多
案例研究
筛选标签
这是 div 块中的一段文本。

Security as culture: How Blue Prism cultivates world-class secure developers

Learn how Blue Prism, the global leader in intelligent automation for the enterprise, used Secure Code Warrior's agile learning platform to create a security-first culture with their developers, achieve their business goals, and ship secure code at speed

了解更多
案例研究
筛选标签
这是 div 块中的一段文本。

统一的安全文化:Sage 如何打造其安全倡导者项目

了解 Sage 如何通过灵活且以关系为导向的方法提升安全性,成功培养了 200 多名安全倡导者,并实现了显著的风险降低。

了解更多
博客
筛选标签
这是 div 块中的一段文本。

2026年网络安全意识月:理解人工智能安全对企业防御至关重要

目前,大多数顶级人工智能公司已公开呼吁全球放缓人工智能的发展速度,以便安全防护措施能够跟上步伐。然而事实是,严重的安全问题已经显现。随着人工智能实施带来的经济成本和风险不断累积,无数安全领导者和高管团队正处于紧迫的境地。

了解更多
博客
筛选标签
这是 div 块中的一段文本。

赋能要素 8:打造项目品牌

成功的安全编码项目不仅需要优质的内容。赋能要素 8 展示了如何通过品牌化将参与过程转变为一种令人向往、以地位为驱动的体验。

了解更多
博客
筛选标签
这是 div 块中的一段文本。

每一位员工现在都处于 AI 网络安全的最前线

企业技术格局正以一种鲜有人预料到的速度发生剧变,直到为时已晚。我们已正式跨越了从人工编写代码和基础辅助编程,进入“智能体开发生命周期”(ADLC)的时代。虽然自主 AI 智能体有望在多个职能领域实现前所未有的效率,但它们也带来了全新的安全和监管风险。

了解更多

在产品发布前确保 AI 驱动的开发安全

洞察开发风险,执行安全策略,并在整个软件开发生命周期中预防漏洞。

预约演示
未找到相关项目。