
Эксплойт proof-of-concept для CVE-2026-34990 — локальное повышение привилегий в CUPS 2.4.16 через произвольную запись файлов с использованием CUPS_CREATE_LOCAL_PRINTER и перехваченного локального токена аутентификации.
Локальное повышение привилегий в CUPS 2.4.16 через произвольную запись файлов с помощью CUPS_CREATE_LOCAL_PRINTER.
CUPS позволяет создавать локальные принтеры с device-uri, указывающим на путь file://. Отправка задания на печать с document-format: application/vnd.cups-raw и compression: gzip заставляет cupsd распаковать данные задания и записать их напрямую по указанному пути — от имени пользователя, под которым работает cupsd (обычно root или высокопривилегированная сервисная учётная запись).
Локальный токен аутентификации, необходимый для административных операций, можно перехватить, направив cups-create-local-printer.test из ipptool на поддельный IPP-сервер на localhost. Когда CUPS подключается для аутентификации, он отправляет заголовок Authorization: Local <token>, который вы перехватываете до того, как CUPS сможет его проверить.
ipptool с cups-create-local-printer.test, указав на поддельный сервер — CUPS отправит свой локальный токен аутентификации401 WWW-Authenticate: Local trc="y" при первом подключении, чтобы чисто перехватить токенdevice-uri: file:///etc/sudoers.d/<user>-pwnsudo -n /bin/bashВызов create_local_printer держит свой сокет открытым во время гонки — это удерживает регистрацию принтера в состоянии выполнения, пока выполняются административные операции и задание на печать.
ipptool с cups-create-local-printer.test (стандартная установка CUPS)# writes /etc/sudoers.d/<your-username>-pwn by default
python3 exploit.py
# custom target
CUPS_TARGET=/etc/sudoers.d/youruser-pwn CUPS_ATTACKER=youruser python3 exploit.py
Отредактируйте SUDOERS_LINE в скрипте, указав своё фактическое имя пользователя — по умолчанию используется aporter.
Эксплойт пытается до 12 раз. Каждая попытка удаляет и заново создаёт принтер для сброса состояния.
Только для авторизованного тестирования безопасности и исследований.