OpenPrinting CUPS is an open source printing system for Linux and other Unix-like operating systems. In versions 2.4.16 and prior, a use-after-free vulnerability exists in the CUPS scheduler (cupsd) when temporary printers are automatically deleted. cupsdDeleteTemporaryPrinters() in scheduler/printers.c calls cupsdDeletePrinter() without first expiring subscriptions that reference the printer, leaving cupsd_subscription_t.dest as a dangling pointer to freed heap memory. The dangling pointer is subsequently dereferenced at multiple code sites, causing a crash (denial of service) of the cupsd daemon. With heap grooming, this can be leveraged for code execution.
The product reuses or references memory after it has been freed. At some point afterward, the memory may be allocated again and saved in another pointer, while the original pointer references a location somewhere within the new allocation. Any operations using the original pointer are no longer valid because the memory “belongs” to the code that operates on the new pointer.
| Name | Vendor | Start Version | End Version |
|---|---|---|---|
| Cups | Openprinting | * | 2.4.16 (including) |
| Red Hat Hardened Images | RedHat | cups-main-2.4.17-1.hum1 | * |
| Cups | Ubuntu | devel | * |
| Cups | Ubuntu | esm-infra/xenial | * |
| Cups | Ubuntu | jammy | * |
| Cups | Ubuntu | noble | * |
| Cups | Ubuntu | questing | * |
| Cups | Ubuntu | resolute | * |
| Cups | Ubuntu | upstream | * |