
PoC honeypot для обнаружения попыток эксплуатации уязвимости CVE-2024-47177
Данный проект реализует honeypot (ловушку) для перехвата попыток эксплуатации уязвимостей в CUPS (Common UNIX Printing System). В частности, он предназначен для отслеживания попыток эксплуатации, связанных с CVE-2024-47177. Эта уязвимость позволяет удалённо выполнять команды через параметр FoomaticRIPCommandLine в PPD-файлах. Если в этот параметр передать вредоносное значение, оно может быть выполнено как управляемая пользователем команда, что потенциально может привести к серьёзным нарушениям безопасности.
CUPS — это основанная на стандартах система печати с открытым исходным кодом, широко используемая в различных UNIX-подобных операционных системах. Пакет cups-filters предоставляет необходимые бэкенды, фильтры и утилиты для CUPS 2.x в системах, отличных от macOS. Критический недостаток, используемый в CVE-2024-47177, заключается в некорректной обработке FoomaticRIPCommandLine, что в сочетании с другими логическими ошибками, такими как описанные в CVE-2024-47176, позволяет выполнять произвольные команды на хост-системе.
Этот honeypot предназначен для регистрации попыток эксплуатации путём мониторинга входящих запросов на печать и проверки их на наличие подозрительных атрибутов, с особым вниманием к printer-privacy-policy-uri, который может содержать команды.
Этот проект вдохновлён первоначальным раскрытием от EvilSocket, в котором освещаются риски безопасности, связанные с CUPS, и даётся всесторонний обзор задействованных методов эксплуатации.
Для запуска этого honeypot убедитесь, что у вас установлены следующие зависимости:
cups и subprocess (входят в стандартную установку Python)Скачайте и запустите файл install.sh:
curl -sSL https://raw.githubusercontent.com/referefref/cupspot-2024-47177/refs/heads/main/install.sh | bash
Для запуска honeypot выполните следующую команду:
python3 cupspot.py <LOCAL_HOST> [TARGET_HOST]
#<LOCAL_HOST>: The local address where the honeypot will listen for incoming print requests.
#[TARGET_HOST]: (Optional) The IP address of a target host to which browsing packets will be sent.
#If omitted, the honeypot will run in passive mode.
Запустите honeypot и отправляйте пакеты на конкретный целевой хост:
python3 cupspot.py 127.0.0.1 192.168.1.100
Или запустите его в пассивном режиме:
python3 cupspot.py 127.0.0.1