在关于 CUPS 漏洞的最新章节中,一位安全研究人员和他的漏洞猎人团队发现了两个可以串联起来的漏洞,从而允许未经身份验证的攻击者远程执行代码并实现网络上的根文件覆盖。
CUPS,全称为通用Unix打印系统(Common Unix Printing System),是Linux和其他类Unix系统上提交文件进行打印的标准方式。它也是安全研究人员的热门目标,原因有二:一是让打印机执行恶意操作很有趣;二是作为苹果设备操作系统和大多数Linux发行版的默认打印系统,任何CUPS安全漏洞的影响范围都非常广。
Asim Viladi Oglu Manizada 和他的漏洞猎手团队最近在 CUPS 中发现了两个问题,CVE-2026-34980 和 CVE-2026-34990。这位 SpaceX 安全工程师表示,他受到了软件开发人员 Simone Margaritelli 在 2024 年的研究的启发,该研究将多个 CUPS 漏洞串联起来,以实现未经授权的远程代码执行 (RCE)。
这两个新漏洞影响 CUPS 2.4.16,虽然目前还没有开源打印系统的补丁版本,但已经有一些公开提交修复了这两个问题。
CVE-2026-34980要求 CUPS 服务器可通过网络访问,并公开一个共享的 PostScript 队列。这种配置允许网络上的其他计算机共享对打印机的访问权限,因此更常用于商业环境中。
正如马尼扎达在周日的分析中所说:“这是一种有意为之的配置选择——对于企业环境中的网络打印服务器来说很现实,但对于你的桌面电脑来说则不然(除非你出于某种原因将其设置为远程打印服务器)。”
但假设满足这些前提条件,未经身份验证的攻击者可以使用 CVE-2026-34980 将打印作业提交到共享的 PostScript 队列,并以 lp 身份实现远程代码执行。
然后,它可以与CVE-2026-34990 (一个在默认 CUPS 配置中生效的授权漏洞)结合使用,从而允许低权限帐户向该队列打印,以实现 root 文件覆盖。
Manizada告诉The Register,他没有确切的数字知道有多少打印机存在这些CVE漏洞,而且他本人至今也没有发现任何利用的迹象。“但考虑到维护者发布的安全公告中包含了PoC(概念验证),而且LLM(生命周期管理)现在可以快速将文档转换为PoC,我预计在受影响的部署中,这些漏洞很容易被利用,”他补充道。
工作原理
第一个漏洞 CVE-2026-34980 源于 CUPS 的默认策略,该策略接受匿名打印作业请求,并且仅在队列未共享时才阻止远程打印。“这使得我们能够在默认情况下无需任何身份验证层的情况下,针对共享队列上所有复杂的转义/解析逻辑发起攻击,”Manizada 写道。
CUPS 还会在换行符前加上反斜杠,然后在解析该选项字符串时去掉反斜杠,这意味着攻击者可以将代码嵌入到换行符中,即使经过选项转义和重新解析也不会丢失。
此外,CUPS将“PPD:”视为受信任的控制记录,这可以被滥用来修改队列配置,向 PPD 中注入恶意条目,然后发送第二个打印作业,诱使 CUPS 执行攻击者选择的现有二进制文件——例如,以 lp 身份运行的 Vim 文本编辑器。
正如 CUPS 的创建者和项目维护者 Michael Sweet 所解释的那样,使用 Vim 文本编辑器作为二进制文件:
服务器接受以 textWithoutLanguage 形式提供的页面边框值,通过选项转义和重新解析保留嵌入的换行符,然后将生成的第二行 PPD: 文本重新解析为受信任的调度程序控制记录。因此,后续的原始打印作业可以使服务器执行攻击者选择的现有二进制文件,例如 /usr/bin/vim,并将其作为 lp 命令执行。
第二个缺陷CVE-2026-34990可被本地非特权用户滥用,以欺骗 CUPS 调度程序守护程序 (cupsd) 使用可重用的 Authorization: Local ... 令牌向攻击者控制的本地主机 IPP 服务进行身份验证。
“因此,攻击者可以在[本地主机]上搭建一个假打印机,并触发 CUPS 来设置它,”马尼扎达说。
向该队列打印允许任意根文件覆盖,并且,当与之前的漏洞结合使用时,会导致未经身份验证、无特权的远程攻击者通过网络覆盖根文件。
- 那个足以致命的 Linux 漏洞:是 CUPS。它可能导致设备被远程劫持。
- 人工智能在发现漏洞方面已经做得非常出色,但在消灭漏洞方面却做得不够好。
- Linux内核负责人表示,人工智能漏洞报告一夜之间从垃圾变成了合法报告。
- 克劳德的攻击对信息安全界来说就像是“罗夏墨迹测验”,吓坏了前美国国家安全局局长。
马尼扎达认为,正如其他几位安全研究人员和高管所指出的那样,这一切背后的更深层含义是:人工智能在发现代码漏洞方面越来越出色。与此同时,人工维护人员却难以跟上漏洞修复的步伐。
“你可能无法仅凭一条‘找到一个远程代码执行漏洞,确保万无一失’的提示就发现整个攻击链,”Manizada 写道。“但如果让他们执行以下任务:a) 搜索任何远程代码执行漏洞;b) 任何漏洞 -> 一个有用的 root 原语,就能让代理大大缩小搜索范围,并且减少消耗的令牌数量。”