OpenPrinting CUPS — это система печати с открытым исходным кодом для Linux и других Unix-подобных операционных систем. В версиях 2.4.16 и более ранних уязвимость целочисленного переполнения в _ppdCreateFromIPP() (cups/ppd-cache.c) позволяет любому непривилегированному локальному пользователю аварийно завершить корневой процесс cupsd, указав отрицательный атрибут IPP, поддерживаемый паролем задания. Проверка границ ограничивает только верхнюю границу, поэтому отрицательное значение проходит проверку, преобразуется в size_t (обертывание до ~2^64) и используется в качестве аргумента длины для memset() в 33-байтовом буфере стека.
Это вызывает немедленный сигнал SIGSEGV в корневом процессе cupsd. В сочетании с параметром Restart=on-failure systemd злоумышленник может повторить сбой для устойчивого отказа в обслуживании.
Показать оригинальное описание (EN)
OpenPrinting CUPS is an open source printing system for Linux and other Unix-like operating systems. In versions 2.4.16 and prior, an integer underflow vulnerability in _ppdCreateFromIPP() (cups/ppd-cache.c) allows any unprivileged local user to crash the cupsd root process by supplying a negative job-password-supported IPP attribute. The bounds check only caps the upper bound, so a negative value passes validation, is cast to size_t (wrapping to ~2^64), and is used as the length argument to memset() on a 33-byte stack buffer. This causes an immediate SIGSEGV in the cupsd root process. Combined with systemd's Restart=on-failure, an attacker can repeat the crash for sustained denial of service.
Характеристики атаки
Последствия
Строка CVSS v3.1
Тип уязвимости (CWE)
Уязвимые продукты 1
| Конфигурация | От (включительно) | До (исключительно) |
|---|---|---|
|
Openprinting Cups
cpe:2.3:a:openprinting:cups:*:*:*:*:*:*:*:*
|
— |
<= 2.4.16
|