CUPS(Common UNIX Printing System,通用Unix打印系统)是Unix/Linux系统中用于管理打印的重要工具,主要用于管理打印任务、打印请求和打印队列。
近日,监测到CUPS打印系统的多个组件中存在多个安全漏洞,构成远程代码执行链。当启用cups-browsed守护程序(默认监听UDP端口631,通常不启用)时,未经身份验证的远程攻击者可构造恶意请求利用这些漏洞在目标系统上执行任意代码,目前部分漏洞细节及PoC已公开,详情如下:
CVE-2024-47176:CUPS中cups-browsed包含网络打印功能,如自动发现打印服务和共享打印机等。cups-browsed <= 2.0.1绑定在 UDP INADDR_ANY:631 上,并信任来自任何来源的任何数据包,可能导致 `Get-Printer-Attributes` IPP 请求发送到攻击者控制的 URL。
CVE-2024-47076:Libcupsfilters <= 2.1b1中,cfGetPrinterAttributes5 函数无法验证或清理IPP服务器返回的IPP属性,可能导致攻击者控制的数据与CUPS系统的其余部分进行交互。
CVE-2024-47175:libppd<= 2.1b1中,函数 ppdCreatePPDFromIPP2 在将 IPP 属性写入临时PPD文件时不会验证或清理IPP属性,可能导致在生成的PPD中注入攻击者控制的数据。
CVE-2024-47177:cups-filters<=2.0.1 foomatic rip允许通过FoomaticRIPCommandLine PPD参数执行任意命令。
攻击者可以通过以下流程实现远程代码执行:
攻击者向目标系统的UDP端口631发送包含恶意URL的数据包。
CUPS系统的cups-browsed组件会连接到该URL,并请求恶意IPP服务器返回伪造的PPD文件。
该PPD文件包含恶意的FoomaticRIPCommandLine指令,这些指令被写入系统的临时PPD文件中。
当用户发送打印作业时,CUPS系统会调用foomatic-rip过滤器,并执行PPD文件中的恶意命令。
攻击者的命令在目标系统上被执行,完成远程代码执行。
建议受影响用户做好资产自查以及预防工作,以免遭受黑客攻击。
二、影响范围
pgAdmin 4 <= v8.11
受影响CUPS组件
CVE-2024-47176: cups-browsed ≤ 2.0.1
CVE-2024-47076: libcupsfilters ≤ 2.1b1
CVE-2024-47175: libppd ≤ 2.1b1
CVE-2024-47177: cups-filters ≤ 2.0.1
受影响系统
由于CUPS和cups-browsed适用于大多数UNIX系统,这些漏洞可能影响Arch Linux、Debian、Red Hat/Fedora、openSUSE、Slackware、Ubuntu等基于Unix且带有CUPS服务的系统。
三、修复建议
若非必要,建议禁用或删除cups-browsed服务。
在更新可用时及时更新系统上的 CUPS 包;如果系统无法及时更新,并且需要依赖cups-browsed服务,可通过阻止所有发送到UDP端口631的流量,或限制该端口仅可信地址访问。