
Proof-of-concept di exploit per CVE-2026-34990, un'escalation di privilegi locale in CUPS 2.4.16 tramite scrittura arbitraria di file attraverso CUPS_CREATE_LOCAL_PRINTER e un token di autenticazione locale catturato.
Escalation locale di privilegi in CUPS 2.4.16 tramite scrittura arbitraria di file attraverso CUPS_CREATE_LOCAL_PRINTER.
CUPS consente di creare stampanti locali con un device-uri impostato su un percorso file://. L'invio di un lavoro di stampa con document-format: application/vnd.cups-raw e compression: gzip fa sì che cupsd decomprima i dati del lavoro e li scriva direttamente in quel percorso — con l'utente con cui viene eseguito cupsd (tipicamente root o un account di servizio altamente privilegiato).
Il token di autenticazione locale richiesto per le operazioni amministrative può essere catturato puntando cups-create-local-printer.test di ipptool verso un finto server IPP su localhost. Quando CUPS si connette per autenticarsi, invia l'header Authorization: Local <token>, che viene intercettato prima che CUPS possa verificarlo.
ipptool con cups-create-local-printer.test puntato al finto server — CUPS invia il suo token di autenticazione locale per autenticarsi401 WWW-Authenticate: Local trc="y" alla prima connessione per catturare il token in modo pulitodevice-uri: file:///etc/sudoers.d/<user>-pwnsudo -n /bin/bashLa chiamata create_local_printer mantiene il socket aperto durante la race — questo mantiene la registrazione della stampante in-flight mentre le operazioni amministrative e il lavoro di stampa vengono eseguiti.
ipptool installato con cups-create-local-printer.test (installazione standard di CUPS)# scrive /etc/sudoers.d/<your-username>-pwn per impostazione predefinita
python3 exploit.py
# destinazione personalizzata
CUPS_TARGET=/etc/sudoers.d/youruser-pwn CUPS_ATTACKER=youruser python3 exploit.py
Modificare SUDOERS_LINE nello script per usare il proprio nome utente effettivo — il valore predefinito è aporter.
L'exploit tenta fino a 12 volte. Ogni tentativo elimina e ricrea la stampante per ripristinare lo stato.
Solo per test di sicurezza autorizzati e ricerca.