CVE-2015-1158
NoneCVSS
—
EPSS
29.7%
Published
Jun 26, 2015
CISA due date
—
Cloudanix analysis
A flaw in the software that manages printers lets attackers send specially crafted requests over the network to take control of the system.
- Exploitation
- Remote Unauthenticated
- Attacker needs
- None
- Complexity
- Low
- Impact
- Remote Code Execution
- Component
- Network Service
- Class
- Use After Free
- Remediation
- Upgrade
- Effort
- Medium
- Patch risk
- Low
What it actually does
The vulnerability is a use-after-free in cupsd's add_job function when processing multiple-value job-originating-host-name IPP attributes, allowing memory corruption that can lead to arbitrary code execution.
Why it matters to the business
Compromise of print servers can enable attackers to run malicious code, potentially disrupting printing services across an organization and providing a foothold for further network access.
How an attack unfolds
An attacker sends a crafted IPP_CREATE_JOB or IPP_PRINT_JOB request containing specially formed multiple-value job-originating-host-name attributes. This triggers incorrect free operations on reference-counted strings, resulting in memory corruption that the attacker leverages to overwrite configuration files and execute arbitrary code.
How to fix it
Upgrade CUPS to version 2.0.3 or later. If immediate upgrade is not possible, restrict network access to the CUPS service and disable remote IPP job submission where feasible.
How to confirm the fix worked
Verify the installed CUPS version is 2.0.3 or newer. Test that malformed IPP requests no longer cause crashes or configuration changes. Review cupsd logs for unexpected job-originating-host-name attribute handling.
Typical attack path
- Identify exposed CUPS servers listening on port 631
- Craft and send malicious IPP_CREATE_JOB or IPP_PRINT_JOB requests
- Trigger use-after-free to corrupt memory and reference-counted strings
- Overwrite cupsd configuration to achieve code execution
- Establish persistence or move laterally from the compromised print server
How to detect it
Examine cupsd access and error logs for unusual IPP job creation requests containing repeated job-originating-host-name attributes. Look for unexpected configuration file modifications or crashes in the scheduler process around the time of suspicious print jobs.
- IPP_CREATE_JOB with multiple job-originating-host-name values
- sudden cupsd configuration file changes
- scheduler/ipp.c crash or memory corruption indicators
What your security team should do
- Prioritize patching all CUPS instances to 2.0.3 or later
- Limit exposure of CUPS services to untrusted networks
- Monitor for exploit attempts using available public exploit code
- Audit print server configurations for unauthorized changes
The record
The add_job function in scheduler/ipp.c in cupsd in CUPS before 2.0.3 performs incorrect free operations for multiple-value job-originating-host-name attributes, which allows remote attackers to trigger data corruption for reference-counted strings via a crafted (1) IPP_CREATE_JOB or (2) IPP_PRINT_JOB request, as demonstrated by replacing the configuration file and consequently executing arbitrary code.
Affected packages
| Ecosystem | Package | Introduced | Fixed |
|---|---|---|---|
| Debian:11 | cups | 0 | 1.7.5-12 |
| Debian:12 | cups | 0 | 1.7.5-12 |
| Debian:13 | cups | 0 | 1.7.5-12 |
| Debian:6.0 | cups | 0 | 1.4.4-7+squeeze8 |
| Debian:7 | cups | 0 | 1.5.3-5+deb7u6 |
| Debian:8 | cups | 0 | 1.7.5-11+deb8u1 |
| Mageia:4 | cups | 0 | 1.7.0-7.5.mga4 |
| Red Hat:enterprise_linux:6::client | cups | 0 | 1:1.4.2-67.el6_6.1 |
| Red Hat:enterprise_linux:6::client | cups-debuginfo | 0 | 1:1.4.2-67.el6_6.1 |
| Red Hat:enterprise_linux:6::client | cups-devel | 0 | 1:1.4.2-67.el6_6.1 |
| Red Hat:enterprise_linux:6::client | cups-libs | 0 | 1:1.4.2-67.el6_6.1 |
| Red Hat:enterprise_linux:6::client | cups-lpd | 0 | 1:1.4.2-67.el6_6.1 |
| Red Hat:enterprise_linux:6::client | cups-php | 0 | 1:1.4.2-67.el6_6.1 |
| Red Hat:enterprise_linux:6::computenode | cups | 0 | 1:1.4.2-67.el6_6.1 |
| Red Hat:enterprise_linux:6::computenode | cups-debuginfo | 0 | 1:1.4.2-67.el6_6.1 |
| Red Hat:enterprise_linux:6::computenode | cups-devel | 0 | 1:1.4.2-67.el6_6.1 |
| Red Hat:enterprise_linux:6::computenode | cups-libs | 0 | 1:1.4.2-67.el6_6.1 |
| Red Hat:enterprise_linux:6::computenode | cups-lpd | 0 | 1:1.4.2-67.el6_6.1 |
| Red Hat:enterprise_linux:6::computenode | cups-php | 0 | 1:1.4.2-67.el6_6.1 |
| Red Hat:enterprise_linux:6::server | cups | 0 | 1:1.4.2-67.el6_6.1 |
| Red Hat:enterprise_linux:6::server | cups-debuginfo | 0 | 1:1.4.2-67.el6_6.1 |
| Red Hat:enterprise_linux:6::server | cups-devel | 0 | 1:1.4.2-67.el6_6.1 |
| Red Hat:enterprise_linux:6::server | cups-libs | 0 | 1:1.4.2-67.el6_6.1 |
| Red Hat:enterprise_linux:6::server | cups-lpd | 0 | 1:1.4.2-67.el6_6.1 |
| Red Hat:enterprise_linux:6::server | cups-php | 0 | 1:1.4.2-67.el6_6.1 |
| Red Hat:enterprise_linux:6::workstation | cups | 0 | 1:1.4.2-67.el6_6.1 |
| Red Hat:enterprise_linux:6::workstation | cups-debuginfo | 0 | 1:1.4.2-67.el6_6.1 |
| Red Hat:enterprise_linux:6::workstation | cups-devel | 0 | 1:1.4.2-67.el6_6.1 |
| Red Hat:enterprise_linux:6::workstation | cups-libs | 0 | 1:1.4.2-67.el6_6.1 |
| Red Hat:enterprise_linux:6::workstation | cups-lpd | 0 | 1:1.4.2-67.el6_6.1 |
| Red Hat:enterprise_linux:6::workstation | cups-php | 0 | 1:1.4.2-67.el6_6.1 |
| Red Hat:enterprise_linux:7::client | cups | 0 | 1:1.6.3-17.el7_1.1 |
| Red Hat:enterprise_linux:7::client | cups-client | 0 | 1:1.6.3-17.el7_1.1 |
| Red Hat:enterprise_linux:7::client | cups-debuginfo | 0 | 1:1.6.3-17.el7_1.1 |
| Red Hat:enterprise_linux:7::client | cups-devel | 0 | 1:1.6.3-17.el7_1.1 |
| Red Hat:enterprise_linux:7::client | cups-filesystem | 0 | 1:1.6.3-17.el7_1.1 |
| Red Hat:enterprise_linux:7::client | cups-ipptool | 0 | 1:1.6.3-17.el7_1.1 |
| Red Hat:enterprise_linux:7::client | cups-libs | 0 | 1:1.6.3-17.el7_1.1 |
| Red Hat:enterprise_linux:7::client | cups-lpd | 0 | 1:1.6.3-17.el7_1.1 |
| Red Hat:enterprise_linux:7::computenode | cups | 0 | 1:1.6.3-17.el7_1.1 |
| Red Hat:enterprise_linux:7::computenode | cups-client | 0 | 1:1.6.3-17.el7_1.1 |
| Red Hat:enterprise_linux:7::computenode | cups-debuginfo | 0 | 1:1.6.3-17.el7_1.1 |
| Red Hat:enterprise_linux:7::computenode | cups-devel | 0 | 1:1.6.3-17.el7_1.1 |
| Red Hat:enterprise_linux:7::computenode | cups-filesystem | 0 | 1:1.6.3-17.el7_1.1 |
| Red Hat:enterprise_linux:7::computenode | cups-ipptool | 0 | 1:1.6.3-17.el7_1.1 |
| Red Hat:enterprise_linux:7::computenode | cups-libs | 0 | 1:1.6.3-17.el7_1.1 |
| Red Hat:enterprise_linux:7::computenode | cups-lpd | 0 | 1:1.6.3-17.el7_1.1 |
| Red Hat:enterprise_linux:7::server | cups | 0 | 1:1.6.3-17.ael7b_1.1 |
| Red Hat:enterprise_linux:7::server | cups-client | 0 | 1:1.6.3-17.ael7b_1.1 |
| Red Hat:enterprise_linux:7::server | cups-debuginfo | 0 | 1:1.6.3-17.ael7b_1.1 |
| Red Hat:enterprise_linux:7::server | cups-devel | 0 | 1:1.6.3-17.ael7b_1.1 |
| Red Hat:enterprise_linux:7::server | cups-filesystem | 0 | 1:1.6.3-17.ael7b_1.1 |
| Red Hat:enterprise_linux:7::server | cups-ipptool | 0 | 1:1.6.3-17.ael7b_1.1 |
| Red Hat:enterprise_linux:7::server | cups-libs | 0 | 1:1.6.3-17.ael7b_1.1 |
| Red Hat:enterprise_linux:7::server | cups-lpd | 0 | 1:1.6.3-17.ael7b_1.1 |
| Red Hat:enterprise_linux:7::workstation | cups | 0 | 1:1.6.3-17.el7_1.1 |
| Red Hat:enterprise_linux:7::workstation | cups-client | 0 | 1:1.6.3-17.el7_1.1 |
| Red Hat:enterprise_linux:7::workstation | cups-debuginfo | 0 | 1:1.6.3-17.el7_1.1 |
| Red Hat:enterprise_linux:7::workstation | cups-devel | 0 | 1:1.6.3-17.el7_1.1 |
| Red Hat:enterprise_linux:7::workstation | cups-filesystem | 0 | 1:1.6.3-17.el7_1.1 |
| Red Hat:enterprise_linux:7::workstation | cups-ipptool | 0 | 1:1.6.3-17.el7_1.1 |
| Red Hat:enterprise_linux:7::workstation | cups-libs | 0 | 1:1.6.3-17.el7_1.1 |
| Red Hat:enterprise_linux:7::workstation | cups-lpd | 0 | 1:1.6.3-17.el7_1.1 |
| SUSE:Linux Enterprise Desktop 12 | cups | 0 | 1.7.5-9.1 |
| SUSE:Linux Enterprise Module for Legacy 12 | cups154 | 0 | 1.5.4-9.1 |
| SUSE:Linux Enterprise Server 12 | cups | 0 | 1.7.5-9.1 |
| SUSE:Linux Enterprise Server for SAP Applications 12 | cups | 0 | 1.7.5-9.1 |
| SUSE:Linux Enterprise Software Development Kit 12 | cups | 0 | 1.7.5-9.1 |
| Ubuntu:14.04:LTS | cups | 0 | 1.7.2-0ubuntu1.6 |
| openSUSE:Tumbleweed | cups | 0 | 2.1.3-2.3 |
Related vulnerabilities
- CVE-2024-47176 CUPS is a standards-based, open-source printing system, and `cups-browsed` contains… Also affects cups
- CVE-2024-47076 CUPS is a standards-based, open-source printing system, and `libcupsfilters` contains the… Also affects cups
- CVE-2024-47175 CUPS is a standards-based, open-source printing system, and `libppd` can be used for… Also affects cups
- CVE-2024-47177 CUPS is a standards-based, open-source printing system, and cups-filters provides… Also affects cups
- CVE-2023-32360 An authentication issue was addressed with improved state management. Also affects cups
- CVE-2019-2228 In array_find of array.c, there is a possible out-of-bounds read due to an incorrect… Also affects cups
- CVE-2015-3258 Heap-based buffer overflow in the WriteProlog function in filter/texttopdf.c in texttopdf… Also affects cups
- CVE-2014-9679 Integer underflow in the cupsRasterReadPixels function in filter/raster.c in CUPS before… Also affects cups