Cloudanix VulnDB

CVE-2024-47176

None

CVSS

—

EPSS

50.6%

Published

Sep 26, 2024

CISA due date

—

Cloudanix analysis

Next patch cycle SSVC: Attend

A vulnerable printing service can be tricked over the network into trusting a fake printer that may run attacker commands when used.

Weaponized Chainable
Exploitation
Remote Unauthenticated
Attacker needs
None
Complexity
Moderate
Impact
Remote Code Execution
Component
Network Service
Class
SSRF
Remediation
Upgrade
Effort
Medium
Patch risk
Low

What it actually does

CVE-2024-47176 is a network-exposed flaw in cups-browsed where the service binds to all interfaces on port 631 and accepts CUPS browse packets from untrusted sources. An attacker can send a crafted packet that causes the target to issue an IPP Get-Printer-Attributes request to an attacker-controlled URL, creating an SSRF-style callback and potentially registering attacker-controlled printer attributes. When chained with related CUPS vulnerabilities such as CVE-2024-47076, CVE-2024-47175, and CVE-2024-47177, the malicious printer metadata can lead to arbitrary command execution when a user or automated process prints to the attacker-supplied printer.

Why it matters to the business

Systems running vulnerable cups-browsed may be remotely manipulated over the network and, in common exploit chains, can be turned into command-execution targets without prior authentication. The immediate operational risk is highest for Linux or Unix-like endpoints and servers with printing services enabled, especially where UDP port 631 is reachable from untrusted networks. Because public weaponized exploitation exists and EPSS is high, organizations should treat exposed instances as urgent even though this CVE is not currently listed in CISA KEV and is not specifically marked as ransomware-associated.

How an attack unfolds

An attacker first identifies a host running cups-browsed with UDP port 631 reachable. They send a crafted CUPS browse announcement to the service, which is accepted because cups-browsed listens on INADDR_ANY and does not sufficiently restrict the packet source. The packet directs the victim to query an attacker-controlled IPP endpoint using Get-Printer-Attributes. The attacker's IPP server returns malicious printer attributes that can cause the victim to add or trust a rogue printer definition. In the full weaponized chain, the rogue printer data includes unsafe PPD or filter attributes that are later interpreted by CUPS components; once a user or process prints to that printer, the malicious command is executed in the printing context. Attackers may use this to establish a foothold, run shell commands, download payloads, or pivot further inside the network.

How to fix it

Upgrade affected components to fixed versions. For openprinting/cups-browsed, use a version containing commit 1debe6b140c37e0aa928559add4abcc95ce54aa2 or later. For github.com/ory/oathkeeper, use 0.38.12-beta.1 or later where applicable to dependency tracking. If immediate patching is not possible, disable and stop cups-browsed on systems that do not require printer auto-discovery, restrict UDP and TCP port 631 to trusted print-management networks only, block inbound UDP/631 from untrusted networks, and prevent outbound IPP/HTTP callbacks from print services to arbitrary external destinations. Remove untrusted or unexpected printers and inspect PPD files before re-enabling printing. Where supported, disable legacy remote printer discovery protocols and rely on explicitly configured trusted printers.

How to confirm the fix worked

Confirm installed CUPS and cups-browsed packages include the vendor fix or the upstream commit 1debe6b140c37e0aa928559add4abcc95ce54aa2. Verify cups-browsed is not listening on untrusted interfaces unless required by running checks such as ss -lunp and ss -ltnp for port 631. From an untrusted network segment, confirm UDP/631 and TCP/631 are blocked. Review /etc/cups/printers.conf and /etc/cups/ppd/ for unexpected printers or recently modified PPD files. Validate that print workflows still function after patching or disabling cups-browsed. For dependency inventories that include github.com/ory/oathkeeper, verify version 0.38.12-beta.1 or later is present where relevant.

Typical attack path

  1. Scan for hosts exposing CUPS or cups-browsed on UDP/TCP port 631.
  2. Send a crafted CUPS browse packet to the target cups-browsed service.
  3. Cause the target to initiate an IPP Get-Printer-Attributes request to an attacker-controlled URL.
  4. Return malicious printer attributes or PPD-related data from the attacker-controlled IPP service.
  5. Wait for the rogue printer to be used by a user, scheduled job, or automated print workflow.
  6. Trigger execution through the chained CUPS vulnerabilities and run attacker-controlled commands in the printing service context.
  7. Use the resulting access to stage malware, collect data, or pivot to additional systems.

