Новый сканер находит серверы Linux, подверженные атакам CUPS RCE

Выпущен автоматизированный сканер, который поможет специалистам по безопасности проверить среду на наличие устройств, уязвимых к дефекту Common Unix Printing System (CUPS) RCE, отслеживаемому как CVE-2024-47176.

Уязвимость, позволяющая злоумышленникам выполнять произвольное удаленное выполнение кода при соблюдении определенных условий, был раскрыт в конце прошлого месяца Симоне Маргарителли.

Несмотря на то, что в реальных условиях его RCE-возможности выглядят ограниченными из-за необходимых условий для эксплуатации, Akamai позже показала, что CVE-2024-47176 также открывает возможность 600-кратного усиления распределенных атак типа «отказ в обслуживании» (DDoS).

Сканер был создан исследователем кибербезопасности Маркусом Хитчинсом (он же «MalwareTech»), который создал сканер, чтобы помочь системным администраторам просканировать свои сети и быстро выявить устройства, на которых запущены уязвимые сервисы.

«Уязвимость возникает из-за того, что СЕРВИС cups привязывает свой управляющий порт (UDP-порт 631) к INADDR_ANY, открывая его всему миру. Поскольку запросы не аутентифицируются, любой человек, способный добраться до управляющего порта, может дать cups указание выполнить обнаруженный принтер. В тех случаях, когда порт недоступен из Интернета (из-за брандмауэров или NAT), он все равно может быть доступен через локальную сеть, что позволяет повысить привилегии.»

«По этой причине я создал этот сканер, предназначенный для сканирования вашей локальной сети на предмет уязвимых экземпляров cups».
- Маркус Хитчинс

Как работает сканер

Python-скрипт (cups_scanner.py) устанавливает HTTP-сервер на сканирующей машине, который слушает входящие HTTP-запросы (callbacks) от устройств в сети.

CVE-2024-47176 возникает из-за того, что CUPS-browsed (демон, входящий в состав CUPS) привязывает свой порт управления (UDP-порт 631) к INADDR_ANY, открывая порт в сеть и позволяя любой системе отправлять на него команды.

Сканер отправляет пользовательский UDP-пакет на широковещательный адрес сети на порту 631, рассылаемый на каждый IP-адрес в указанном диапазоне, сообщая экземплярам CUPS, что нужно отправить запрос обратно.

Если устройство, на котором запущен уязвимый экземпляр cups, получает UDP-пакет, оно интерпретирует запрос и отправляет HTTP-обратный вызов на сервер, так что только те устройства, которые отвечают, помечаются как уязвимые.

Результаты записываются в два журнала: один (cups.log) содержит IP-адреса и версии CUPS устройств, которые ответили, а другой (requests.log) содержит необработанные HTTP-запросы, полученные сервером обратного вызова, которые могут быть использованы для более глубокого анализа.

Используя этот сканер, системные администраторы могут планировать и выполнять целевые действия по исправлению или изменению конфигурации, минимизируя воздействие CVE-2024-47176 в сети.