How to detect it

Review host logs, CUPS logs, network telemetry, and EDR process data for signs of prior exploitation. Key sources include systemd journal entries for cups-browsed and cups, /var/log/cups/error_log, /var/log/cups/access_log, /var/log/cups/page_log, syslog, firewall logs, DNS logs, proxy logs, NetFlow, and EDR command/process lineage. Look for inbound UDP/631 packets from unusual sources, especially internet or non-print-server addresses, followed by outbound IPP or HTTP requests from the host to unfamiliar destinations. Search for unexpected printer creation or modification events, recently changed files under /etc/cups/ppd/, and printer definitions in /etc/cups/printers.conf that users or administrators did not configure. Inspect PPD files for suspicious directives such as FoomaticRIPCommandLine or shell metacharacters. In EDR, prioritize process trees where cupsd, cups-browsed, foomatic-rip, or CUPS filter processes spawn /bin/sh, bash, curl, wget, nc, Python, Perl, or other non-printing utilities. If suspicious activity is found, preserve CUPS configuration, PPD files, relevant logs, and packet captures before remediation.

  • UDP/631 inbound to cups-browsed from non-print-server sources
  • TCP/631 outbound from cups-browsed or cupsd to untrusted external hosts
  • Get-Printer-Attributes
  • FoomaticRIPCommandLine
  • /etc/cups/ppd/
  • /etc/cups/printers.conf
  • /var/log/cups/error_log
  • /var/log/cups/access_log
  • /var/log/cups/page_log
  • cups-browsed
  • cupsd
  • foomatic-rip
  • /usr/lib/cups/filter/foomatic-rip
  • /bin/sh spawned by cupsd
  • /bin/sh spawned by foomatic-rip
  • bash spawned by cupsd
  • bash spawned by foomatic-rip
  • curl spawned by cupsd
  • wget spawned by cupsd
  • nc spawned by cupsd
  • python spawned by cupsd
  • perl spawned by cupsd

What your security team should do

  • Immediately identify Linux and Unix-like assets running cups-browsed or exposing port 631, prioritizing internet-facing systems and workstations on untrusted networks.
  • Patch cups-browsed to a fixed build containing commit 1debe6b140c37e0aa928559add4abcc95ce54aa2 or the equivalent distribution vendor update.
  • Disable cups-browsed wherever automatic printer discovery is not business-critical.
  • Block inbound UDP/631 and restrict TCP/631 to trusted print servers and administrative networks.
  • Hunt for unexpected printer additions, suspicious PPD content, and CUPS filter processes spawning shells or network utilities.
  • Inspect egress logs for print services making unexpected HTTP or IPP requests to external hosts.
  • Remove rogue printers and rebuild CUPS configuration from trusted sources if compromise is suspected.
  • Add EDR/SIEM detections for foomatic-rip, cupsd, or cups-browsed spawning command shells, curl, wget, Python, Perl, or other payload-staging tools.

The record

CUPS is a standards-based, open-source printing system, and `cups-browsed` contains network printing functionality including, but not limited to, auto-discovering print services and shared printers. `cups-browsed` binds to `INADDR_ANY:631`, causing it to trust any packet from any source, and can cause the `Get-Printer-Attributes` IPP request to an attacker controlled URL. When combined with other vulnerabilities, such as CVE-2024-47076, CVE-2024-47175, and CVE-2024-47177, an attacker can execute arbitrary commands remotely on the target machine without authentication when a malicious printer is printed to.

Affected packages

Ecosystem Package Introduced Fixed
Alpine:v3.19 cups 0 2.4.9-r1
Alpine:v3.20 cups 0 2.4.9-r1
Alpine:v3.21 cups 0 2.4.10-r1
Alpine:v3.22 cups 0 2.4.10-r1
Debian:11 cups 0 No fix
Debian:11 cups-filters 0 1.28.7-1+deb11u3
Debian:11 cups-filters 0 No fix
Debian:11 libppd 0 No fix
Debian:12 cups 0 No fix
Debian:12 cups-filters 0 1.28.17-3+deb12u1
Debian:12 cups-filters 0 No fix
Debian:12 libppd 0 No fix
Debian:13 cups 0 No fix
Debian:13 cups-filters 0 1.28.17-5
Debian:13 cups-filters 0 No fix
Debian:13 libcupsfilters 0 2.0.0-3
Mageia:9 cups 0 2.4.6-1.3.mga9
Mageia:9 cups-filters 0 1.28.16-6.1.mga9
Red Hat:enterprise_linux:8::appstream cups-filters 0 0:1.20.0-35.el8_10
Red Hat:enterprise_linux:8::appstream cups-filters-debuginfo 0 0:1.20.0-35.el8_10
Red Hat:enterprise_linux:8::appstream cups-filters-debugsource 0 0:1.20.0-35.el8_10
Red Hat:enterprise_linux:8::appstream cups-filters-devel 0 0:1.20.0-35.el8_10
Red Hat:enterprise_linux:8::appstream cups-filters-libs 0 0:1.20.0-35.el8_10
Red Hat:enterprise_linux:8::appstream cups-filters-libs-debuginfo 0 0:1.20.0-35.el8_10
Red Hat:enterprise_linux:8::crb cups-filters 0 0:1.20.0-35.el8_10
Red Hat:enterprise_linux:8::crb cups-filters-debuginfo 0 0:1.20.0-35.el8_10
Red Hat:enterprise_linux:8::crb cups-filters-debugsource 0 0:1.20.0-35.el8_10
Red Hat:enterprise_linux:8::crb cups-filters-devel 0 0:1.20.0-35.el8_10
Red Hat:enterprise_linux:8::crb cups-filters-libs 0 0:1.20.0-35.el8_10
Red Hat:enterprise_linux:8::crb cups-filters-libs-debuginfo 0 0:1.20.0-35.el8_10
Red Hat:enterprise_linux:9::appstream cups-filters 0 0:1.28.7-17.el9_4
Red Hat:enterprise_linux:9::appstream cups-filters-debuginfo 0 0:1.28.7-17.el9_4
Red Hat:enterprise_linux:9::appstream cups-filters-debugsource 0 0:1.28.7-17.el9_4
Red Hat:enterprise_linux:9::appstream cups-filters-devel 0 0:1.28.7-17.el9_4
Red Hat:enterprise_linux:9::appstream cups-filters-libs 0 0:1.28.7-17.el9_4
Red Hat:enterprise_linux:9::appstream cups-filters-libs-debuginfo 0 0:1.28.7-17.el9_4
Red Hat:enterprise_linux:9::crb cups-filters 0 0:1.28.7-17.el9_4
Red Hat:enterprise_linux:9::crb cups-filters-debuginfo 0 0:1.28.7-17.el9_4
Red Hat:enterprise_linux:9::crb cups-filters-debugsource 0 0:1.28.7-17.el9_4
Red Hat:enterprise_linux:9::crb cups-filters-devel 0 0:1.28.7-17.el9_4
Red Hat:enterprise_linux:9::crb cups-filters-libs 0 0:1.28.7-17.el9_4
Red Hat:enterprise_linux:9::crb cups-filters-libs-debuginfo 0 0:1.28.7-17.el9_4
Red Hat:rhel_aus:7.7::server cups-filters 0 0:1.0.35-26.el7_7.3
Red Hat:rhel_aus:7.7::server cups-filters-debuginfo 0 0:1.0.35-26.el7_7.3
Red Hat:rhel_aus:7.7::server cups-filters-devel 0 0:1.0.35-26.el7_7.3
Red Hat:rhel_aus:7.7::server cups-filters-libs 0 0:1.0.35-26.el7_7.3
Red Hat:rhel_aus:8.2::appstream cups-filters 0 0:1.20.0-19.el8_2.2
Red Hat:rhel_aus:8.2::appstream cups-filters-debuginfo 0 0:1.20.0-19.el8_2.2
Red Hat:rhel_aus:8.2::appstream cups-filters-debugsource 0 0:1.20.0-19.el8_2.2
Red Hat:rhel_aus:8.2::appstream cups-filters-libs 0 0:1.20.0-19.el8_2.2
Red Hat:rhel_aus:8.2::appstream cups-filters-libs-debuginfo 0 0:1.20.0-19.el8_2.2
Red Hat:rhel_aus:8.4::appstream cups-filters 0 0:1.20.0-24.el8_4.2
Red Hat:rhel_aus:8.4::appstream cups-filters-debuginfo 0 0:1.20.0-24.el8_4.2
Red Hat:rhel_aus:8.4::appstream cups-filters-debugsource 0 0:1.20.0-24.el8_4.2
Red Hat:rhel_aus:8.4::appstream cups-filters-libs 0 0:1.20.0-24.el8_4.2
Red Hat:rhel_aus:8.4::appstream cups-filters-libs-debuginfo 0 0:1.20.0-24.el8_4.2
Red Hat:rhel_aus:8.6::appstream cups-filters 0 0:1.20.0-27.el8_6.3
Red Hat:rhel_aus:8.6::appstream cups-filters-debuginfo 0 0:1.20.0-27.el8_6.3
Red Hat:rhel_aus:8.6::appstream cups-filters-debugsource 0 0:1.20.0-27.el8_6.3
Red Hat:rhel_aus:8.6::appstream cups-filters-libs 0 0:1.20.0-27.el8_6.3
Red Hat:rhel_aus:8.6::appstream cups-filters-libs-debuginfo 0 0:1.20.0-27.el8_6.3
Red Hat:rhel_e4s:8.4::appstream cups-filters 0 0:1.20.0-24.el8_4.2
Red Hat:rhel_e4s:8.4::appstream cups-filters-debuginfo 0 0:1.20.0-24.el8_4.2
Red Hat:rhel_e4s:8.4::appstream cups-filters-debugsource 0 0:1.20.0-24.el8_4.2
Red Hat:rhel_e4s:8.4::appstream cups-filters-libs 0 0:1.20.0-24.el8_4.2
Red Hat:rhel_e4s:8.4::appstream cups-filters-libs-debuginfo 0 0:1.20.0-24.el8_4.2
Red Hat:rhel_e4s:8.6::appstream cups-filters 0 0:1.20.0-27.el8_6.3
Red Hat:rhel_e4s:8.6::appstream cups-filters-debuginfo 0 0:1.20.0-27.el8_6.3
Red Hat:rhel_e4s:8.6::appstream cups-filters-debugsource 0 0:1.20.0-27.el8_6.3
Red Hat:rhel_e4s:8.6::appstream cups-filters-libs 0 0:1.20.0-27.el8_6.3
Red Hat:rhel_e4s:8.6::appstream cups-filters-libs-debuginfo 0 0:1.20.0-27.el8_6.3
Red Hat:rhel_e4s:9.0::appstream cups-filters 0 0:1.28.7-10.el9_0.2
Red Hat:rhel_e4s:9.0::appstream cups-filters-debuginfo 0 0:1.28.7-10.el9_0.2
Red Hat:rhel_e4s:9.0::appstream cups-filters-debugsource 0 0:1.28.7-10.el9_0.2
Red Hat:rhel_e4s:9.0::appstream cups-filters-libs 0 0:1.28.7-10.el9_0.2
Red Hat:rhel_e4s:9.0::appstream cups-filters-libs-debuginfo 0 0:1.28.7-10.el9_0.2
Red Hat:rhel_els:7 cups-filters 0 0:1.0.35-29.el7_9.3
Red Hat:rhel_els:7 cups-filters-debuginfo 0 0:1.0.35-29.el7_9.3
Red Hat:rhel_els:7 cups-filters-devel 0 0:1.0.35-29.el7_9.3
Red Hat:rhel_els:7 cups-filters-libs 0 0:1.0.35-29.el7_9.3
Red Hat:rhel_eus:8.8::appstream cups-filters 0 0:1.20.0-29.el8_8.3
Red Hat:rhel_eus:8.8::appstream cups-filters-debuginfo 0 0:1.20.0-29.el8_8.3
Red Hat:rhel_eus:8.8::appstream cups-filters-debugsource 0 0:1.20.0-29.el8_8.3
Red Hat:rhel_eus:8.8::appstream cups-filters-devel 0 0:1.20.0-29.el8_8.3
Red Hat:rhel_eus:8.8::appstream cups-filters-libs 0 0:1.20.0-29.el8_8.3
Red Hat:rhel_eus:8.8::appstream cups-filters-libs-debuginfo 0 0:1.20.0-29.el8_8.3
Red Hat:rhel_eus:8.8::crb cups-filters 0 0:1.20.0-29.el8_8.3
Red Hat:rhel_eus:8.8::crb cups-filters-debuginfo 0 0:1.20.0-29.el8_8.3
Red Hat:rhel_eus:8.8::crb cups-filters-debugsource 0 0:1.20.0-29.el8_8.3
Red Hat:rhel_eus:8.8::crb cups-filters-devel 0 0:1.20.0-29.el8_8.3
Red Hat:rhel_eus:8.8::crb cups-filters-libs 0 0:1.20.0-29.el8_8.3
Red Hat:rhel_eus:8.8::crb cups-filters-libs-debuginfo 0 0:1.20.0-29.el8_8.3
Red Hat:rhel_eus:9.2::appstream cups-filters 0 0:1.28.7-11.el9_2.2
Red Hat:rhel_eus:9.2::appstream cups-filters-debuginfo 0 0:1.28.7-11.el9_2.2
Red Hat:rhel_eus:9.2::appstream cups-filters-debugsource 0 0:1.28.7-11.el9_2.2
Red Hat:rhel_eus:9.2::appstream cups-filters-devel 0 0:1.28.7-11.el9_2.2
Red Hat:rhel_eus:9.2::appstream cups-filters-libs 0 0:1.28.7-11.el9_2.2
Red Hat:rhel_eus:9.2::appstream cups-filters-libs-debuginfo 0 0:1.28.7-11.el9_2.2
Red Hat:rhel_eus:9.2::crb cups-filters 0 0:1.28.7-11.el9_2.2
Red Hat:rhel_eus:9.2::crb cups-filters-debuginfo 0 0:1.28.7-11.el9_2.2
Red Hat:rhel_eus:9.2::crb cups-filters-debugsource 0 0:1.28.7-11.el9_2.2
Red Hat:rhel_eus:9.2::crb cups-filters-devel 0 0:1.28.7-11.el9_2.2
Red Hat:rhel_eus:9.2::crb cups-filters-libs 0 0:1.28.7-11.el9_2.2
Red Hat:rhel_eus:9.2::crb cups-filters-libs-debuginfo 0 0:1.28.7-11.el9_2.2
Red Hat:rhel_tus:8.4::appstream cups-filters 0 0:1.20.0-24.el8_4.2
Red Hat:rhel_tus:8.4::appstream cups-filters-debuginfo 0 0:1.20.0-24.el8_4.2
Red Hat:rhel_tus:8.4::appstream cups-filters-debugsource 0 0:1.20.0-24.el8_4.2
Red Hat:rhel_tus:8.4::appstream cups-filters-libs 0 0:1.20.0-24.el8_4.2
Red Hat:rhel_tus:8.4::appstream cups-filters-libs-debuginfo 0 0:1.20.0-24.el8_4.2
Red Hat:rhel_tus:8.6::appstream cups-filters 0 0:1.20.0-27.el8_6.3
Red Hat:rhel_tus:8.6::appstream cups-filters-debuginfo 0 0:1.20.0-27.el8_6.3
Red Hat:rhel_tus:8.6::appstream cups-filters-debugsource 0 0:1.20.0-27.el8_6.3
Red Hat:rhel_tus:8.6::appstream cups-filters-libs 0 0:1.20.0-27.el8_6.3
Red Hat:rhel_tus:8.6::appstream cups-filters-libs-debuginfo 0 0:1.20.0-27.el8_6.3
Rocky Linux:8 cups-filters 0 0:1.20.0-35.el8_10
Rocky Linux:9 cups-filters 0 0:1.28.7-17.el9_4
SUSE:Enterprise Storage 7.1 cups-filters 0 1.25.0-150200.3.16.1
SUSE:Linux Enterprise High Performance Computing 15 SP2-LTSS cups-filters 0 1.25.0-150200.3.16.1
SUSE:Linux Enterprise High Performance Computing 15 SP3-LTSS cups-filters 0 1.25.0-150200.3.16.1
SUSE:Linux Enterprise High Performance Computing 15 SP4-ESPOS cups-filters 0 1.25.0-150200.3.16.1
SUSE:Linux Enterprise High Performance Computing 15 SP4-LTSS cups-filters 0 1.25.0-150200.3.16.1
SUSE:Linux Enterprise Module for Basesystem 15 SP5 cups-filters 0 1.25.0-150200.3.16.1
SUSE:Linux Enterprise Module for Basesystem 15 SP6 cups-filters 0 1.25.0-150200.3.16.1
SUSE:Linux Enterprise Server 12 SP5 cups-filters 0 1.0.58-19.26.1
SUSE:Linux Enterprise Server 12 SP5 cups-filters 0 1.0.58-19.29.1
SUSE:Linux Enterprise Server 12 SP5 poppler 0 0.43.0-16.49.1
SUSE:Linux Enterprise Server 12 SP5 poppler-qt 0 0.43.0-16.49.1
SUSE:Linux Enterprise Server 15 SP2-LTSS cups-filters 0 1.25.0-150200.3.16.1
SUSE:Linux Enterprise Server 15 SP3-LTSS cups-filters 0 1.25.0-150200.3.16.1
SUSE:Linux Enterprise Server 15 SP4-LTSS cups-filters 0 1.25.0-150200.3.16.1
SUSE:Linux Enterprise Server for SAP Applications 12 SP5 cups-filters 0 1.0.58-19.26.1
SUSE:Linux Enterprise Server for SAP Applications 12 SP5 cups-filters 0 1.0.58-19.29.1
SUSE:Linux Enterprise Server for SAP Applications 12 SP5 poppler 0 0.43.0-16.49.1
SUSE:Linux Enterprise Server for SAP Applications 12 SP5 poppler-qt 0 0.43.0-16.49.1
SUSE:Linux Enterprise Server for SAP Applications 15 SP2 cups-filters 0 1.25.0-150200.3.16.1
SUSE:Linux Enterprise Server for SAP Applications 15 SP3 cups-filters 0 1.25.0-150200.3.16.1
SUSE:Linux Enterprise Server for SAP Applications 15 SP4 cups-filters 0 1.25.0-150200.3.16.1
SUSE:Linux Enterprise Software Development Kit 12 SP5 poppler 0 0.43.0-16.49.1
SUSE:Linux Enterprise Software Development Kit 12 SP5 poppler-qt 0 0.43.0-16.49.1
SUSE:Manager Proxy 4.3 cups-filters 0 1.25.0-150200.3.16.1
SUSE:Manager Server 4.3 cups-filters 0 1.25.0-150200.3.16.1
Ubuntu:20.04:LTS cups-filters 0 1.27.4-1ubuntu0.3
Ubuntu:20.04:LTS cups-filters 0 1.27.4-1ubuntu0.4
Ubuntu:22.04:LTS cups-filters 0 1.28.15-0ubuntu1.3
Ubuntu:22.04:LTS cups-filters 0 1.28.15-0ubuntu1.4
Ubuntu:24.04:LTS cups-browsed 0 2.0.0-0ubuntu10.1
Ubuntu:24.04:LTS cups-browsed 0 2.0.0-0ubuntu10.2
Ubuntu:24.10 cups-browsed 0 2.0.1-0ubuntu2.1
Ubuntu:Pro:16.04:LTS cups-filters 0 1.8.3-2ubuntu3.5+esm2
Ubuntu:Pro:18.04:LTS cups-filters 0 1.20.2-0ubuntu3.3+esm1
openSUSE:Leap 15.5 cups-filters 0 1.25.0-150200.3.16.1
openSUSE:Leap 15.6 cups-filters 0 1.25.0-150200.3.16.1
openSUSE:Tumbleweed cups-filters 0 1.28.17-5.1

Related vulnerabilities